Lead with tradeoffs, not buzzwords
Interviewers reward clear comparisons—when to use actors vs queues, diffable data sources vs manual updates, async/await vs completion handlers—and why it matters in production.
Work through realistic prompts on concurrency, UIKit, SwiftUI, and how systems fit together—written for engineers preparing for phone screens, loops, and senior-level conversations.
How to use this site
Pick a topic or browse the full catalog. Open a question for a deeper write-up with code where it helps. Use the exercise on each card to practice explaining your answer out loud or on paper—same rhythm as the interview room.
Questions across Swift, SwiftUI, UIKit, and architecture—the topics that show up in real iOS and iPadOS interviews.
Each card gives you a tight summary, talking points for how to answer, and a small exercise so you rehearse instead of skimming.
Filter by topic, difficulty, or tag when you want to drill one area before a loop or on-site.
What we emphasize
Lead with tradeoffs, not buzzwords
Interviewers reward clear comparisons—when to use actors vs queues, diffable data sources vs manual updates, async/await vs completion handlers—and why it matters in production.
Tie answers to real app behavior
Expect to connect APIs to scrolling, memory, threading, and state. The goal is to sound like someone who has shipped and debugged iOS apps, not someone who only read release notes.
Practice out loud
Use the short exercises on each card to rehearse how you would walk through a problem on a whiteboard or in a live-coding session.
Featured Questions
Show where UIKit snapshot-based updates help and where state modeling still matters
Key points
Practice
Design identifiers for a feed with ads, loading placeholders, and server-driven cards, then describe snapshot update rules.
Compare language-level isolation with traditional queue-based synchronization in production iOS code
Key points
Practice
Refactor a cache manager that uses a private queue so writes become actor-isolated and reads remain ergonomic.
Explain when fixed child tasks make `async let` the better tool, and when dynamic fan-out or incremental result handling pushes you to task groups
Key points
Practice
You first fetch a feed payload, then discover 40 image URLs, but the screen only needs the first 12 decoded thumbnails to render quickly. Describe whether you would use `async let` or a task group, how you would cancel extra work, and what tradeoffs you would mention in an interview.
Topics
Core Swift language rules and reasoning patterns that frequently appear in iOS interviews before the discussion narrows into UI or concurrency specifics
2 questions · Value vs reference semantics, immutability, ownership, optionals, and API design
Modern Swift concurrency, synchronization tradeoffs, and the reasoning interviewers expect around safety and performance
3 questions · Actors, structured concurrency, cancellation, data-race prevention
Collection and table view architecture, rendering performance, and classic UIKit tradeoffs still common in production codebases
2 questions · Diffable data sources, cell identity, rendering pipelines, view-controller design
State ownership, view identity, data flow, and interoperability decisions for modern Apple platform teams
2 questions · Property wrappers, dependency flow, lifecycle, compositional UI design