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

jeonsumin/iOSInterviewquestions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

30 Commits

Repository files navigation

iOSInterviewquestions

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

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

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

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

Required

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

iOS

  • Bounds 와 Frame 의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.

    ⚠️ 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 Enumration μ΄λž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.

  • Struct κ°€ 무엇이고 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.

  • instance λ©”μ„œλ“œμ™€ class λ©”μ„œλ“œμ˜ 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.

    ⚠️ μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œλŠ” class/structκ°€ μ΄ˆκΈ°ν™”λ˜μ–΄ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό 톡해 μ ‘κ·Ό κ°€λŠ₯ν•œ λ©”μ†Œλ“œμ΄λ‹€.

    • κ·ΈλŸ¬λ―€λ‘œ ν•΄λ‹Ή λ©”μ†Œλ“œμ—μ„œ μƒνƒœλ₯Ό λ³€κ²½ν•˜λ©΄ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ§Œ μƒνƒœκ°€ λ³€κ²½λœλ‹€.

    ⚠️ Class λ©”μ†Œλ“œμ˜ 경우 νƒ€μž…μ— μ˜μ‘΄ν•˜λ―€λ‘œ νƒ€μž…μ„ λͺ…μ‹œν•¨μœΌλ‘œμ¨ λ©”μ†Œλ“œμ— μ ‘κ·Όκ°€λŠ₯ν•˜λ‹€.

    • κ·ΈλŸ¬λ―€λ‘œ ν•΄λ‹Ή λ©”μ†Œλ“œμ—μ„œ μƒνƒœλ₯Ό λ³€κ²½ν•˜κ²Œλ˜λ©΄ ν•΄λ‹Ή νƒ€μž… κ·Έ 자체의 μƒνƒœκ°€ λ³€κ²½λœλ‹€.
  • Delegate νŒ¨ν„΄μ„ ν™œμš©ν•˜λŠ” 경우λ₯Ό 예λ₯Ό λ“€μ–΄ μ„€λͺ…ν•˜μ‹œμ˜€.

  • Singleton νŒ¨ν„΄μ„ ν™œμš©ν•˜λŠ” 경우λ₯Ό 예λ₯Ό λ“€μ–΄ μ„€λͺ…ν•˜μ‹œμ˜€.

  • KVO λ™μž‘ 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

  • Delegates와 Notification λ°©μ‹μ˜ 차이점에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

  • λ©€ν‹° μ“°λ ˆλ“œλ‘œ λ™μž‘ν•˜λŠ” 앱을 μž‘μ„±ν•˜κ³  싢을 λ•Œ κ³ λ €ν•  수 μžˆλŠ” 방식듀을 μ„€λͺ…ν•˜μ‹œμ˜€.

  • MVC ꡬ쑰에 λŒ€ν•΄ 블둝 그림을 그리고, 각 μ—­ν• κ³Ό 흐름을 μ„€λͺ…ν•˜μ‹œμ˜€.

  • ν”„λ‘œν† μ½œμ΄λž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.

    ⚠️ ν”„λ‘œν† μ½œμ€ κ°μ²΄κ°„μ˜ μ†Œν†΅μ—μ„œ ν•„μš”ν•œ κ΄€λ ¨μžˆλŠ” κΈ°λŠ₯λ“€μ˜ λͺ…μ„Έμ˜ 집합이닀.

    ⚠️ ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•˜λŠ” μˆœκ°„ ν•΄λ‹Ή κΈ°λŠ₯λ“€μ˜ κ΅¬ν˜„μ„ κ°•μ œν•˜κΈ°ν•œλ‹€.

    • κ·Έλ ‡κΈ° 떄문에 ν•΄λ‹Ή ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•œλ‹€λ©΄, κ·Έ 객체가 ν•΄λ‹Ή κΈ°λŠ₯듀을 μˆ˜ν–‰ν• μˆ˜ μžˆμŒμ„ 보μž₯ν•  수 μžˆλ‹€.

  • Hashable이 무엇이고, Equatable을 μ™œ 상속해야 ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.


  • mutating ν‚€μ›Œλ“œμ— λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

    ⚠️ κ°’νƒ€μž…μ˜ ν”„λ‘œνΌν‹°λ₯Ό λ³€κ²½ν•˜λŠ” λ©”μ†Œλ“œμ— μž‘μ„±ν•΄μ•Όν•˜λŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€.

    ⚠️ mutating ν‚€μ›Œλ“œκ°€ 뢙은 λ©”μ†Œλ“œλŠ” 사싀 ν”„λ‘œνΌν‹°λ₯Ό λ°”κΎΈλŠ” 것이 μƒˆλ‘œμš΄ κ°’ νƒ€μž…μ„ μƒμ„±ν•΄μ„œ λŒ€μΉ˜μ‹œν‚€λŠ” κ³Όμ •μ΄λ―€λ‘œ, 이λ₯Ό μ»΄νŒŒμΌλŸ¬μ—κ²Œ λͺ…μ‹œν•΄μ£ΌλŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€.


  • νƒˆμΆœ ν΄λ‘œμ €μ— λŒ€ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.

    ⚠️ ν΄λ‘œμ €λŠ” μŠ€μœ„ν”„νŠΈμ—μ„œ μ°Έμ‘° νƒ€μž…μ΄λ©°, ν΄λ‘œμ €λ₯Ό ν•¨μˆ˜μ˜ 인자둜 전달할 수 μžˆλ‹€.

    ν΄λ‘œμ €λ₯Ό 전달받은 ν•¨μˆ˜κ°€ λλ‚˜κ³  μ œμ–΄νλ¦„μ„ λ°˜ν™˜ν•˜κΈ° 전에 ν΄λ‘œμ €λ₯Ό ν˜ΈμΆœν•œλ‹€λ©΄ λ¬Έμ œκ°€ λ˜μ§€ μ•Šμ§€λ§Œ, μ œμ–΄νλ¦„μ„ λ°˜ν™˜ν•˜κ³  κ·Έ 이후 ν˜ΈμΆœλ˜λŠ” ν΄λ‘œμ €λ“€μ΄ μžˆλ‹€. DispatchQueue.async 와 같은 μ˜ˆμ œκ°€ μžˆλ‹€. 이 경우 ν΄λ‘œμ €κ°€ λ©”λͺ¨λ¦¬μ— μœ μ§€λ  μ§€ 뢈투λͺ…ν•˜λ‹€.

    ⚠️ 이런 경우 λ©”λͺ¨λ¦¬μ—μ„œ ν΄λ‘œμ €λ₯Ό ν•΄μ œλ˜μ§€ μ•Šκ²Œ @escaping을 ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬μ„œ, λ©”λͺ¨λ¦¬μ— 남아 있게 ν•  수 μžˆλ‹€.


  • Extension에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

    ⚠️ κΈ°μ‘΄ (κ°’,μ°Έμ‘°)νƒ€μž…λ“€μ„ μˆ˜ν‰μ μœΌλ‘œ ν™•μž₯ν•˜λŠ” ν˜•νƒœμž…λ‹ˆλ‹€.

    ⚠️ κΈ°μ‘΄νƒ€μž…μ— μ‚¬μš©μž μ •μ˜λ©”μ†Œλ“œ, κ³„μ‚°ν”„λ‘œνΌν‹°λ“±μ„ μΆ”κ°€ν•˜λŠ” ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

    ⚠️ ν”„λ‘œν† μ½œμ˜ μΈν„°νŽ˜μ΄μŠ€ λ©”μ†Œλ“œλ₯Ό κΈ°λ³Έκ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    ⚠️ κ΄€λ ¨λœ μ½”λ“œλΈ”λŸ­λ“€μ„ λΆ„λ¦¬ν•˜μ—¬ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • Class/ struct/ enum 차이점과 μ‚¬μš©ν•˜λŠ” λ‚˜μ˜ 기쀀에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

  • μ ‘κ·Ό μ œμ–΄μžμ˜ μ’…λ₯˜μ—” μ–΄λ–€κ²Œ μžˆλŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€

    βœ… open - λͺ¨λ“  μˆ˜μ€€μ˜ 접근이 μ—΄λ € μžˆλ‹€.

    βœ… pubilc - ν•΄λ‹Ή λͺ¨λ“ˆμ—μ„œλ§Œ 상속을 ν†΅ν•œ νƒ€μž…ν™•μž₯이 κ°€λŠ₯ν•˜λ‹€.

    βœ… internal - ν•΄λ‹Ή λͺ¨λ“ˆμ—μ„œλ§Œ 접근이 κ°€λŠ₯ν•˜λ‹€. , Default μ ‘κ·Όμ œν•œμžμ΄λ‹€.

    βœ… fileprivate - ν•΄λ‹Ή νŒŒμΌμ—μ„œλ§Œ 접근이 κ°€λŠ₯ν•˜λ‹€.

    βœ… private - 접근을 μ œν•œν•œλ‹€.

  • deferλž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… μ œμ–΄κΆŒμ„ ν˜„μž¬ μŠ€μ½”ν”„μ—μ„œ λ‹€λ₯Έ μŠ€μ½”ν”„λ‘œ 전달할 λ•Œ, ν˜ΈμΆœλ˜λŠ” μ§€μ—° 블둝

    βœ… μžμ› λ°˜λ‚©κ³Ό 같은 ν›„μ²˜λ¦¬ 뢀뢄을 μ§€μ—°λΈ”λ‘μ—μ„œ μ²˜λ¦¬ν•œλ‹€.

    βœ… μ—λŸ¬κ°€ λ°œμƒν•΄λ„ 지연블둝을 ν˜ΈμΆœλ˜λ―€λ‘œ ν›„μ²˜λ¦¬μ— μ ν•©ν•˜λ‹€.

  • deferκ°€ ν˜ΈμΆœλ˜λŠ” μˆœμ„œλŠ” μ–΄λ–»κ²Œ 되고, deferκ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠλŠ” 경우λ₯Ό μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… μ„ μ–Έλœ μˆœμ„œμ™€ μ—­μˆœμœΌλ‘œ ν˜ΈμΆœλœλ‹€

    βœ… λ§Œμ•½ defer 블둝에 λ„λ‹¬ν•˜κΈ°λ„ 전에 reture λœλ‹€λ©΄ κ·Έ 이전에 λͺ…μ‹œλœ defer ꡬ문만이 ν˜ΈμΆœλœλ‹€

  • μƒμ„±μž(designated/convenience/required)의 차이점과 νŠΉμ§•μ„ μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… designated init 은 λͺ¨λ“  λ©€λ²„λ³€μˆ˜κ°€ μ΄ˆκΈ°ν™”ν•˜λŠ” μ§€μ •μ΄λ‹ˆμ…œλΌμ΄μ €

    • λ§Œμ•½ ν•˜μœ„νƒ€μž…μ˜ init이라면 super.init 을 ν˜ΈμΆœν•΄μ•Όν•œλ‹€.
    • λ§Œμ•½ superν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•œλ‹€λ©΄, ν™•μž₯된 ν”„λ‘œνΌν‹°λ₯Ό μ΄ˆκΈ°ν™”ν›„ super.init을 ν˜ΈμΆœν•΄μ•Όν•œλ‹€.

    βœ… convenience init 은 λ‚΄λΆ€μ—μ„œ designated init을 ν˜ΈμΆœν•΄μ•Όν•œλ‹€.

    • μ΄λ‹ˆμ…œλΌμ΄μ € μœ„μž„μœΌλ‘œ, self.init이 ν˜ΈμΆœμ„ ν•˜κΈ° μ΄μ „μ—λŠ” self에 μ ‘κ·Ό ν•  수 μ—†μœΌλ―€λ‘œ, designated init의 superμ™€λŠ” λ°˜λŒ€λ‘œ λ¨Όμ € self.init을 ν˜ΈμΆœν•΄μ•Όν•œλ‹€.

    βœ… required init은 ν•΄λ‹Ή νƒ€μž…μ˜ μ„œλΈŒν΄λž˜μŠ€λ“€μ—κ²Œ νŠΉμ • init의 κ΅¬ν˜„μ„ κ°•μ œν•˜λŠ” μ΄λ‹ˆμ…œλΌμ΄μ €μ΄λ‹€.

    λͺ¨λ“  μ΄ˆκΈ°ν™”λŠ” μ•„λž˜μ˜ 단계λ₯Ό κ±°μΉœλ‹€.

    1. Designated init 이 ν˜ΈμΆœλœλ‹€ - convenience init 을 ν†΅ν•œ κ°„μ ‘ν˜ΈμΆœλ„ ν¬ν•¨λœλ‹€
    2. μ΄ˆκΈ°ν™”λœ self.prop 을 μˆ˜μ •ν•  κΈ°νšŒκ°€ μ£Όμ–΄μ§„λ‹€.
  • ν”„λ‘œν† μ½œ μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•΄μ„œ μ„€λͺ…ν•˜μ‹œμ˜€.

