https://github.com/JeaSungLEE/iOSInterviewquestions
GitHub - JeaSungLEE/iOSInterviewquestions: ๐จ๐ป๐ป๐ฉ๐ป๐ปiOS ๋ฉด์ ์ ๋์ฌ ์ง๋ฌธ๋ค ์ด ์ ๋ฆฌ
๐จ๐ป๐ป๐ฉ๐ป๐ปiOS ๋ฉด์ ์ ๋์ฌ ์ง๋ฌธ๋ค ์ด ์ ๋ฆฌ . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.
github.com
iOS ๊ฐ๋ฐ ๊ด๋ จ ์ง์์ ๋ํด ์ฐพ์๋ณด๋ค๊ฐ ๋ฐ๊ฒฌํ ๊ธ์ด๋ค. ์ง๋ฌด ๊ด๋ จ ๋ฉด์ ์ผ๋ก ๋์ฌ ์ ์๋ ์์ ์ง๋ฌธ๋ค์ด๋ค. ๋ต๋ง ์ฐพ์์ ์ธ์๋ ๋๊ฒ ์ง๋ง, ๊ทธ๋ ๊ฒ ์ป์ ์ง์์ ๋ ์ฝ๊ฒ ์ํ๋ฒ๋ฆฌ๊ธฐ์ ๊ธ์ด์ด์ ์๋๋๋ก ์ง์ ๊ด๋ จ ๋ต์ ์ฐพ์๋ณด๊ณ ์ฒ์ฒํ ๊ทธ์ ๋ํ ๋ต์ ๋ด๋ ค๋ณด๋ ค๊ณ ํ๋ค.
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์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ์์ค.
- stackView์ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ํด์ ์ค๋ช ํ์์ค.
- NSCache์ ๋์ ๋๋ฆฌ๋ก ์บ์๋ฅผ ๊ตฌ์ฑํ์๋์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
- URLSession์ ๋ํด์ ์ค๋ช ํ์์ค.
- prepareForReuse์ ๋ํด์ ์ค๋ช ํ์์ค.
- ๋คํฌ๋ชจ๋๋ฅผ ์ง์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ์์ค.
- ViewController์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ค๋ช ํ์์ค.
- TableView์ CollectionView์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
Autolayout
- ์คํ ๋ ์ด์์์ ์ฝ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ? (3๊ฐ์ง)
- hugging, resistance์ ๋ํด์ ์ค๋ช ํ์์ค.
- Intrinsic Size์ ๋ํด์ ์ค๋ช ํ์์ค.
- ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ด์ฉํ์๋์ ์ฅ๋จ์ ์ ์ค๋ช ํ์์ค.
- Safearea์ ๋ํด์ ์ค๋ช ํ์์ค.
- Left Constraint ์ Leading Constraint ์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
Swift
- struct์ class์ enum์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์์ค.
- class์ ์ฑ๋ฅ์ ํฅ์ ์ํฌ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋์ดํด๋ณด์์ค.
- Copy On Write๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํ๋์ง ์ค๋ช ํ์์ค.
- Convenience init์ ๋ํด ์ค๋ช ํ์์ค.
- AnyObject์ ๋ํด ์ค๋ช ํ์์ค.
- Optional ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Struct ๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ค๋ช ํ์์ค.
- Subscripts์ ๋ํด ์ค๋ช ํ์์ค.
- String์ ์ subscript๋ก ์ ๊ทผ์ด ์๋๋์ง ์ค๋ช ํ์์ค.
- instance ๋ฉ์๋์ class ๋ฉ์๋์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- class ๋ฉ์๋์ static ๋ฉ์๋์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- Delegate ํจํด์ ํ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช ํ์์ค.
- Singleton ํจํด์ ํ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช ํ์์ค.
- KVO ๋์ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Delegates์ Notification ๋ฐฉ์์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํ์์ค.
- ๋ฉํฐ ์ฐ๋ ๋๋ก ๋์ํ๋ ์ฑ์ ์์ฑํ๊ณ ์ถ์ ๋ ๊ณ ๋ คํ ์ ์๋ ๋ฐฉ์๋ค์ ์ค๋ช ํ์์ค.
- MVC ๊ตฌ์กฐ์ ๋ํด ๋ธ๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ , ๊ฐ ์ญํ ๊ณผ ํ๋ฆ์ ์ค๋ช ํ์์ค.
- ํ๋กํ ์ฝ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Protocol Oriented Programming๊ณผ Object Oriented Programming์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- Hashable์ด ๋ฌด์์ด๊ณ , Equatable์ ์ ์์ํด์ผ ํ๋์ง ์ค๋ช ํ์์ค.
- mutating ํค์๋์ ๋ํด ์ค๋ช ํ์์ค.
- ํ์ถ ํด๋ก์ ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- Extension์ ๋ํด ์ค๋ช ํ์์ค.
- Extension ๋ด๋ถ์์ ํจ์๋ฅผ overrideํ ์ ์๋์ง ์ค๋ช ํ์์ค.
- ์ ๊ทผ ์ ์ด์์ ์ข ๋ฅ์ ์ด๋ค๊ฒ ์๋์ง ์ค๋ช ํ์์ค.
- defer๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- defer๊ฐ ํธ์ถ๋๋ ์์๋ ์ด๋ป๊ฒ ๋๊ณ , defer๊ฐ ํธ์ถ๋์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ์ค๋ช ํ์์ค.
- property wrapper์ ๋ํด์ ์ค๋ช ํ์์ค.
- Generic์ ๋ํด ์ค๋ช ํ์์ค.
- some ํค์๋์ ๋ํด ์ค๋ช ํ์์ค.
- Resultํ์ ์ ๋ํด ์ค๋ช ํ์์ค.
- Codable์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- Closure์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- Closure์ ํจ์์์ ๊ด๊ณ์ ๋ํด ์ค๋ช ํ์์ค.
ARC
- ARC๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Retain Count ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- Strong ๊ณผ Weak ์ฐธ์กฐ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ์์ค.
- ์ํ ์ฐธ์กฐ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
- ๊ฐํ ์ํ ์ฐธ์กฐ (Strong Reference Cycle) ๋ ์ด๋ค ๊ฒฝ์ฐ์ ๋ฐ์ํ๋์ง ์ค๋ช ํ์์ค.
Functional programing
- ์์ํจ์๋ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- ๊ณ ์ฐจ ํจ์๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ์์ค.
- Swift Standard Library์ map, filter, reduce, compactMap, flatMap์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
Architecture
- MVVM, MVI, Ribs, VIP ๋ฑ ์์ ์ด ์๊ณ ์๋ ์ํคํ ์ณ๋ฅผ ์ค๋ช ํ์์ค.
- ์์กด์ฑ ์ฃผ์ ์ ๋ํ์ฌ ์ค๋ช ํ์์ค.
SwiftUI
- @State์ ๋ํด์ ์ค๋ช ํ์์ค.
Combine
- PassthroughSubject์ ๋ํด์ ์ค๋ช ํ์์ค
- @Published์ ๋ํด์ ์ค๋ช ํ์์ค
- AnyCancellable์ ๋ํด์ ์ค๋ช ํ์์ค
- sink์ ๋ํด์ ์ค๋ช ํ์์ค
- throttle๊ณผ debounce์ ์ฐจ์ด์ ์ ์ค๋ช ํ์์ค.
- Data๋ฅผ Binding ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช ํ์์ค.