Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

πŸ‘¨πŸ»β€πŸ’»πŸ‘©πŸ»β€πŸ’»iOS 면접에 λ‚˜μ˜¬ μ§ˆλ¬Έλ“€ 총 정리

Notifications You must be signed in to change notification settings

b1ctory/iOSInterviewquestions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

31 Commits

Repository files navigation

iOSInterviewquestions

iOSκ°œλ°œμžλ“€μ—κ²Œ ν•„μš”ν•œ μžλ£Œλ“€μ„ μ •λ¦¬ν•˜κ³  μžˆλŠ” μ€‘μž…λ‹ˆλ‹€.

λ©΄μ ‘λ•Œ 받은 μ§ˆλ¬Έμ΄λ‚˜ κ³΅λΆ€ν•œλ‚΄μš©λ“€

μˆ˜μ •ν•΄μ•Όν•  λ‚΄μš©μ΄λ‚˜ μΆ”κ°€ν•΄μ•Όν•  λ‚΄μš©μ€ μ–Έμ œλ“ μ§€ PRλ‚ λ €μ£Όμ„Έμš”!

닡이 μ ν˜€μžˆμ§€ μ•Šμ€ μ΄μœ λŠ” ν•΄λ‹Ή λ‚΄μš©μ„ μ•”κΈ°μ‹μœΌλ‘œ μ™Έμš°κΈ° 보닀 찾아보고 κ³΅λΆ€ν•˜λ©΄μ„œ μŠ΅λ“ ν•˜μ‹œλŠ”κ²Œ μ’‹κΈ°λ•Œλ¬Έμž…λ‹ˆλ‹€.
ν•΄λ‹Ήλ‚΄μš©μ„ μ°Ύμ•„λ³΄λ©΄μ„œ κ΄€λ ¨λœ λ‚΄μš©λ“€ κΉŒμ§€ 같이 κ³΅λΆ€ν•˜μ‹œλ©΄μ„œ ν•΄λ‹Ή λ‚΄μš©μ„ 본인의 κ²ƒμœΌλ‘œ μ–»μœΌμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

λͺ¨λ‘μ˜ νž˜μ„ λͺ¨μ•„λ΄…μ‹œλ‹€ πŸ‘―β€β™€οΈπŸ‘―β€β™‚οΈ κ°μ‚¬ν•©λ‹ˆλ‹€:)

Required

μ•„λž˜ λ‚΄μš©λ“€μ€ μ΅œλŒ€ν•œ 많이 κ³΅λΆ€ν•΄λ†“λŠ”κ²ƒμ΄ μ’‹μŠ΅λ‹ˆλ‹€ πŸ“

  • λ©΄μ ‘μ‹œκΈ°κ°€ wwdc이후 (7μ›”~11μ›”)이라면 해당년도 wwdcμ„Έμ…˜λ“€μ„ 봐 λ‘μ‹œλ©΄ 맀우맀우맀우 μ’‹μŠ΅λ‹ˆλ‹€.

Apple All Videos

