1. SwiftUI와 UIKit의 차이점은 무엇인가요?
답변: SwiftUI는 애플의 최신 선언적 UI 프레임워크로, 코드의 간결함과 상태 기반의 UI 업데이트를 강조합니다. SwiftUI는 간결한 문법을 통해 UI를 빠르게 작성하고, 미리보기 기능을 통해 실시간으로 UI 변화를 확인할 수 있습니다. 반면 UIKit은 전통적인 객체 지향 방식의 UI 프레임워크로, iOS 2.0부터 사용되었습니다. UIKit은 더 성숙하고 다양한 기능을 제공하지만, SwiftUI는 새로운 프로젝트나 Apple 플랫폼 전반에 걸친 일관된 경험을 제공하는 데 유리합니다.
연관 질문: SwiftUI에서의 데이터 바인딩과 상태 관리는 어떻게 이루어지나요?
2. Combine 프레임워크는 무엇이며, 어떻게 사용되나요?
답변: Combine은 애플이 제공하는 반응형 프로그래밍 프레임워크로, 비동기 이벤트 처리 및 데이터 스트림을 쉽게 관리할 수 있도록 도와줍니다. Combine은 Publisher와 Subscriber를 통해 데이터 흐름을 관리하며, 이를 통해 복잡한 비동기 작업도 간결하게 처리할 수 있습니다. 특히 SwiftUI와 함께 사용하면 데이터 변경 시 UI를 자동으로 업데이트할 수 있어 편리합니다.
연관 질문: Combine의 Publisher와 Subscriber의 역할에 대해 설명해주세요.
3. iOS의 앱 생명주기(App Lifecycle)에 대해 설명해보세요.
답변: iOS 앱 생명주기는 앱이 실행되고 종료되는 일련의 상태 변화를 나타냅니다. 주요 상태로는 Not Running, Inactive, Active, Background, Suspended가 있습니다. 각 상태에서는 특정한 작업을 수행할 수 있으며, 이러한 생명주기 이벤트에 따라 앱의 상태를 관리해야 합니다. 최신 iOS에서는 SceneDelegate를 통해 멀티윈도우 앱의 생명주기를 관리할 수 있습니다.
연관 질문: SceneDelegate와 AppDelegate의 차이점에 대해 설명해보세요.
4. Core Data와 Realm의 차이점은 무엇인가요?
답변: Core Data는 애플의 객체 그래프 관리 및 지속성 프레임워크로, 강력한 기능을 제공하지만 설정과 사용법이 복잡할 수 있습니다. Realm은 빠르고 간단한 설정으로 객체 기반 데이터베이스를 제공하며, 다양한 플랫폼에서 사용할 수 있는 장점이 있습니다. Core Data는 애플 생태계에 깊이 통합되어 있고, Realm은 더 직관적이고 사용하기 쉬운 API를 제공합니다.
연관 질문: Core Data에서의 데이터 모델링 방법에 대해 설명해보세요.
5. iOS에서 메모리 관리(Memory Management)는 어떻게 이루어지나요?
답변: iOS에서 메모리 관리는 자동 참조 카운팅(ARC) 방식으로 이루어집니다. ARC는 객체의 참조 횟수를 추적하여 더 이상 참조되지 않는 객체를 자동으로 해제합니다. 개발자는 strong, weak, unowned와 같은 참조 타입을 적절히 사용하여 메모리 누수를 방지해야 합니다. 특히 클로저 내의 순환 참조(Circular Reference)에 주의해야 합니다.
연관 질문: 강한 참조와 약한 참조의 차이점에 대해 설명해보세요.
6. iOS에서 MVVM 패턴을 사용하는 이유는 무엇인가요?
답변: MVVM(Model-View-ViewModel) 패턴은 UI 코드의 복잡성을 줄이고, 코드의 재사용성과 테스트 가능성을 높이기 위해 사용됩니다. ViewModel은 View와 Model 간의 중개 역할을 하며, 데이터와 비즈니스 로직을 관리합니다. 이를 통해 View는 UI 렌더링에만 집중할 수 있고, 테스트 가능성이 높은 ViewModel을 통해 비즈니스 로직을 독립적으로 테스트할 수 있습니다.
연관 질문: MVVM 패턴에서 ViewModel이 가진 주요 책임은 무엇인가요?
7. iOS에서 사용되는 비동기 프로그래밍 방식에 대해 설명해보세요.
답변: iOS에서는 GCD(Grand Central Dispatch), OperationQueue, 그리고 최근의 async/await 문법을 사용하여 비동기 프로그래밍을 처리합니다. GCD는 낮은 수준에서 스레드를 관리하고, OperationQueue는 더 높은 수준에서 비동기 작업을 관리합니다. Swift 5.5 이후 도입된 async/await는 비동기 코드를 동기 코드처럼 작성할 수 있게 하여 가독성과 유지보수성을 높입니다.
연관 질문: async/await와 기존의 콜백 기반 비동기 처리 방식의 차이점에 대해 설명해보세요.
8. Swift의 프로토콜 지향 프로그래밍(Protocol-Oriented Programming)이란 무엇인가요?
답변: 프로토콜 지향 프로그래밍은 Swift에서 프로토콜을 사용하여 공통된 기능을 정의하고, 이를 확장하여 코드의 재사용성을 높이는 방법론입니다. 이 패러다임은 상속의 한계를 극복하고, 보다 유연하고 확장 가능한 코드를 작성할 수 있게 합니다. Swift에서는 기본 구현을 가진 프로토콜 확장을 통해 다양한 기능을 쉽게 공유할 수 있습니다.
연관 질문: 프로토콜 확장(Protocol Extension)의 장점에 대해 설명해주세요.
9. iOS에서 앱 성능 최적화 방법에 대해 설명해보세요.
답변: iOS 앱의 성능을 최적화하려면 메모리 관리, UI 스레드에서의 작업 최소화, 네트워크 요청 최적화, 이미지 및 리소스 압축 등이 중요합니다. 특히 Instruments 도구를 사용해 메모리 사용량, CPU 사용량, 레이아웃 렌더링 시간 등을 분석하고 최적화할 수 있습니다. 성능 문제는 사용자 경험에 직접 영향을 미치므로, 지속적인 모니터링과 최적화가 필요합니다.
연관 질문: Instruments 도구를 사용하여 앱의 성능 문제를 분석하는 방법에 대해 설명해주세요.
10. Swift의 최신 기능이나 개선사항 중 하나를 설명해보세요.
답변: Swift 5.7에서 도입된 'Any' 타입의 개선은 애플리케이션의 제네릭 코드를 더 명확하고 안전하게 만드는 데 기여합니다. 예를 들어, 'Some' 키워드를 사용하면 함수나 메서드에서 특정 프로토콜을 준수하는 타입을 반환할 수 있습니다. 이러한 기능들은 코드를 더 명확하고 간결하게 유지하며, 안전성을 높이는 데 도움을 줍니다.
연관 질문: Swift 5.5에서 도입된 async/await 기능에 대해 설명해주세요.

'iOS' 카테고리의 다른 글
| iOS 메모리 관련 대표적인 면접 질문 3가지 (0) | 2024.08.31 |
|---|---|
| iOS 앱 개발자로서 기술 트렌드를 어떻게 따라가는가? (0) | 2024.08.15 |