Skip to content

hb1love/awesome-ios-questions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Awesome iOS Questions

iOS & Mobile ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋– ์˜ฌ๋ž๋˜ ์งˆ๋ฌธ๊ณผ ์˜๊ฒฌ๋“ค์— ๋Œ€ํ•ด ๊ธฐ๋กํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉด์ ‘ ๋งŒ์„ ์œ„ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ iOS ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ํ•œ ๋ฒˆ์ฏค์€ ๊ณ ๋ฏผํ•ด ๋ด์•ผ ํ• , ๊ณ ๋ฏผํ•ด ๋ดค์œผ๋ฉด ํ•˜๋Š” ์ ๋“ค์„ ๊ธฐ๋กํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ •์˜๋ฅผ ๋ฌป๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌ์ฒด์ ์ธ ์ƒํ™ฉ์„ ์ œ์‹œํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต์„ ๋ฐฐ์šฐ๊ณ  ๊นŠ์ด ์žˆ๋Š” ์งˆ๋ฌธ์„ ํ†ตํ•ด ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋„“ํžˆ๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

PR์€ ์–ธ์ œ๋“  ํ™˜์˜์ž…๋‹ˆ๋‹ค. ๐Ÿคฉ

Read this in other languages: English, ํ•œ๊ตญ์–ด

App

  • ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ์ด์ „ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ๋‚˜ ํฌ๋ž˜์‹œ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ค ์กฐ์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‚˜?
  • ํฌ๋ž˜์‹œ๋ฅผ ๊ณ ์น  ๋•Œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ •ํ•˜๋Š”๊ฐ€? ์•ฑ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ™”๋ฉด์—์„œ์˜ ๊ฐ€๋” ์žˆ๋Š” ํฌ๋ž˜์‹œ์™€ ๋œ ์‚ฌ์šฉํ•˜๋Š” ํ™”๋ฉด์—์„œ์˜ ๋นˆ๋ฒˆํ•œ ํฌ๋ž˜์‹œ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๊ฐ€?
  • ์„ธ ๊ฐœ์˜ Endpoint[Dev, Stage, Prod]๊ฐ€ ์žˆ๊ณ  ์„ธ Endpoint๋ฅผ ์˜ค๊ฐ€๋ฉฐ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‚˜?
    • Build Configuration์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€? ๋‹จ์ ์€?
    • ๋Ÿฐํƒ€์ž„์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€?
  • ์˜คํ”„๋ผ์ธ(๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์•ˆ ๋œ) ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ์•ฑ์ด ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์˜คํ”„๋ผ์ธ ์ƒํƒœ์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ์„œ๋ฒ„์™€ ๋™๊ธฐํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜?

iOS

  • NSCache์™€ Dictionary์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ๊ฐ€?
  • Dictionary๋Š” Thread-Safe ํ•˜์ง€ ์•Š์€๋ฐ, ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‚˜?
    • ๋‘ ๊ตฐ๋ฐ์—์„œ ๋™์‹œ์— ์—…๋ฐ์ดํŠธ๋ฅผ ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ Consistency๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€?
    • ๋‹ค์Œ ์ฝ”๋“œ๋Š” Thread-Safeํ•œ๊ฐ€?
      let queue = DispatchQueue(label: "awesome-ios-questions")
      var _dict: [Int] = []
      var dict: [Int] {
        get {
          return queue.sync { _dict }
        }
        set {
          queue.sync { _dict = newValue }
        }
      }
  • Background Notification์ด ๋ฌด์—‡์ธ๊ฐ€?
    • Background Notification์„ ์–ด๋–ค ์ƒํ™ฉ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ 2๊ฐ€์ง€๋งŒ ๋– ์˜ฌ๋ ค๋ณด์ž๋ฉด?
    • Background Notification์€ ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ๋‹ค. ์•Œ๋ฆผ ์ „๋‹ฌ์ด ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋ฐ, ์ด๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ?
  • iOS์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋‚˜?

Concurrency

  • Dispatch queue์— ๋“ฑ๋กํ•œ ์ž‘์—…์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋‚˜?

