면접공부 ios 1-10

akay·2021년 12월 4일
0

취업준비

목록 보기
1/1

면접질문은 https://github.com/JeaSungLEE/iOSInterviewquestions 참고

1. Frame과 Bounds의 차이

Frame: SuperView의 좌표시스템 안에서 View의 위치와 크기를 나타낸다.
Bounds: 자신만의 좌표시스템 안에서 View의 위치와 크기를 나타낸다.

Frame

superView을 기준으로 좌표가 찍힌다.

Bounds

자신만의 좌표시스템이 있기 때문에 superView,subView가 각자의 0,0을 갖고있다.

-> Bound의 위치좌표를 바꾸면 해당위치에서 view를 다시 그린다.
-> 스크롤 뷰를 사용할 때에 Bounds x축을 양수값으로 바꾸면 스크롤 뷰가 이동하는게 아니라 그 안의 객체들이 움직이는 것처럼 보인다!

2. 실제 디바이스가 없는경우, 개발환경에서 할 수 있는 것과 없는것을 설명하시오.

시뮬레이터 사용시

  • 모션(가속도계,자이로 스코프) 지원 X
  • 카메라 오디오 입력지원 X
  • 근접센서 지원 X
  • 기압계 X
  • 주변 광 센서 X

API

  • apple 푸시알림 보내기, 받기 사용불가
  • 사진,연락처,캘린더 등 액세스를 위한 개인정보보험알림 X
  • Handoff의 기능 X
  • MessageUI 기능 X

etc

  • Mac, 모바일디바이스 간 성능차이로 정확한 성능테스트는 힘들다
  • 네트워크 속도테스트 불가
  • FaceId 인식처리 수준으로만 가능

3. 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가?

  1. 아카이브(NScoding)
    ????
  2. UserDefaults
  • Key-value 쌍으로 디바이스에 데이터를 저장하는 기능을 제공하는 인터페이스
  • 주로 앱의 설정값을 저장해놓고, 나중에 읽기위한 용도로 사용(자동로그인 등등)
  • 스위프트의 기본타입이면 별도의 작업이 필요없다. 아닐경우 NS아카이버?를 사용해야함
    단점: 1. 키가 문자열이라 런타임시에 오류가 발생할 수 있다.
    2. 앱 삭제시 설정값도 사라진다
    3. 암호화 X
  1. CoreData
  • 디바이스에서 데이터 유지 or 캐시하고 실행취소를 지원하는 프레임워크
  • 데이터베이스 기능d은 CoreData기능의 일부분 (SQLite,In-memory,binarystore)
    장점: 1. 온 디바이스 방식으로 오프라인에서도 사용이 가능하다
    2. DBMS의 종속성이 절감됨
    단점: 1. thread-safe 하지않는다
    2. 메모리 누수 가능성이 있다.
     

4.앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?

UIViewController

-> UIKit 앱의 뷰 계층구조를 관리하는 객체이다.

주요역할로는
1. 기본 데이터의 변경에 대한 응답으로 뷰 콘텐츠 업데이트
2. 뷰의 사용자 상호작용에 응답
3. 뷰 크기조정 및 전체 인터페이스의 레이아웃 관리
4. 앱에서 다른 뷰 컨트롤러를 포함한 다른 객체와 조정

5.App thining에 대해서 설명하시오

어플리케이션을 디바이스에 설치 시, 디바이스의 운영체제와 앱스토어가 특성에 맞게 설치되게하는 설치 최적화 기술을 의미한다.
1. 슬라이싱
- 앱이 지원하는 여러 디바이스에 대해 각 조각 애플리케이션 번들 생성, 해당 디바이스에 가장 적합한 조각을 전달하는 기술
2. 비트코드
- 기계언어로 번역되기 이전 단계의 코드로 업로드하면, 애플리케이션을 재컴파일하여 앱 바이너리를 생성. 요기서 최적화를 할 수 있다.
3. 주문형 리소스

  • 필요할때에만 다운로드를 받는다

6. 앱에서 foreground와 background의 차이를 설명하시오

foreground mode

  • 메모리 및 기타 시스템 리소스에 높은 우선순위를 가지며, 때때로 이러한 리소스들을 사용할 수 있도록 background 앱을 종료한다.
    Background mode
  • 가능한 적은 메모리 공간을 사용해야한다
    (시스템 리소스 해제, 메모리에서 해제후 데이터를 디스크에 작성)

not Running : 앱이 실행되지 않은 상태

Foreground : 앱이 실행되어 클라이언트에게 보여지는 상태

  • Inactive : 앱이 실행중이지만 아무런 이벤트를 안받는 상태
    (Foreground 상태에서 전화받기,잠금상태,멀티태스킹 스크린 상태일 때)
  • active : 앱 실행중이며 현재 이벤트를 받고 있는 상태
    Background : 앱이 백그라운드에 있지만 여전히 실행되고 있는 코드가 있는 상태

Suspened : 앱이 백그라운드에 있고 실행되는 코드가 없는 상태
(앱은 여전히 메모리에 존재, suspend 상태가 될때의 정보를 저장, cpu 배터리 소모하지않는다)

7. Scene Delegate를 설명하시오

UI의 상태변화를 메소드들을 통해 application에게 알리는 역할
기존 appdelegate 메소드들과 1:1 맵핑이 거의 가능하다.
window의 개념이 scene 개념으로 대체되었다.
앱에서는 2개이상의 scene이 존재 할 수 있으며 이제 Scene은 앱의 사용자 인터페이스 및 콘텐츠 배경으로 사용한다.

8. Ios 앱을 만들고 UserInterface를 구성하는데에 필수적인 프레임워크는?

UIKit

  • 인터페이스와 이벤트처리가 주 목적인 프레임워크이다.

9. FoundationKit 이란?

  • Cocoa Touch framework에 포함되어있는 프레임워크 중 하나

  • String, Int 등 원시데이터타입, 컬렉션타입, 운영체제 서비스를 이용해 앱의 기본적인 기능을 관리하는 프레임워크

    ** Cocoa Touch framework란?

  • ios 개발환경, 애플리케이션의 다양한 기능구현에 필요한 여러 개발도구를 포함하는 최상위 레벨 프래임워크

    ** Framework란?

  • API와 비슷한 개념으로 어떤 기능에 관련된 함수들을 모아놓은 것

10. 앱이 In-Active 상태가 되는 시나리오를 설명하시오

In-active는 앱이 실행중이지만 이벤트를 받지 않는 상태이다.
보통 이 상태에 잠시 머물렀다가 다른 상태로 변경된다.

  1. App Switcher로 전환될때
  2. 다른 앱의 알림(전화,문자,타이머 등등) 으로 이벤트를 수신하지 못하는 경우 일때

앱의 실행 : Not-Running -> InActive -> Active
백그라운드로 이동: Active -> InActive -> Background(-Suspended)
포그라운드로 이동: Background -> InActive -> Active

profile
iOS Developer

0개의 댓글