Mobile App Developer question bank
100 questions. Filter by level and skill, track what you've solved, and see how many people get each one right.
- Android activity start order
- Network calls on the main thread
- Safely unwrapping a Swift optional
- Kotlin Elvis operator
- StatelessWidget or StatefulWidget
- When to ask for permissions
- Showing a long list
- Where to store an auth token
- Kotlin val with a mutable list
- Swift struct assignment copies
- Swift class shared reference
- Kotlin data class equality
- Compose modifier order
- Layering views in SwiftUI
- Flutter hot reload vs restart
- Why list items need keys
- What AndroidManifest.xml is for
- Crash when asking for the camera
- Why use dp and points
- Sharing text to any app
- Reading another app's files
- Saving a theme preference
- Decoding JSON with extra keys
- launch vs async in coroutines
- What await means in Swift
- What a push token is for
- Play Console rejects the build version
- Why apps are code signed
- Icon button read as just button
- Minimum touch target size
- Dart null-aware operators
- Calling setCount twice
- Testing speed on a debug build
- Supporting dark mode properly
- Surviving screen rotation
- remember vs rememberSaveable
- @State vs @Binding in SwiftUI
- Offline-first data flow
- React Native New Architecture
- Reliable background upload
- Verified links that open the app
- Out of memory with images
- Exposing UI state from a ViewModel
- LaunchedEffect keyed on Unit
- collectAsStateWithLifecycle benefit
- Owning an @Observable model
- SwiftUI .task when leaving a screen
- Updating UI from a detached task
- viewModelScope after the screen closes
- Blocking file read in a coroutine
- Room DAO returning a Flow
- Room version bump without migration
- const constructors in Flutter
- setState called after dispose
- FutureBuilder refetching on rebuild
- Listener without effect cleanup
- Unreadable iOS crash stack traces
- Timer counter stuck at one
- Relying on silent pushes for sync
- Notifications missing on Android 13
- Duplicate posts in an infinite feed
- Retry policy after an outage
- Avoiding repeated config downloads
- Flaky UI test timing
- Unit testing a ViewModel
- Turning off a feature without a release
- What fastlane match solves
- Release build breaks JSON parsing
- Testing process death
- Too many recompositions
- Memory leak with a closure
- Offline edit conflicts
- Jank when parsing a big JSON
- Crash spike during a release
- Certificate pinning trade-off
- Slow cold start
- Collecting a cold Flow twice
- Polling loop that ignores cancellation
- One failing request in coroutineScope
- Actor reentrancy in an image cache
- Task vs Task.detached
- unowned self in a network callback
- When a Swift array is copied
- derivedStateOf for a scroll button
- Wrong row expanded after insert
- Stale callback in a long effect
- PendingIntent crash on Android 12
- Foreground service fails on Android 14
- Exported activity loading any URL
- Keychain read fails in background
- When a BGAppRefreshTask runs
- Swapped Flutter tiles keep colors
- Dart microtask and event order
- Animation stutters while JS is busy
- Memoized rows still re-render
- Stopping cheaters calling the API
- Parallel token refresh logs users out
- Duplicate orders from offline retries
- FCM handler skipped in background
- Deep link lost after login