- Bounds 와 Frame 의 차이점을 설명하시오.
- 실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오.
- 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가?
- 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?
- App thinning에 대해서 설명하시오.
- 앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체는 무엇인가?
- @Main에 대해서 설명하시오.
- 상태 변화에 따라 다른 동작을 처리하기 위한 앱델리게이트 메서드들을 설명하시오.
- 앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요?
- 앱이 In-Active 상태가 되는 시나리오를 설명하시오.
- SceneDelegate에 대해 설명하시오.
- UIApplication 객체의 컨트롤러 역할은 어디에 구현해야 하는가?
- App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오.
- iOS 앱을 만들고, User Interface를 구성하는 데 필수적인 프레임워크 이름은 무엇인가?
- Foundation Kit은 무엇이고 포함되어 있는 클래스들은 어떤 것이 있는지 설명하시오.
- Delegate란 무엇인지 설명하고, retain 되는지 안되는지 그 이유를 함께 설명하시오.
- NotificationCenter 동작 방식과 활용 방안에 대해 설명하시오.
- UIKit 클래스들을 다룰 때 꼭 처리해야하는 애플리케이션 쓰레드 이름은 무엇인가?
- App Bundle의 구조와 역할에 대해 설명하시오.
- 모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가?
- 자신만의 Custom View를 만들려면 어떻게 해야하는지 설명하시오.
- View 객체에 대해 설명하시오. 그리고 UI 작업을 Main Thread에서만 해야 하는지 설명하시오.
- UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.
- iOS에서 뷰(View)와 레이어(Layer)의 개념과 차이점에 대해 설명해보세요.
- UIWindow 객체의 역할은 무엇인가?
- UINavigationController 의 역할이 무엇인지 설명하시오.
- TableView를 동작 방식과 화면에 Cell을 출력하기 위해 최소한 구현해야 하는 DataSource 메서드를 설명하시오.
- 하나의 View Controller 코드에서 여러 TableView Controller 역할을 해야 할 경우 어떻게 구분해서 구현해야 하는지 설명하시오.
- setNeedsLayout와 setNeedsDisplay의 차이에 대해 설명하시오.
- StackView의 장점과 단점에 대해서 설명하시오.
- NSCache와 딕셔너리로 캐시를 구성했을 때의 차이를 설명하시오.
- URLSession에 대해서 설명하시오.
- prepareForReuse에 대해서 설명하시오.
- 다크모드를 지원하는 방법에 대해 설명하시오.
- ViewController의 생명주기를 설명하시오.
- TableView와 CollectionView의 차이점을 설명하시오.
- Dynamic Library와 Static Library의 차이점에 대해 설명해보세요.
- 오토레이아웃을 코드로 작성하는 방법은 무엇인가?
- hugging, resistance에 대해서 설명하시오.
- Intrinsic Size에 대해서 설명하시오.
- 스토리보드를 이용했을때의 장단점을 설명하시오.
- SafeArea에 대해서 설명하시오.
- Left Constraint 와 Leading Constraint 의 차이점을 설명하시오.
- Auto Layout과 Frame-based Layout의 차이점은 무엇인가요?
- 성능 향상을 위해 어떤 디버깅 도구를 사용할 수 있나요? 각각의 디버깅 도구는 어떤 상황에서 사용하는 것이 좋나요?
- struct와 class와 enum의 차이를 설명하시오.
- class의 성능을 향상시킬 수 있는 방법들을 나열해 보시오.
- Copy On Write는 어떤 방식으로 동작하는지 설명하시오.
- Convenience init에 대해 설명하시오.
- AnyObject에 대해 설명하시오.
- Optional 이란 무엇인지 설명하시오.
- Struct 가 무엇이고 어떻게 사용하는지 설명하시오.
- Subscripts에 대해 설명하시오.
- String은 왜 subscript로 접근이 안되는지 설명하시오.
- instance 메서드와 class 메서드의 차이점을 설명하시오. 그리고 class 메서드와 static 메서드의 차이점을 설명하시오.
- Delegate 패턴을 활용하는 경우를 예를 들어 설명하시오.
- Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.
- KVO 동작 방식에 대해 설명하시오.
- Delegate와 Notification 방식의 차이점에 대해 설명하시오.
- 멀티 쓰레드로 동작하는 앱을 작성하고 싶을 때 고려할 수 있는 방식들을 설명하시오.
- MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.
- 프로토콜이란 무엇인지 설명하시오.
- Protocol Oriented Programming과 Object Oriented Programming의 차이점을 설명하시오.
- Hashable이 무엇이고, Equatable을 왜 상속해야 하는지 설명하시오. 그리고 Hash 값이란 무엇인지 설명하시오.
- mutating 키워드에 대해 설명하시오.
- 탈출 클로저에 대하여 설명하시오.
- Extension에 대해 설명하시오.
- Extension 내부에서 함수를 override할 수 있는지 설명하시오.
- 접근 제어자의 종류엔 어떤게 있는지 설명하시오.
- defer란 무엇인지 설명하시오. 그리고 defer가 호출되는 순서는 어떻게 되고, defer가 호출되지 않는 경우를 설명하시오.
- property wrapper에 대해서 설명하시오.
- Generic에 대해 설명하시오.
- some 키워드에 대해 설명하시오.
- Result 타입에 대해 설명하시오.
- Codable에 대하여 설명하시오.
- Closure에 대하여 설명하시오.
- Optional Chaining과 nil-coalescing operator(??)의 차이점과 사용 시 주의사항은 무엇인가요?
- Swift에서 Async/Await 기능이 도입되기 전에, 비동기(Asynchronous) 작업을 처리하는 방법에는 어떤 것들이 있나요?
- 타입 변환(Type Casting)과 다형성(Polymorphism)에 대해 설명해보세요.
- Swift에서 타입 안전성(type safety)은 어떤 방식으로 보장되나요?
- ARC란 무엇인지 설명하시오.
- Retain Count 방식에 대해 설명하시오.
- Strong 과 Weak 참조 방식에 대해 설명하시오.
- 순환 참조에 대하여 설명하시오. 그리고 강한 순환 참조 (Strong Reference Cycle) 는 어떤 경우에 발생하는지 설명하시오.
- 순수함수란 무엇인지 설명하시오.
- 함수형 프로그래밍이 무엇인지 설명하시오.
- 고차 함수가 무엇인지 설명하시오.
- Swift Standard Library의 map, filter, reduce, compactMap, flatMap에 대하여 설명하시오.
- Either type이란?
- NSOperationQueue와 GCD Queue의 차이점을 설명하시오.
- GCD API 동작 방식과 필요성에 대해 설명하시오.
- Global DispatchQueue의 Qos 에는 어떤 종류가 있는지, 각각 어떤 의미인지 설명하시오.
- Push Notification 방식에 대해 설명하시오.
- Foundation과 Core Foundation 프레임워크의 차이점을 설명하시오.
- Core Data와 Sqlite 같은 데이터베이스의 차이점을 설명하시오.
- Protocol에서는 왜 var만 되는지 설명하시요.
- DispatchQueue.main.sync를 사용하는 상황을 설명하시오.
- Run Loops에 대해 설명하시오.
- Swift의 옵셔널 체이닝(Optional Chaining)은 어떤 상황에서 사용하는 것이 가장 효과적인가요?
- Swift에서의 메모리 관리 방법(ARC)에 대해 설명하고, 순환 참조(Circular Reference)를 방지하기 위한 전략은 무엇인가요?
- Swift의 프로토콜 지향 프로그래밍(Protocol-Oriented Programming)의 장점은 무엇이며, 이를 클래스 기반 프로그래밍과 비교했을 때 어떤 차이점이 있나요?
- Swift의 제네릭(Generic)을 사용하는 이점과 구현 시 고려해야 할 사항은 무엇인가요?
- Swift의 함수형 프로그래밍 요소(예: map, filter, reduce)를 사용하는 경우, 어떤 장점이 있으며, 언제 사용하는 것이 적절한가요?
- Swift에서의 오류 처리(Error Handling) 방법과 모범 사례에 대해 설명해 주세요.
- Swift의 클로저(Closure) 사용 시 성능적인 측면을 고려해야 하는 경우는 어떤 것들이 있나요?
- Swift의 패턴 매칭(Pattern Matching) 기능을 효과적으로 사용하는 방법은 무엇인가요?
- Swift의 효율적인 컬렉션 사용 방법에 대해 설명해 주세요. 배열(Array), 딕셔너리(Dictionary), 세트(Set) 사용 시 성능에 영향을 미치는 요소는 무엇인가요?
- Swift의 모듈화 및 패키지 관리를 위한 전략은 무엇이며, 이를 통해 얻을 수 있는 이점은 무엇인가요?
- Swift의 접근 제어(Access Control)를 활용한 안전한 코드 작성 방법은 무엇인가요?
- Swift의 확장(Extension) 사용 시 모범 사례는 무엇이며, 확장을 사용할 때의 주의점은 무엇인가요?
- Swift에서의 런타임 최적화 방법은 무엇이며, 성능 분석을 위한 도구 사용 방법은 어떻게 되나요?
- Swift의 리터럴과 연산자 오버로딩을 통해 얻을 수 있는 이점과 주의사항은 무엇인가요?
- Swift에서의 Type Inference(타입 추론)의 작동 원리와 효율적 사용을 위한 전략은 무엇인가요?
- Swift의 Associated Types(연관 타입)에 대해 설명하고, 프로토콜에서 이를 사용하는 방법과 장점은 무엇인가요?
- Swift의 키-값 관찰(Key-Value Observing, KVO)과 프로퍼티 옵저버(Property Observer)의 차이점과 각각의 사용 시나리오는 무엇인가요?
- Swift의 델리게이트 패턴(Delegate Pattern)을 사용하여 컴포넌트 간 통신을 구현하는 방법은 무엇인가요?
- Swift의 리플렉션(Reflection)과 메타 타입(MetaType)을 사용하는 경우와 주의사항은 무엇인가요?
- Swift의 커스텀 서브스크립트(Custom Subscript) 구현 방법과 사용 시의 이점은 무엇인가요?
- Swift에서의 비동기 이미지 로딩과 캐싱을 위한 전략은 무엇인가요?
- Swift의 커스텀 연산자(Custom Operator)를 정의하고 사용하는 방법은 무엇인가요?