iOS

  • Bounds 와 Frame 의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • μ‹€μ œ λ””λ°”μ΄μŠ€κ°€ 없을 경우 개발 ν™˜κ²½μ—μ„œ ν•  수 μžˆλŠ” 것과 μ—†λŠ” 것을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • 앱이 foreground에 μžˆμ„ λ•Œμ™€ background에 μžˆμ„ λ•Œ μ–΄λ–€ μ œμ•½μ‚¬ν•­μ΄ μžˆλ‚˜μš”?
  • μƒνƒœ 변화에 따라 λ‹€λ₯Έ λ™μž‘μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ μ•±λΈλ¦¬κ²Œμ΄νŠΈ λ©”μ„œλ“œλ“€μ„ μ„€λͺ…ν•˜μ‹œμ˜€.
  • scene delegate에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • 앱이 In-Active μƒνƒœκ°€ λ˜λŠ” μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.
  • NSOperationQueue 와 GCD Queue 의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • GCD API λ™μž‘ 방식과 ν•„μš”μ„±μ— λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • μžμ‹ λ§Œμ˜ Custom Viewλ₯Ό λ§Œλ“€λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • iOS 앱을 λ§Œλ“€κ³ , User Interfaceλ₯Ό κ΅¬μ„±ν•˜λŠ” 데 ν•„μˆ˜μ μΈ ν”„λ ˆμž„μ›Œν¬ 이름은 무엇인가?
  • Foundation Kit은 무엇이고 ν¬ν•¨λ˜μ–΄ μžˆλŠ” ν΄λž˜μŠ€λ“€μ€ μ–΄λ–€ 것이 μžˆλŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Delegateλž€ 무언인가 μ„€λͺ…ν•˜κ³ , retain λ˜λŠ”μ§€ μ•ˆλ˜λŠ”μ§€ κ·Έ 이유λ₯Ό ν•¨κ»˜ μ„€λͺ…ν•˜μ‹œμ˜€.
  • NotificationCenter λ™μž‘ 방식과 ν™œμš© λ°©μ•ˆμ— λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • UIKit ν΄λž˜μŠ€λ“€μ„ λ‹€λ£° λ•Œ κΌ­ μ²˜λ¦¬ν•΄μ•Όν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ“°λ ˆλ“œ 이름은 무엇인가?
  • TableViewλ₯Ό λ™μž‘ 방식과 화면에 Cell을 좜λ ₯ν•˜κΈ° μœ„ν•΄ μ΅œμ†Œν•œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” DataSource λ©”μ„œλ“œλ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.
  • ν•˜λ‚˜μ˜ View Controller μ½”λ“œμ—μ„œ μ—¬λŸ¬ TableView Controller 역할을 ν•΄μ•Ό ν•  경우 μ–΄λ–»κ²Œ κ΅¬λΆ„ν•΄μ„œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • App Bundle의 ꡬ쑰와 역할에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • View 객체에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • UIView μ—μ„œ Layer κ°μ²΄λŠ” 무엇이고 μ–΄λ–€ 역할을 λ‹΄λ‹Ήν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • UIWindow 객체의 역할은 무엇인가?
  • UINavigationController 의 역할이 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • λͺ¨λ“  View Controller 객체의 μƒμœ„ ν΄λž˜μŠ€λŠ” 무엇이고 κ·Έ 역할은 무엇인가?
  • 앱이 μ‹œμž‘ν•  λ•Œ main.c 에 μžˆλŠ” UIApplicationMain ν•¨μˆ˜μ— μ˜ν•΄μ„œ μƒμ„±λ˜λŠ” κ°μ²΄λŠ” 무엇인가?
  • UIApplication 객체의 컨트둀러 역할은 어디에 κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”κ°€?
  • μ•±μ˜ μ½˜ν…μΈ λ‚˜ 데이터 자체λ₯Ό μ €μž₯/λ³΄κ΄€ν•˜λŠ” νŠΉλ³„ν•œ 객체λ₯Ό 무엇이라고 ν•˜λŠ”κ°€?
  • μ•± ν™”λ©΄μ˜ μ½˜ν…μΈ λ₯Ό ν‘œμ‹œν•˜λŠ” 둜직과 관리λ₯Ό λ‹΄λ‹Ήν•˜λŠ” 객체λ₯Ό 무엇이라고 ν•˜λŠ”κ°€?
  • Swift의 ν΄λ‘œμ €μ™€ Objective-C의 블둝은 μ–΄λ–€ 차이가 μžˆλŠ”κ°€?
  • App의 Not running, Inactive, Active, Background, Suspended에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • App thinning에 λŒ€ν•΄μ„œ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Global DispatchQueue 의 Qos μ—λŠ” μ–΄λ–€ μ’…λ₯˜κ°€ μžˆλŠ”μ§€, 각각 μ–΄λ–€ μ˜λ―ΈμΈμ§€ μ„€λͺ…ν•˜μ‹œμ˜€.

Autolayout

  • μ˜€ν† λ ˆμ΄μ•„μ›ƒμ„ μ½”λ“œλ‘œ μž‘μ„±ν•˜λŠ” 방법은 무엇인가? (3κ°€μ§€)
  • hugging, resistance에 λŒ€ν•΄μ„œ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Intrinsic Size에 λŒ€ν•΄μ„œ μ„€λͺ…ν•˜μ‹œμ˜€.
  • μŠ€ν† λ¦¬λ³΄λ“œλ₯Ό μ΄μš©ν–ˆμ„λ•Œμ˜ μž₯단점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Safearea에 λŒ€ν•΄μ„œ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Left Constraint 와 Leading Constraint 의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.

Swift

  • Optional μ΄λž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Fast Enumeration μ΄λž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Struct κ°€ 무엇이고 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • instance λ©”μ„œλ“œμ™€ class λ©”μ„œλ“œμ˜ 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Delegate νŒ¨ν„΄μ„ ν™œμš©ν•˜λŠ” 경우λ₯Ό 예λ₯Ό λ“€μ–΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Singleton νŒ¨ν„΄μ„ ν™œμš©ν•˜λŠ” 경우λ₯Ό 예λ₯Ό λ“€μ–΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • KVO λ™μž‘ 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Delegates와 Notification λ°©μ‹μ˜ 차이점에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • λ©€ν‹° μ“°λ ˆλ“œλ‘œ λ™μž‘ν•˜λŠ” 앱을 μž‘μ„±ν•˜κ³  싢을 λ•Œ κ³ λ €ν•  수 μžˆλŠ” 방식듀을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • MVC ꡬ쑰에 λŒ€ν•΄ 블둝 그림을 그리고, 각 μ—­ν• κ³Ό 흐름을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • ν”„λ‘œν† μ½œμ΄λž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Hashable이 무엇이고, Equatable을 μ™œ 상속해야 ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • mutating ν‚€μ›Œλ“œμ— λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • νƒˆμΆœ ν΄λ‘œμ €μ— λŒ€ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Extension에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • μ ‘κ·Ό μ œμ–΄μžμ˜ μ’…λ₯˜μ—” μ–΄λ–€κ²Œ μžˆλŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€
  • deferλž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • deferκ°€ ν˜ΈμΆœλ˜λŠ” μˆœμ„œλŠ” μ–΄λ–»κ²Œ 되고, deferκ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠλŠ” 경우λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.

