[TIL] 면접 정리

Eden·2025년 8월 13일

1. MVC, MVVM 차이

Q: MVC와 MVVM의 차이점은 무엇인가요?
A:

  • MVC: Model-View-Controller로, View와 Model이 Controller를 통해 간접적으로 연결됩니다. 그러나 iOS의 UIKit 구조상 Controller가 비대해지는 경향이 있습니다.
  • MVVM: Model-View-ViewModel로, View와 ViewModel이 Data Binding을 통해 연결됩니다. 비즈니스 로직이 ViewModel에 분리되어 테스트 용이성과 유지보수성이 높아집니다.

2. ARC(Automatic Reference Counting)

Q: ARC는 어떻게 동작하나요?
A:
ARC는 객체의 참조 카운트를 기반으로 메모리를 관리합니다. 참조 카운트가 0이 되면 해당 객체의 메모리가 해제됩니다. 강한 참조(Strong Reference)가 순환 구조를 만들 경우 메모리 누수가 발생할 수 있어 weak 또는 unowned 키워드로 해결합니다.


3. Strong, Weak, Unowned 차이

Q: Strong, Weak, Unowned의 차이는?
A:

  • Strong: 참조 카운트를 증가시키며, 기본 참조 방식.
  • Weak: 참조 카운트를 증가시키지 않으며, 객체가 해제되면 자동으로 nil이 됩니다. Optional로 선언해야 합니다.
  • Unowned: 참조 카운트를 증가시키지 않으며, 객체가 해제되면 접근 시 크래시가 발생합니다. nil이 될 수 없는 참조에 사용합니다.

4. 동기(Synchronous)와 비동기(Asynchronous)

Q: 동기와 비동기의 차이는?
A:

  • 동기: 작업이 순차적으로 실행되며, 이전 작업이 끝나야 다음 작업이 시작됩니다.
  • 비동기: 작업이 독립적으로 실행되며, 이전 작업의 완료 여부와 상관없이 다음 작업이 시작될 수 있습니다.

5. GCD와 OperationQueue 차이

Q: GCD와 OperationQueue의 차이는?
A:

  • GCD: 경량의 API로, 간단한 비동기 처리와 큐 관리에 적합합니다.
  • OperationQueue: GCD를 기반으로 구현되었으며, 의존성 설정, 취소, 우선순위 관리 등 고급 기능을 제공합니다.

6. Delegate와 Notification 차이

Q: Delegate와 Notification의 차이점은?
A:

  • Delegate: 1:1 통신 방식, 특정 이벤트를 한 객체에 전달할 때 사용.
  • Notification: 1:N 통신 방식, 여러 객체에 이벤트를 브로드캐스트할 때 사용.

7. URLSession과 Alamofire 차이

Q: URLSession과 Alamofire의 차이는?
A:

  • URLSession: 네트워크 통신을 위한 Apple 기본 API, 직접 설정과 데이터 파싱을 구현해야 합니다.
  • Alamofire: URLSession을 래핑한 라이브러리로, 요청/응답 처리와 JSON 파싱, 에러 핸들링을 쉽게 구현할 수 있습니다.

8. Diffable Data Source

Q: Diffable Data Source의 장점은?
A:
데이터 변경 시 전체 리로드 없이 변경된 셀만 업데이트하며, 스냅샷 기반으로 안전하고 간결한 데이터 업데이트가 가능합니다.


9. CoreData와 UserDefaults 차이

Q: CoreData와 UserDefaults 차이는?
A:

  • CoreData: 대규모, 구조화된 데이터를 저장하고 관계형 데이터 모델을 지원합니다.
  • UserDefaults: 소규모, 단순 키-값 형태의 데이터를 저장할 때 사용합니다.

10. 옵셔널(Optionals)

Q: Swift에서 옵셔널이란?
A:
값이 있을 수도 있고 없을 수도 있는 변수를 표현하는 타입입니다. 안전한 nil 처리와 런타임 크래시 방지를 위해 사용합니다. if let, guard let을 통한 안전한 바인딩을 권장합니다.

profile
iOS Dev

0개의 댓글