iOS Senior Developer Interview Answers (4–5 Years Experience)
1. Swift & Language Concepts
Q: What’s the difference between **, ** , and ``?\ A:
• strong holds ownership and retains the instance.
• weak is used for optional references to avoid retain cycles (does not retain).
• unowned is non-optional and used when the reference should never be nil, also avoids retain
cycles.
Q: Explain ** vs ** .\ A:
• @escaping is used when a closure is executed after the function returns (e.g., async
completion).
• @autoclosure automatically wraps an expression in a closure (used for lazy evaluation).
Q: Value type vs reference type in Swift?\ A:
• Value types ( struct , enum ) are copied when assigned.
• Reference types ( class ) share the same memory reference.
Q: When would you use ``?\ A: When initialization is expensive or depends on external state not yet
available.
Q: What are property wrappers?\ A: Property wrappers add logic around property storage (e.g.,
@State , @UserDefault ).
Q: Difference between **, ** , ``?\ A:
• map : transforms each element.
• flatMap : flattens nested arrays.
• compactMap : removes nils and unwraps optionals.
2. Architecture (MVVM, SOLID, Modular)
Q: Explain MVVM with real app usage.\ A: Used in our Todo App and Ride Tracking project. ViewModel
exposes observable state. View binds to state. Services injected for data.
Q: How did you apply SOLID principles?\ A:
• S: Separate View, ViewModel, Service.
• O: Extend ViewModel without modifying.
• L: Protocol-based service replacements.
• I: Fine-grained interfaces (e.g., TodoServiceProtocol ).
• D: ViewModel receives services via constructor.
Q: What is Dependency Injection?\ A: Passing dependencies (e.g., API client) from outside, improves
testability and modularity.
1
Q: How did you modularize?\ A: Used SPM to split features like TodoFeature , AuthFeature ,
SharedModels , CoreNetwork , etc.
3. SwiftUI & UIKit
Q: How is data flow managed in SwiftUI?\ A: With property wrappers: @State , @Binding ,
@ObservedObject , @EnvironmentObject .
Q: How does SwiftUI update views?\ A: Automatically on state change through its diffing engine.
Q: Use UIKit view in SwiftUI?\ A: Use UIViewControllerRepresentable or
UIViewRepresentable .
Q: UIKit vs SwiftUI in production?\ A: UIKit is mature and flexible; SwiftUI is declarative and modern,
better for new apps or simple UIs.
Q: When do you use Combine?\ A: For data binding, handling streams (e.g., network responses,
validation).
4. Networking & Persistence
Q: How do you use `` for networking?\ A:
let data = try await URLSession.shared.data(for: request)
Q: How do you store secure tokens?\ A: Using Keychain via a SecureStore abstraction.
Q: CoreData vs Realm vs SwiftData?\ A:
• CoreData: Apple native, powerful but complex.
• Realm: Lightweight, fast, easy migration.
• SwiftData: New and Swift-first.
Q: How do you handle JWT?\ A: Decode using Base64 , extract payload, check expiration, store in
Keychain.
5. Testing
Q: TDD Approach?\ A: Write test > write failing code > make it pass > refactor. Used it in
TodoFeature .
Q: How do you mock services?\ A: Create protocol , implement MockService , inject into
ViewModel.
Q: Unit vs UI Testing?\ A: Unit tests logic, UI tests full flow and interactions.
2
Q: Combine testing?\ A: Use XCTestExpectation or TestScheduler .
6. CI/CD, DevOps, Fastlane
Q: How did you use Fastlane?\ A:
• build_ios_app , gym , sigh , supply , pilot
• Automate build, test, upload to TestFlight
Q: How do you handle signing?\ A: Use match or disable with CODE_SIGNING_ALLOWED=NO for CI
builds
Q: Jenkins / GitHub Actions?\ A: Both used. Jobs include checkout, SPM fetch, xcodebuild , archive.
7. Security
Q: How do you secure API tokens?\ A: Store in Keychain. Avoid UserDefaults.
Q: What is ATS?\ A: App Transport Security. Enforces HTTPS and strong encryption. Configurable in
Info.plist .
8. Design Patterns
Q: Where did you use Singleton?\ A: For services like SocketService , UserSession , etc.
Q: What is Coordinator Pattern?\ A: Manages navigation flow in UIKit cleanly.
Q: Builder Pattern use case?\ A: For building complex requests or models step-by-step.
9. Push Notifications & Real-Time
Q: FCM setup steps?
• Setup Firebase
• Add APNs Key
• Upload to Firebase
• Configure UNUserNotificationCenter & MessagingDelegate
Q: WebSocket use case?
• Real-time driver tracking (driver → customer updates)
• SocketIO or URLSessionWebSocketTask
3
10. System Design
Q: How to design an Uber-like app?
• Module: Auth, Location, Maps, Ride Status, Notifications
• Use: CoreLocation, GoogleMaps, Socket for real-time, Firebase for backend
• MVVM + Modular + SOLID architecture
• Caching, retry logic, testing, scalability
Let me know if you want:
• 📄 PDF export
• ✏️ Editable Notion doc
• 🧪 Mock interview session with these
• ✅ Flashcards / cheatsheet per topic