ARC

  • ARCλž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Retain Count 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Strong κ³Ό Weak μ°Έμ‘° 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • ARC λŒ€μ‹  Manual Reference Count λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•  λ•Œ κΌ­ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” λ©”μ„œλ“œλ“€μ„ μ“°κ³  역할을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • retain κ³Ό assign 의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • μˆœν™˜ 참쑰에 λŒ€ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.
  • κ°•ν•œ μˆœν™˜ μ°Έμ‘° (Strong Reference Cycle) λŠ” μ–΄λ–€ κ²½μš°μ— λ°œμƒν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • νŠΉμ • 객체λ₯Ό autorelease ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 사항과 과정을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Autorelease Pool을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 상황을 두 κ°€μ§€ 이상 예둜 λ“€μ–΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ–΄λ–€ 일이 λ°œμƒν• κΉŒ μΆ”μΈ‘ν•΄μ„œ μ„€λͺ…ν•˜μ‹œμ˜€. Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];

Functional Programming

  • ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ΄ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • κ³ μ°¨ ν•¨μˆ˜κ°€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Swift Standard Library의 map, filter, reduce, compactMap, flatMap에 λŒ€ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.

Optional

μ•„λž˜λΆ€ν„°λŠ” μΆ”κ°€λ‘œ 곡뢀λ₯Ό ν•˜λ©΄ 쒋을 λ‚΄μš©λ“€μž…λ‹ˆλ‹€.

Objective-cλ‚˜ rxλŠ” νšŒμ‚¬, νŒ€λ§ˆλ‹€ μ‚¬μš©ν•˜λŠ”κ³³μ΄ μ°¨μ΄κ°€μžˆκ³  μ‹ μž…μ΄λ‚˜ μ£Όλ‹ˆμ–΄κΈ°μ€€μœΌλ‘œ ν•„μˆ˜λΌκ³  μ—¬κ²¨μ§€μ§€μ•ŠκΈ°μ— μ˜΅μ…”λ„μ— μΆ”κ°€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Objective-C

  • Mutable 객체과 Immutable κ°μ²΄λŠ” 어떀것이 μžˆλŠ”μ§€ 예λ₯Ό λ“€κ³ , 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • dynamicκ³Ό property μ˜λ―Έμ™€ 차이λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.
  • @property둜 μ„ μ–Έν•œ NSString* title 의 getter/setter λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•΄λ³΄μ‹œμ˜€.
  • @propertyμ—μ„œ atomicκ³Ό nonatomic 차이점을 μ„€λͺ…ν•˜κ³ , 어떀것이 μ•ˆμ „ν•œμ§€, μ–΄λŠκ²ƒμ΄ 기본인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • @property둜 μ„ μ–Έν•œλ‹€λŠ” κ²ƒμ˜ 의미λ₯Ό μ„€λͺ…ν•˜κ³ , .h에 넣을 κ²½μš°μ™€ .m에 넣을 경우 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • -performSelector:withObject:afterDelay: λ©”μ‹œμ§€λ₯Ό 보내면 μΈμžκ°’μ˜ κ°μ²΄λŠ” retainλ˜λŠ”κ°€? κ·Έ 이유λ₯Ό ν•¨κ»˜ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Objective-C μ—μ„œ μΊ‘μŠν™”λœ 데이터λ₯Ό μ ‘κ·Όν•˜κΈ° μœ„ν•œ 방법듀을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • unnamed category 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Category ν™•μž₯κ³Ό Subclass ν™•μž₯의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Category 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • Objective-C μ—μ„œ Protocol μ΄λž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • Objective-C++ 방식이 무엇인지 μ„€λͺ…ν•˜κ³ , μ–΄λ–€ 경우 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.

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만 λ˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμš”.

Architecture

  • MVVM, MVC, Ribs, VIP λ“± μžμ‹ μ΄ μ•Œκ³ μžˆλŠ” 아킀텍쳐λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.
  • μ˜μ‘΄μ„± μ£Όμž…μ— λŒ€ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.

Rx

  • Reactive Programming이 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • RxSwiftμ—μ„œ Hot Observableκ³Ό Cold Observable의 차이λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.
  • Subject와 drive의 차이λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.

About

πŸ‘¨πŸ»β€πŸ’»πŸ‘©πŸ»β€πŸ’»iOS 면접에 λ‚˜μ˜¬ μ§ˆλ¬Έλ“€ 총 정리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /