25 questions · iOS Developer

iOS Developer Interview Questions

A hiring manager's question bank for iOS developers — Swift, ARC and retain cycles, the view controller lifecycle, SwiftUI, and modern concurrency. Built to separate people who can lay out a screen from people who ship stable, memory-clean apps to the App Store.

Interviewing an iOS developer well means going past whether they can build a screen and into whether they understand Apple's runtime, memory model, and UI paradigms. The single most revealing iOS topic is memory management: iOS uses automatic reference counting, not a garbage collector, so a candidate must genuinely understand strong, weak, and unowned references and be able to explain how a retain cycle forms — a view controller holding a closure that captures self strongly is the classic leak, and someone who cannot spot it will ship apps that balloon in memory. Beyond ARC, you want fluency in Swift itself: optionals and safe unwrapping, value versus reference semantics with structs and classes, protocols and protocol-oriented design, and generics. The UI story is in transition, so strong candidates can work in both UIKit — with its view controller lifecycle and delegate patterns — and SwiftUI's declarative, state-driven model, and can explain the tradeoffs. Concurrency has modernized too: async/await and actors have largely replaced manual GCD juggling, and you want to hear that a candidate keeps work off the main thread without introducing data races. The questions below move from Swift fundamentals through memory and the lifecycle into UI, concurrency, and architecture. Pair a couple of Swift questions with one retain-cycle discussion and one "your app is slow or leaking" scenario, and you will quickly tell whether someone has shipped and maintained a real iOS app.

How to use these questions

Choose six to eight questions across two or three categories rather than the entire list. Open with a Swift fundamentals question, then spend real time on a Memory & ARC scenario — the retain-cycle question alone tells you a lot — and one UI or concurrency discussion. Push every clean answer with "where would a retain cycle form here?" or "which thread does that run on?" to see real depth.

Swift Fundamentals

  1. What is an optional, and what are the safe ways to unwrap one?
  2. What is the difference between a struct and a class, and when do you reach for each?
  3. Explain value semantics versus reference semantics with a concrete example.
  4. What is protocol-oriented programming, and how does it differ from classic inheritance?
  5. What is the difference between let and var, and what does mutating mean on a struct method?
  6. How do generics work in Swift, and when have you used them?
  7. What is the difference between map, compactMap, and flatMap?

Memory & ARC

  1. How does automatic reference counting work, and how is it different from garbage collection?
  2. Explain strong, weak, and unowned references and when to use each.
  3. Show me how a retain cycle forms with a closure capturing self, and how you break it.
  4. What is a capture list, and why do you often write [weak self] in a closure?
  5. How would you find a memory leak in a running iOS app?
  6. When would you use unowned instead of weak, and what is the risk?

UIKit, SwiftUI & Lifecycle

  1. Walk me through the view controller lifecycle — viewDidLoad, viewWillAppear, and the rest.
  2. What is the delegate pattern, and why is it so common in UIKit?
  3. What changes in your mental model moving from UIKit to SwiftUI?
  4. What are @State, @Binding, and @ObservedObject in SwiftUI, and when do you use each?
  5. How does Auto Layout work, and how do you debug a broken constraint?
  6. How do you reuse cells in a table or collection view without display bugs?

Concurrency, Architecture & Performance

  1. What do async/await and actors give you over manual GCD and DispatchQueue work?
  2. Why must UI updates happen on the main thread, and how do you get back to it?
  3. What is a data race, and how does Swift concurrency help prevent one?
  4. Explain MVVM on iOS and how it improves testability over massive view controllers.
  5. How do you persist data — when would you use UserDefaults, Core Data, or a file?
  6. An app feels slow on launch and scroll. How do you diagnose and fix it?

Tips for interviewing iOS candidates

  • Lead into memory management; ARC and retain cycles separate real iOS developers from tutorial followers faster than anything else.
  • Reward candidates who reach for [weak self] and can explain exactly why, not just as a reflex.
  • Check that they keep work off the main thread and understand why UI must run on it.
  • Ask about both UIKit and SwiftUI; most real codebases still mix them, and tradeoff awareness matters.
  • Probe a real performance or crash issue they fixed on a device, not a story about a sample app.
  • Do not over-index on the newest SwiftUI API; Swift and memory fundamentals matter far more.

Frequently asked questions

Hiring iOS developers? JuggleHire ranks, screens, and schedules candidates for you.

JuggleHire goes beyond simple job posting. Leverage custom forms, powerful screening filters, and automated social media previews to find the perfect fit for your team.