Android interview practice

Real Android interview questions as two-minute exercises. Commit to an answer first, then check it and read the full explanation with current Kotlin code.

Prefer to just read? Every question has Show answer. Progress is saved on this device only, separately from the iOS course.

  1. PredictPick what you think happens, or tap the line with the bug.
  2. CheckSee whether you were right, and why every other option is wrong.
  3. Learn itRead the 30-second answer, then the deep dive and follow-ups.

– interview-ready · 200 questions

– of 200 tried

Saved on this device. Interview-ready means you got it right on two different days. Guesses and hints count for less.

Daily 5

The same five questions for everyone today, with a grid to share. Needs JavaScript. Start with the first question.

Open today's Daily 5 page

Readiness by topic

Your progress is saved in this browser only. With JavaScript on, this shows each topic's readiness and lets you export your progress to a file or import it on another device.

Topics

Coroutines

Suspend functions, scopes, dispatchers, structured concurrency, cancellation and errors: the questions every senior Android loop opens with.

18 questions

Flow and StateFlow

Cold and hot streams, StateFlow and SharedFlow, operators, one-off events and safe collection from the UI.

14 questions

Jetpack Compose

State, recomposition, stability, side effects, lists, modifiers and navigation: how Compose really decides what to redraw.

22 questions

Lifecycle and app components

Activities, Fragments, configuration changes, process death, intents, services, receivers and permissions.

18 questions

Kotlin language

Null safety, classes, equality, scope functions, generics, inline functions and what Kotlin 2 and the K2 compiler changed.

20 questions

Views, layouts and RecyclerView

The View system questions still asked in 2026: measuring and drawing, ConstraintLayout, RecyclerView, custom views and resources.

8 questions

Architecture and dependency injection

Layers, unidirectional data flow, MVVM and MVI, repositories, Hilt and modularisation for apps that keep growing.

15 questions

Data and storage

Room, DataStore, migrations, Paging, scoped storage and what to wipe on logout.

10 questions

Background work and notifications

WorkManager, expedited and long-running work, Doze, exact alarms, notifications and push messages.

7 questions

Networking

Retrofit and OkHttp, serialization, interceptors, token refresh, retries, caching and image loading.

8 questions

Performance

The main thread, ANRs, jank, memory leaks, startup, Baseline Profiles, profiling and app size.

12 questions

Testing

Local and instrumented tests, fakes, coroutine and Flow testing, Compose UI tests, screenshots and flaky tests.

9 questions

Security

Keystore, secure storage, biometrics, network security, exported components, WebView, secrets and Play Integrity.

9 questions

Runtime, build and Gradle

ART and DEX, R8, KSP, Gradle builds and variants, garbage collection, threads, and light Java and OOP.

10 questions

Modern Android

Edge-to-edge, predictive back, deep links, accessibility, passkeys, widgets, KMP, on-device AI and target SDK upgrades.

10 questions

Mobile system design

Offline-first data, feeds, chat, images, uploads, billing, location, flags and rollouts, analytics, and incidents.

10 questions

All questions

Coroutines

  1. What happens to viewModelScope work on rotation?Predict
  2. Coroutines vs threadsPredict
  3. What does suspend mean?Pick the fix
  4. launch vs asyncPredict · timeline
  5. Structured concurrencyPredict
  6. CoroutineScope vs CoroutineContextPredict
  7. Choosing a dispatcherPick the fix
  8. withContext and main-safetyFill the blank
  1. Cooperative cancellationSpot the bug
  2. Don't swallow CancellationExceptionSpot the bug
  3. Job vs SupervisorJobPredict
  4. Where CoroutineExceptionHandler worksPick the fix
  5. Loading several things in parallelOrder the steps
  6. withTimeout vs withTimeoutOrNullPredict
  7. Shared mutable statePick the fix
  8. Collecting safely from the UIPick the fix
  9. Why not GlobalScope?Pick the fix
  10. runBlocking on AndroidPredict

