Study plan

Interview in 2 days? Take the crash plan: the most-asked questions and your weak spots, up to 30 a day. Or take 7 or 30 days.

Pick your plan

With JavaScript on, this builds a day-by-day plan from how often each question comes up in interviews and from your weak spots. Without it, start with the most-asked questions below.

Most-asked questions (57)

  1. Sequential await vs async let
  2. async/await vs completion handlers
  3. async let vs TaskGroup
  4. What is an actor?
  5. @MainActor view models
  6. Sendable and Swift 6 strict checking
  7. Serial vs concurrent queues
  8. DispatchQueue.main.sync on the main thread
  9. SwiftUI vs UIKit: key differences
  10. Which property wrapper for which data?
  11. @State vs a plain var
  12. @StateObject vs @ObservedObject
  13. @Observable model keeps resetting
  14. @Observable vs ObservableObject
  15. @Binding and the $ prefix
  16. .task vs .onAppear + Task
  17. NavigationStack and deep links
  18. Optionals and why Swift has them
  19. Value types vs reference types
  20. Protocols vs abstract classes
  21. Closures and capture lists
  22. @escaping vs non-escaping closures
  23. Opaque types (some) vs existentials (any)
  24. How ARC works
  25. Retain cycles and how to break them
  26. Retain cycles in closures
  27. weak vs unowned
  28. The UIViewController lifecycle
  29. frame vs bounds
  30. Table and collection view cell reuse
  31. Passing data between view controllers
  32. Making a network request
  33. Codable and mismatched keys
  34. debounce vs throttle
  35. Combine vs async/await
  36. Preventing stale search results
  37. Choosing the right storage
  38. Using UserDefaults correctly
  39. Storing secrets in the Keychain
  40. SwiftData
  41. MVC, MVVM, VIPER and TCA compared
  42. MVVM done right
  43. Dependency injection
  44. Writing good unit tests with XCTest
  45. Testing async code
  46. Swift Testing
  47. Protecting API keys
  48. Profiling an iOS app
  49. Dropped frames and hitches
  50. App and scene lifecycle states
  51. How push notifications are delivered
  52. In-app purchases with StoreKit 2
  53. Privacy manifests
  54. Supporting VoiceOver
  55. Supporting Dynamic Type
  56. A thread-safe LRU cache
  57. Offline-first architecture