Skip to content
Preptima

Mobile Engineering interview questions and answers

iOS, Android, and cross-platform architecture at scale.

8 published across 2 topics.

iOS Architecture

3 questions

SwiftUI, modularization, and memory management.

hardDesignScenario

You're asked to break up a five-year-old iOS app that has become one enormous Xcode target - how would you approach modularising it, and what does it cost you?

Modularising means carving the app into Swift packages along feature and layer boundaries so build graphs and ownership become explicit, at the cost of slower initial builds, careful dependency direction, and real discipline about what each module exposes publicly. Use this IOS answer to show the decision, trade-off, and evidence rather than a memorised definition.

4 minsenior, staff
mediumConceptScenario

How do retain cycles happen in Swift closures and delegates, and how would you find one in an app that is slowly leaking memory?

A closure or delegate reference that captures its owner strongly, while the owner also holds that closure or delegate strongly, forms a cycle ARC cannot break on its own, and the fix is weak or unowned capture chosen by lifetime, not by habit. Use this IOS answer to show the decision, trade-off, and evidence rather than a memorised definition.

4 minmid, senior
mediumConceptScenario

Your SwiftUI screen redraws constantly and scrolling stutters - how would you find out why, and what state-management mistake usually causes it?

A re-render storm usually comes from one large ObservableObject whose @Published properties fan out too widely, so any single field change invalidates every view reading the object rather than just the row that changed. Use this swiftui answer to show the decision, trade-off, and evidence rather than a memorised definition. It also connects state management to the point an interviewer is testing.

4 minmid, senior
All 3 in iOS Architecture

Kotlin coroutines, Compose, and background processing.

hardScenarioDesignConcept

An Android app queues actions while offline. After the process is killed and restarted, some actions sync twice and the user sees duplicate orders. How do you design the fix?

The queue records that work was sent but cannot know whether the server received it, so any crash between sending and recording the acknowledgement replays the action. At-least-once delivery is the only thing a mobile client can guarantee, so the fix is to make the operation idempotent with a client-generated key persisted alongside the queued action, not to try harder to deliver exactly once.

4 minmid, senior, staff
mediumConceptScenario

What does structured concurrency actually give you in Kotlin coroutines, and how does a coroutine scope leak happen despite it?

Structured concurrency ties a coroutine's lifetime to a CoroutineScope so cancellation propagates automatically, but a leak still happens when a coroutine is launched in a scope that outlives the component that should own it, such as GlobalScope or a manually retained scope nobody cancels. Use this KOTLIN answer to show the decision, trade-off, and evidence rather than a memorised definition.

4 minmid, senior
All 5 in Android Architecture