Flow and StateFlow

  1. Cold vs hot flowsPredict
  2. StateFlow vs SharedFlowPredict
  3. stateIn and WhileSubscribed(5_000)Pick the fix
  4. One-off events from a ViewModelPick the fix
  5. map, filter and transformPredict
  6. Search-as-you-type with FlowPick the fix
  7. combine vs zipPredict
  8. flowOn and context preservationSpot the bug
  1. Handling errors in a FlowPredict
  2. Wrapping a listener with callbackFlowSpot the bug
  3. buffer, conflate and collectLatestPredict · timeline
  4. Why didn't my StateFlow update?Spot the bug
  5. LiveData vs StateFlowPick the fix
  6. ChannelsPredict

Jetpack Compose

  1. Compose vs the View systemPick the fix
  2. What triggers recomposition?Predict
  3. remember vs rememberSaveablePredict
  4. State hoistingPick the fix
  5. Stability and skippingPredict
  6. Deferring state readsPick the fix
  7. derivedStateOfPick the fix
  8. LaunchedEffect and its keysPredict
  1. DisposableEffectFill the blank
  2. rememberCoroutineScopePick the fix
  3. rememberUpdatedStateSpot the bug
  4. Keys in LazyColumnPredict
  5. Why modifier order mattersPredict
  6. CompositionLocalPick the fix
  7. collectAsStateWithLifecycleFill the blank
  8. Navigation in ComposePick the fix
  9. Previews that scaleOrder the steps
  10. Slot APIsSpot the bug
  11. State lists and mutationSpot the bug
  12. Compose and Views togetherPick the fix
  13. Strong skipping modePredict
  14. Choosing an animation APIPick the fix

Lifecycle and app components

  1. The Activity lifecycleOrder the steps
  2. Lifecycle order: A opens BOrder the steps
  3. Configuration changesPick the fix
  4. Process deathPredict
  5. SavedStateHandleFill the blank
  6. Fragment and view lifecyclesSpot the bug
  7. How a ViewModel survivesPick the fix
  8. Launch modes and tasksPredict
  1. Explicit and implicit intentsPick the fix
  2. PendingIntent and mutabilityPick the fix
  3. The Activity Result APIPick the fix
  4. Services and foreground service typesPick the fix
  5. Broadcast receiversPick the fix
  6. Content providersPick the fix
  7. Runtime permissionsOrder the steps
  8. Application class and startup workPick the fix
  9. TransactionTooLargeExceptionPick the fix
  10. Parcelable vs SerializablePick the fix

Kotlin language

  1. How Kotlin code runs on AndroidOrder the steps
  2. Null safety and !!Predict
  3. val, var and const valPredict
  4. Data classesPredict
  5. Sealed classes and exhaustive whenPredict
  6. == vs ===Predict
  7. let, run, with, apply, alsoPredict
  8. Extension functionsPredict
  1. lateinit vs by lazyPredict
  2. inline functions and reifiedPick the fix
  3. Lambdas, function types and fun interfacesPredict
  4. object, companion object and singletonsPick the fix
  5. Generics: in, out and star projectionPredict
  6. Delegation with byPredict
  7. Smart casts and their limitsPredict
  8. Value classesPredict
  9. Collections vs sequencesPredict
  10. Kotlin 2 and the K2 compilerPick the fix
  11. @JvmStatic, @JvmField and @JvmOverloadsPick the fix
  12. Visibility: internal and friendsPick the fix

Views, layouts and RecyclerView

  1. How a View is measured, laid out and drawnPick the fix
  2. ConstraintLayoutPick the fix
  3. RecyclerView, ListAdapter and DiffUtilSpot the bug
  4. Writing a custom ViewSpot the bug
  5. Resources and qualifiersPick the fix
  6. View Binding vs findViewById and Data BindingPick the fix
  7. Touch event dispatchPredict
  8. Large screens and window size classesPick the fix

Architecture and dependency injection

  1. UI, domain and data layersPick the fix
  2. Unidirectional data flow and UiStateOrder the steps
  3. MVVM vs MVIPick the fix
  4. Repositories and a single source of truthPick the fix
  5. Use cases and the domain layerPick the fix
  6. Dependency injectionPick the fix
  7. Hilt basicsFill the blank
  8. Hilt components and scopesPick the fix
  1. Runtime arguments with HiltPick the fix
  2. ModularisationPick the fix
  3. Modelling errorsPick the fix
  4. SOLID on AndroidPick the fix
  5. Design patterns you use every dayPredict
  6. Navigation between feature modulesOrder the steps
  7. Hilt vs Koin vs manual DIPick the fix