UIKit

  • UIViewController์˜ Life cycle ์ค‘์— viewWillAppear์™€ viewDidAppear๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ๋‘˜์€ ํ•ญ์ƒ ์ง์œผ๋กœ ํ˜ธ์ถœ๋ ๊นŒ?
  • reuseIdentifier๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ ์€ ๋ฌด์—‡์ธ๊ฐ€? nil์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ–ˆ์„ ๋•Œ์˜ ์žฅ์ ์€?

DeepLink

  • ์‚ฌํŒŒ๋ฆฌ์—์„œ https://ourdomain.com ๋งํฌ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์•ฑ์œผ๋กœ ์—ฐ๊ฒฐํ•ด๋‹ฌ๋ผ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ฒผ๋‹ค. ํ•„์š”ํ•œ ์ž‘์—…์€ ๋ฌด์—‡์ธ๊ฐ€?
    • Universal Links๊ฐ€ ์–ด๋–ค ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์•ฑ์„ ์„ค์น˜ํ•˜๋Š” ์‹œ์ ๋ถ€ํ„ฐ ์‹œ๊ฐ„ ํ๋ฆ„ ์ˆœ์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜?
    • Universal Links๊ฐ€ ์ƒ๊ฒจ๋‚œ ์ด์œ ์™€ ํ•œ๊ณ„๋Š” ๋ฌด์—‡์ธ๊ฐ€?

Swift

  • Value Type๊ณผ Reference Type์—๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”๊ฐ€?
    • Collection, Closure๋Š” ๋ฌด์Šจ ํƒ€์ž…์ธ๊ฐ€?
  • nil๊ณผ .none์˜ ์ฐจ์ด์ ์€?
  • Generic์ด ํ•„์š”ํ•œ ์ด์œ ๋Š”?
  • ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์„ ์–ธํ•  ๋•Œ Any ํ‚ค์›Œ๋“œ์™€ Generics์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ์ฐจ์ด์ ์€?
  • Array์™€ NSArray์˜ ์ฐจ์ด๋Š”?
  • ์•„๋ž˜ ์ฝ”๋“œ์˜ print ๊ฒฐ๊ณผ?
    var verb = "like"
    
    let closure = { [verb] in
      print("I \(verb) swift")
    }
    
    verb = "hate"
    
    closure()
  • ํด๋ž˜์Šค ์•ˆ์˜ staticํ•จ์ˆ˜์™€ classํ•จ์ˆ˜์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  • ๋น„๋™๊ธฐ ์ฝ”๋“œ์—์„œ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด self๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š”?

Memory

  • ํด๋กœ์ €์—์„œ [weak self]๋Š” ์–ด๋–ค ์ƒํ™ฉ์— ์“ฐ์ด๋Š”๊ฐ€?
    • guard let self else { return } ๊ฐ€ ๊ฐ–๋Š” ์˜๋ฏธ๋Š” ๋ฌด์—‡์ธ๊ฐ€?
    • guard let self else { return } ๋Œ€์‹  self?.๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜?
  • ํด๋กœ์ €๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ self๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€?
  • ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ์„ ์ฐพ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋ณธ์ธ๋งŒ์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€?

Performance

  • struct์™€ class์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š”?
  • Collection์˜ map(), redeuce() ์™€ for loops ์ค‘์— ์–ด๋–ค ๊ฒƒ์ด ๋” ๋น ๋ฅด๊ณ  ๋ฌด์—‡์ด ์„ฑ๋Šฅ์˜ ์ฐจ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๊ฐ€?
  • Array์™€ Dictionary ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ํƒ์ƒ‰ ์†๋„๊ฐ€ ๋” ๋น ๋ฅธ๊ฐ€?

Reactive

Combine

Rx

  • DisposeBag์ด ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€?
  • dispose()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ตฌ๋…์€ ์ฆ‰๊ฐ ์ค‘๋‹จ์ด ๋˜๋Š”๊ฐ€?

General

  • Rest์™€ GraphQL์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?

License

Awesome iOS Questions is available under the MIT license. See the LICENSE for details.