iOSInterviewquestions
iOS๊ฐ๋ฐ์๋ค์๊ฒ ํ์ํ ์๋ฃ๋ค์ ์ ๋ฆฌํ๊ณ ์๋ ์ค์ ๋๋ค.
๋ฉด์ ๋ ๋ฐ์ ์ง๋ฌธ์ด๋ ๊ณต๋ถํ๋ด์ฉ๋ค
์์ ํด์ผํ ๋ด์ฉ์ด๋ ์ถ๊ฐํด์ผํ ๋ด์ฉ์ ์ธ์ ๋ ์ง PR๋ ๋ ค์ฃผ์ธ์!
๋ต์ด ์ ํ์์ง ์์ ์ด์ ๋ ํด๋น ๋ด์ฉ์ ์๊ธฐ์์ผ๋ก ์ธ์ฐ๊ธฐ ๋ณด๋ค ์ฐพ์๋ณด๊ณ ๊ณต๋ถํ๋ฉด์ ์ต๋ ํ์๋๊ฒ ์ข๊ธฐ๋๋ฌธ์
๋๋ค.
ํด๋น๋ด์ฉ์ ์ฐพ์๋ณด๋ฉด์ ๊ด๋ จ๋ ๋ด์ฉ๋ค ๊น์ง ๊ฐ์ด ๊ณต๋ถํ์๋ฉด์ ํด๋น ๋ด์ฉ์ ๋ณธ์ธ์ ๊ฒ์ผ๋ก ์ป์ผ์๊ธฐ ๋ฐ๋๋๋ค.
๋ชจ๋์ ํ์ ๋ชจ์๋ด ์๋ค ๐ฏโโ๏ธ๐ฏโโ๏ธ ๊ฐ์ฌํฉ๋๋ค:)
Required
์๋ ๋ด์ฉ๋ค์ ์ต๋ํ ๋ง์ด ๊ณต๋ถํด๋๋๊ฒ์ด ์ข์ต๋๋ค ๐
- ๋ฉด์ ์๊ธฐ๊ฐ wwdc์ดํ (7์~11์)์ด๋ผ๋ฉด ํด๋น๋ ๋ wwdc์ธ์ ๋ค์ ๋ด ๋์๋ฉด ๋งค์ฐ๋งค์ฐ๋งค์ฐ ์ข์ต๋๋ค.
iOS
- Bounds ์ Frame ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- ์ค์ ๋๋ฐ์ด์ค๊ฐ ์์ ๊ฒฝ์ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ ์ ์๋ ๊ฒ๊ณผ ์๋ ๊ฒ์ ์ค๋ช ํ์์ค.
- ์ฑ์ ์ฝํ ์ธ ๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ ์ฅ/๋ณด๊ดํ๋ ํน๋ณํ ๊ฐ์ฒด๋ฅผ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ?
- ์ฑ ํ๋ฉด์ ์ฝํ ์ธ ๋ฅผ ํ์ํ๋ ๋ก์ง๊ณผ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๊ฐ์ฒด๋ฅผ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ?
- App thinning์ ๋ํด์ ์ค๋ช ํ์์ค.
- ์ฑ์ด ์์ํ ๋ main.c ์ ์๋ UIApplicationMain ํจ์์ ์ํด์ ์์ฑ๋๋ ๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
- @Main์ ๋ํด์ ์ค๋ช ํ์์ค.
- ์ฑ์ด foreground์ ์์ ๋์ background์ ์์ ๋ ์ด๋ค ์ ์ฝ์ฌํญ์ด ์๋์?
- ์ํ ๋ณํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฑ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ฉ์๋๋ค์ ์ค๋ช ํ์์ค.
- ์ฑ์ด In-Active ์ํ๊ฐ ๋๋ ์๋๋ฆฌ์ค๋ฅผ ์ค๋ช ํ์์ค.
- scene delegate์ ๋ํด ์ค๋ช ํ์์ค.
- UIApplication ๊ฐ์ฒด์ ์ปจํธ๋กค๋ฌ ์ญํ ์ ์ด๋์ ๊ตฌํํด์ผ ํ๋๊ฐ?
- App์ Not running, Inactive, Active, Background, Suspended์ ๋ํด ์ค๋ช ํ์์ค.
- NSOperationQueue ์ GCD Queue ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- GCD API ๋์ ๋ฐฉ์๊ณผ ํ์์ฑ์ ๋ํด ์ค๋ช ํ์์ค.
- Global DispatchQueue ์ Qos ์๋ ์ด๋ค ์ข ๋ฅ๊ฐ ์๋์ง, ๊ฐ๊ฐ ์ด๋ค ์๋ฏธ์ธ์ง ์ค๋ช ํ์์ค.
- iOS ์ฑ์ ๋ง๋ค๊ณ , User Interface๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํ์์ ์ธ ํ๋ ์์ํฌ ์ด๋ฆ์ ๋ฌด์์ธ๊ฐ?
- Foundation Kit์ ๋ฌด์์ด๊ณ ํฌํจ๋์ด ์๋ ํด๋์ค๋ค์ ์ด๋ค ๊ฒ์ด ์๋์ง ์ค๋ช ํ์์ค.
- Delegate๋ ๋ฌด์ธ์ธ๊ฐ ์ค๋ช ํ๊ณ , retain ๋๋์ง ์๋๋์ง ๊ทธ ์ด์ ๋ฅผ ํจ๊ป ์ค๋ช ํ์์ค.
- NotificationCenter ๋์ ๋ฐฉ์๊ณผ ํ์ฉ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- UIKit ํด๋์ค๋ค์ ๋ค๋ฃฐ ๋ ๊ผญ ์ฒ๋ฆฌํด์ผํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๋ ๋ ์ด๋ฆ์ ๋ฌด์์ธ๊ฐ?
- App Bundle์ ๊ตฌ์กฐ์ ์ญํ ์ ๋ํด ์ค๋ช ํ์์ค.
- ๋ชจ๋ View Controller ๊ฐ์ฒด์ ์์ ํด๋์ค๋ ๋ฌด์์ด๊ณ ๊ทธ ์ญํ ์ ๋ฌด์์ธ๊ฐ?
- ์์ ๋ง์ Custom View๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์ง ์ค๋ช ํ์์ค.
- View ๊ฐ์ฒด์ ๋ํด ์ค๋ช ํ์์ค.
- UIView ์์ Layer ๊ฐ์ฒด๋ ๋ฌด์์ด๊ณ ์ด๋ค ์ญํ ์ ๋ด๋นํ๋์ง ์ค๋ช ํ์์ค.
- UIWindow ๊ฐ์ฒด์ ์ญํ ์ ๋ฌด์์ธ๊ฐ?
- UINavigationController ์ ์ญํ ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- TableView๋ฅผ ๋์ ๋ฐฉ์๊ณผ ํ๋ฉด์ Cell์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ต์ํ ๊ตฌํํด์ผ ํ๋ DataSource ๋ฉ์๋๋ฅผ ์ค๋ช ํ์์ค.
- ํ๋์ View Controller ์ฝ๋์์ ์ฌ๋ฌ TableView Controller ์ญํ ์ ํด์ผ ํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ ๊ตฌํํด์ผ ํ๋์ง ์ค๋ช ํ์์ค.
- setNeedsLayout์ setNeedsDisplay์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ์์ค.
- NSCache์ ๋์ ๋๋ฆฌ๋ก ์บ์๋ฅผ ๊ตฌ์ฑํ์๋์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
- URLSession์ ๋ํด์ ์ค๋ช ํ์์ค.
- prepareForReuse์ ๋ํด์ ์ค๋ช ํ์์ค.
- ๋คํฌ๋ชจ๋๋ฅผ ์ง์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ์์ค.
- ViewController์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ค๋ช ํ์์ค.
- TableView์ CollectionView์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
Autolayout
- ์คํ ๋ ์ด์์์ ์ฝ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ? (3๊ฐ์ง)
- hugging, resistance์ ๋ํด์ ์ค๋ช ํ์์ค.
- Intrinsic Size์ ๋ํด์ ์ค๋ช ํ์์ค.
- ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ด์ฉํ์๋์ ์ฅ๋จ์ ์ ์ค๋ช ํ์์ค.
- Safearea์ ๋ํด์ ์ค๋ช ํ์์ค.
- Left Constraint ์ Leading Constraint ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
Swift
- struct์ class์ enum์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
- class์ ์ฑ๋ฅ์ ํฅ์ ์ํฌ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋์ดํด๋ณด์์ค.
- Convinience init์ ๋ํด ์ค๋ช ํ์์ค.
- AnyObject์ ๋ํด ์ค๋ช ํ์์ค.
- Optional ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Struct ๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ค๋ช ํ์์ค.
- Subscripts์ ๋ํด ์ค๋ช ํ์์ค.
- instance ๋ฉ์๋์ class ๋ฉ์๋์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- Delegate ํจํด์ ํ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช ํ์์ค.
- Singleton ํจํด์ ํ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช ํ์์ค.
- KVO ๋์ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Delegates์ Notification ๋ฐฉ์์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํ์์ค.
- ๋ฉํฐ ์ฐ๋ ๋๋ก ๋์ํ๋ ์ฑ์ ์์ฑํ๊ณ ์ถ์ ๋ ๊ณ ๋ คํ ์ ์๋ ๋ฐฉ์๋ค์ ์ค๋ช ํ์์ค.
- MVC ๊ตฌ์กฐ์ ๋ํด ๋ธ๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ , ๊ฐ ์ญํ ๊ณผ ํ๋ฆ์ ์ค๋ช ํ์์ค.
- ํ๋กํ ์ฝ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Hashable์ด ๋ฌด์์ด๊ณ , Equatable์ ์ ์์ํด์ผ ํ๋์ง ์ค๋ช ํ์์ค.
- mutating ํค์๋์ ๋ํด ์ค๋ช ํ์์ค.
- ํ์ถ ํด๋ก์ ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- Extension์ ๋ํด ์ค๋ช ํ์์ค.
- ์ ๊ทผ ์ ์ด์์ ์ข ๋ฅ์ ์ด๋ค๊ฒ ์๋์ง ์ค๋ช ํ์์ค
- defer๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- defer๊ฐ ํธ์ถ๋๋ ์์๋ ์ด๋ป๊ฒ ๋๊ณ , defer๊ฐ ํธ์ถ๋์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ์ค๋ช ํ์์ค.
- property wrapper์ ๋ํด์ ์ค๋ช ํ์์ค.
- Generic์ ๋ํด ์ค๋ช ํ์์ค.
- Resultํ์ ์ ๋ํด ์ค๋ช ํ์์ค.
- Codable์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
ARC
- ARC๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Retain Count ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Strong ๊ณผ Weak ์ฐธ์กฐ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- ์ํ ์ฐธ์กฐ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- ๊ฐํ ์ํ ์ฐธ์กฐ (Strong Reference Cycle) ๋ ์ด๋ค ๊ฒฝ์ฐ์ ๋ฐ์ํ๋์ง ์ค๋ช ํ์์ค.
Functional Programming
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- ๊ณ ์ฐจ ํจ์๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Swift Standard Library์ map, filter, reduce, compactMap, flatMap์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
Architecture
- MVVM, Ribs, VIP ๋ฑ ์์ ์ด ์๊ณ ์๋ ์ํคํ ์ณ๋ฅผ ์ค๋ช ํ์์ค.
- ์์กด์ฑ ์ฃผ์ ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
Optional
์๋๋ถํฐ๋ ์ถ๊ฐ๋ก ๊ณต๋ถ๋ฅผ ํ๋ฉด ์ข์ ๋ด์ฉ๋ค์ ๋๋ค.
Objective-c๋ rx๋ ํ์ฌ, ํ๋ง๋ค ์ฌ์ฉํ๋๊ณณ์ด ์ฐจ์ด๊ฐ์๊ณ ์ ์ ์ด๋ ์ฃผ๋์ด๊ธฐ์ค์ผ๋ก ํ์๋ผ๊ณ ์ฌ๊ฒจ์ง์ง์๊ธฐ์ ์ต์ ๋์ ์ถ๊ฐํ์์ต๋๋ค.
SwiftUI
Combine
- PassthroughSubject์ ๋ํด์ ์ค๋ช ํ์์ค
- @Published์ ๋ํด์ ์ค๋ช ํ์์ค
- AnyCancellable์ ๋ํด์ ์ค๋ช ํ์์ค
- sink์ ๋ํด์ ์ค๋ช ํ์์ค
Rx
- Reactive Programming์ด ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- RxSwift์์ Hot Observable๊ณผ Cold Observable์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
- Subject์ drive์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
MRC
- ARC ๋์ Manual Reference Count ๋ฐฉ์์ผ๋ก ๊ตฌํํ ๋ ๊ผญ ์ฌ์ฉํด์ผ ํ๋ ๋ฉ์๋๋ค์ ์ฐ๊ณ ์ญํ ์ ์ค๋ช ํ์์ค.
- retain ๊ณผ assign ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- ํน์ ๊ฐ์ฒด๋ฅผ autorelease ํ๊ธฐ ์ํด ํ์ํ ์ฌํญ๊ณผ ๊ณผ์ ์ ์ค๋ช ํ์์ค.
- Autorelease Pool์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ๋ ๊ฐ์ง ์ด์ ์๋ก ๋ค์ด ์ค๋ช ํ์์ค.
- ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์ด๋ค ์ผ์ด ๋ฐ์ํ ๊น ์ถ์ธกํด์ ์ค๋ช ํ์์ค. Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
Advanced
- method swizzling์ด ๋ฌด์์ด๊ณ , ์ด๋จ ๋ ์ฌ์ฉํ๋์ง ์ค๋ช ํ์์ค.
- NSCoder ํด๋์ค๋ ์ด๋ค ์ํฉ์์ ์ด๋ป๊ฒ ์จ์ผ ํ๋์ง ์ค๋ช ํ์์ค.
- Responder Chain ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํ๊ณ , First Responder ์ญํ ์ ๋ํด ์ค๋ช ํ์์ค.
- NSObject๋ถํฐ UIButton ๊น์ง ์์ ๊ณผ์ ์ ๊ณ์ธต๊ณผ ์ญํ ์ ์ค๋ช ํ์์ค.
- shallow copy์ deep copy์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- Push Notification ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Foundation ๊ณผ Core Foundation ํ๋ ์์ํฌ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- NSURLConnection ์์ ์ฌ์ฉํ๋ Delegate ๋ฉ์๋๋ค์ ๋ํด ์ค๋ช ํ์์ค.
- Synchronous ๋ฐฉ์๊ณผ Asynchronous ๋ฐฉ์์ผ๋ก URL Connection์ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ์ ์ฅ๋จ์ ์ ๋น๊ตํ์์ค.
- Plist ํ์ผ ๊ตฌ์กฐ์ Plist ํ์ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ ํฉํ ํด๋์ค๋ฅผ ์ค๋ช ํ์์ค.
- Core Data์ Sqlite ๊ฐ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- JSON ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ ํ์, ๊ฐ์ฒด ๋ณํ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- ์น ์๋ฒ์ HTTP ์ฐ๊ฒฐ์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ฑฐ๋ ๋ฐ์ผ๋ ค๋ฉด ์ฌ์ฉํด์ผ ํ๋ ํด๋์ค์ ๋์์ ์ค๋ช ํ์์ค.
- Protocol์์๋ ์ var๋ง ๋๋์ง ์ค๋ช ํ์์.
Objective-C
- Swift์ ํด๋ก์ ์ Objective-C์ ๋ธ๋ก์ ์ด๋ค ์ฐจ์ด๊ฐ ์๋๊ฐ?
- Mutable ๊ฐ์ฒด๊ณผ Immutable ๊ฐ์ฒด๋ ์ด๋ค๊ฒ์ด ์๋์ง ์๋ฅผ ๋ค๊ณ , ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- dynamic๊ณผ property ์๋ฏธ์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
- @property๋ก ์ ์ธํ NSString* title ์ getter/setter ๋ฉ์๋๋ฅผ ๊ตฌํํด๋ณด์์ค.
- @property์์ atomic๊ณผ nonatomic ์ฐจ์ด์ ์ ์ค๋ช ํ๊ณ , ์ด๋ค๊ฒ์ด ์์ ํ์ง, ์ด๋๊ฒ์ด ๊ธฐ๋ณธ์ธ์ง ์ค๋ช ํ์์ค.
- @property๋ก ์ ์ธํ๋ค๋ ๊ฒ์ ์๋ฏธ๋ฅผ ์ค๋ช ํ๊ณ , .h์ ๋ฃ์ ๊ฒฝ์ฐ์ .m์ ๋ฃ์ ๊ฒฝ์ฐ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- -performSelector:withObject:afterDelay: ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ์ธ์๊ฐ์ ๊ฐ์ฒด๋ retain๋๋๊ฐ? ๊ทธ ์ด์ ๋ฅผ ํจ๊ป ์ค๋ช ํ์์ค.
- Objective-C ์์ ์บก์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค์ ์ค๋ช ํ์์ค.
- Fast Enumeration ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- unnamed category ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Category ํ์ฅ๊ณผ Subclass ํ์ฅ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- Category ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Objective-C ์์ Protocol ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Objective-C++ ๋ฐฉ์์ด ๋ฌด์์ธ์ง ์ค๋ช ํ๊ณ , ์ด๋ค ๊ฒฝ์ฐ ์ฌ์ฉํด์ผ ํ๋์ง ์ค๋ช ํ์์ค.