Data and storage

  1. Room basicsPick the fix
  2. How Room Flow queries updatePredict
  3. Relations, transactions and N+1 queriesPick the fix
  4. Room migrationsOrder the steps
  5. DataStore vs SharedPreferencesPick the fix
  6. Scoped storagePick the fix
  7. Paging 3Pick the fix
  8. What to clear on logoutOrder the steps
  9. Database performancePick the fix
  10. Cache freshness and stale dataPick the fix

Background work and notifications

  1. WorkManager basicsPick the fix
  2. Chaining work and constraintsOrder the steps
  3. Expedited and long-running workPick the fix
  4. Doze and App StandbyPick the fix
  5. Exact alarmsPick the fix
  6. Notifications and channelsOrder the steps
  7. Push messages with FCMPredict

Networking

  1. Retrofit with coroutinesPick the fix
  2. OkHttp interceptorsPick the fix
  3. Refreshing an expired token onceSpot the bug
  4. kotlinx.serialization vs GsonPredict
  5. Retries with exponential backoffPick the fix
  6. HTTP caching with OkHttpPick the fix
  7. Image loadingPredict
  8. Handling offline and flaky networksPick the fix

Performance

  1. Looper, Handler and the main threadPredict
  2. ANRs: causes and fixesPick the fix
  3. Jank and dropped framesOrder the steps
  4. Memory leaksSpot the bug
  5. Cold start timePick the fix
  6. Baseline ProfilesOrder the steps
  7. Smooth long listsPick the fix
  8. StrictModeFill the blank
  1. Profiling toolsPick the fix
  2. Macrobenchmark and MicrobenchmarkPick the fix
  3. Reducing app sizeOrder the steps
  4. Battery-friendly appsPick the fix

Testing

  1. Local vs instrumented testsPick the fix
  2. Fakes, mocks and stubsPick the fix
  3. Testing coroutines with runTestPredict
  4. Testing FlowsPick the fix
  5. Testing a ViewModelOrder the steps
  6. Compose UI testsFill the blank
  7. Screenshot testsPick the fix
  8. Testing Room and migrationsOrder the steps
  9. Flaky testsPick the fix

Security

  1. Storing tokens and secrets on devicePick the fix
  2. Android KeystoreFill the blank
  3. Biometric authenticationPick the fix
  4. Network security config and pinningPick the fix
  5. Exported components and intent safetySpot the bug
  6. WebView securityPick the fix
  7. API keys and secrets in the APKPick the fix
  8. Play Integrity APIOrder the steps
  9. Least privilege and privacy APIsPick the fix

Runtime, build and Gradle

  1. ART: interpreter, JIT and AOTOrder the steps
  2. R8, shrinking and keep rulesPick the fix
  3. kapt vs KSPPick the fix
  4. Speeding up Gradle buildsPick the fix
  5. Build types, flavors and variantsPredict
  6. Version catalogs and convention pluginsPick the fix
  7. Garbage collection on AndroidSpot the bug
  8. Threads, @Volatile and synchronizedPick the fix
  9. OOP principles in KotlinPick the fix
  10. Interface vs abstract classPredict

Modern Android

  1. Edge-to-edge and window insetsPick the fix
  2. Predictive backPick the fix
  3. Deep links and App LinksPick the fix
  4. Accessibility in ComposePick the fix
  5. Passkeys and Credential ManagerOrder the steps
  6. Home screen widgets with GlancePick the fix
  7. Kotlin MultiplatformFill the blank
  8. On-device AI featuresOrder the steps
  9. Target SDK upgradesPick the fix
  10. Foldables and large screensPick the fix

Mobile system design

  1. Designing an offline-first appOrder the steps
  2. Designing a social feedPick the fix
  3. Designing a chat appPick the fix
  4. Designing an image loading libraryOrder the steps
  5. Designing reliable uploadsPick the fix
  6. Handling a crash spike after releaseOrder the steps
  7. Feature flags and staged rolloutsPick the fix
  8. Designing subscriptions with Play BillingOrder the steps
  9. Designing location trackingPick the fix
  10. Designing an analytics or logging SDKPick the fix

Sources: Question outline adapted from Android-Interview-Questions by Mohsen Mirhoseini, licensed under Apache 2.0. We reorganised the questions, rewrote every answer and added new ones. Credits and license