ARC

  • ARCλž€ 무엇인지 μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… Swiftμ—μ„œλŠ” λ©”λͺ¨λ¦¬κ΄€λ¦¬λ₯Ό 참쑰카운트λ₯Ό ν†΅ν•΄μ„œ ν•˜λŠ”λ°, 이것을 μžλ™μœΌλ‘œ κ³„μ‚°ν•΄μ£ΌλŠ” λ©”λͺ¨λ¦¬κ΄€λ¦¬ 방법이닀.

  • Retain Count 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… ν•΄λ‹Ή 객체λ₯Ό λ‹€λ₯Έ κ³³μ—μ„œ μ°Έμ‘°ν•˜κ²Œ 되면 retain count κ°€ μ¦κ°€ν•˜κ³ , μ°Έμ‘°λ₯Ό 마치게 되면 retain countλ₯Ό κ°μ†Œμ‹œν‚¨λ‹€.

    βœ… 객체의 retain count κ°€ 0 이라면 ν•΄λ‹Ή 객체에 μ ‘κ·Όν•  수 μ—†κΈ°λ•Œλ¬Έμ—, 더 이상 μ‚¬μš©λ˜μ§€ μ•Šμ„ 것이라고 νŒλ‹¨ν•΄μ„œ λ©”λͺ¨λ¦¬μ—μ„œ ν•΄μ œν•©λ‹ˆλ‹€.

  • Strong κ³Ό Weak μ°Έμ‘° 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… Strong 은 객체λ₯Ό μ°Έμ‘°ν•˜λ©°, 참쑰카운트λ₯Ό 1 μ¦κ°€μ‹œν‚¨λ‹€. κ·ΈλŸ¬λ―€λ‘œ 객체가 λ©”λͺ¨λ¦¬μ—μ„œ ν•΄μ œλ˜μ§€ μ•ŠμŒμ„ 보μž₯ν•  수 μžˆλ‹€.

    βœ… Weak은 μ°Έμ‘°λ₯Ό ν•˜λ˜, μ°Έμ‘° μΉ΄μš΄νŠΈλŠ” μ¦κ°€μ‹œν‚€μ§€ μ•Šμ•„μ„œ, nil 둜 λ°”λ€” 수 μžˆλŠ” κ°€λŠ₯성을 κ°€μ§€κ³  μžˆλ‹€. κ·Έλž˜μ„œ Optionalκ³Ό var 을 μ‚¬μš©ν•œλ‹€.

  • Unowned 와 weak 의 차이점에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.

    βœ… Weak μ°Έμ‘°λŠ” μ°Έμ‘°ν•˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ 더 짧은 생λͺ…μ£ΌκΈ°λ₯Ό κ°€μ§ˆ λ•Œ μ‚¬μš©ν•œλ‹€. nil κ°€λŠ₯성을 λ‚΄ν¬ν•˜κ³  μžˆλ‹€. μ°Έμ‘°κ°€ 0 이 되면 Zeroing μ΄λΌλŠ” μž‘μ—…μ„ 톡해 dangling pointer κ°€ μ•„λ‹Œ nil 을 ν• λ‹Ήν•œλ‹€.

    βœ… unownedλŠ” μ°Έμ‘°ν•˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ ν˜„μž¬ μΈμŠ€ν„΄μŠ€μ˜ 생λͺ…주기보닀 κΈΈκ±°λ‚˜ 같을 λ•Œ μ‚¬μš©ν•œλ‹€.

  • 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++ 방식이 무엇인지 μ„€λͺ…ν•˜κ³ , μ–΄λ–€ 경우 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • method swizzling이 무엇이고, μ–΄λ–¨ λ•Œ μ‚¬μš©ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.

Advanced

  • 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 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 방식과 νŒŒμ„œ, 객체 λ³€ν™˜ 방식에 λŒ€ν•΄ μ„€λͺ…ν•˜μ‹œμ˜€.
  • XML Parserλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹œμ˜€.
  • μ›Ή μ„œλ²„μ™€ HTTP 연결을 μ‚¬μš©ν•΄μ„œ 데이터λ₯Ό μ£Όκ±°λ‚˜ λ°›μœΌλ €λ©΄ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” ν΄λž˜μŠ€μ™€ λ™μž‘μ„ μ„€λͺ…ν•˜μ‹œμ˜€.
  • DOM 방식과 SAX 방식 XML Parser의 차이점을 μ„€λͺ…ν•˜κ³  iOS XML ParserλŠ” μ–΄λ–€ 방식인지 μ„€λͺ…ν•˜μ‹œμ˜€.
  • In-App Purchase Product type 을 μ„€λͺ…ν•˜μ‹œμ˜€.

Architecture

  • μ˜μ‘΄μ„± μ£Όμž…μ— λŒ€ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.

Rx

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

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Swift 100.0%

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