gitGood.dev
Back to Blog

Top 50 Kotlin & Android Interview Questions for 2026

P
Pat
5 min read

Top 50 Kotlin & Android Interview Questions for 2026

Android interviews in 2026 are leaner and more opinionated than they used to be. Compose has won. Coroutines are the assumed concurrency model. Modularized Gradle builds are table stakes. And almost every loop now includes a system-design round that asks you to design a feature, not a backend.

The questions below are the ones I see come up across FAANG, mid-size product companies, and the better startups. Use them as a study map.


Kotlin Language (1-10)

  1. What is the difference between val and var, and why does the compiler treat val as "read-only" rather than "immutable"?
  2. Explain data class, what equals/hashCode/copy give you, and where the magic stops.
  3. What is the difference between == and === in Kotlin?
  4. Walk me through the four kinds of scope functions (let, run, apply, also, with). When do they make code clearer vs cuter?
  5. What is a sealed class vs a sealed interface? When did sealed interfaces fix a real problem?
  6. Explain inline, noinline, crossinline, and reified - with one realistic use case each.
  7. How does Kotlin's null safety actually work at the bytecode level? What is Intrinsics.checkNotNullParameter?
  8. What is delegation in Kotlin (by), and where have you used it outside lazy?
  9. Compare extension functions and member functions. What happens when both exist?
  10. What is contract DSL (contract { ... }) and why would you ever write one?

Coroutines & Flow (11-22)

  1. Explain structured concurrency. What does coroutineScope { ... } guarantee that GlobalScope does not?
  2. Walk me through Dispatchers.Main, IO, Default, and Unconfined. When have you been bitten by picking wrong?
  3. What is a SupervisorJob and what real bug does it fix?
  4. Cancellation in coroutines is cooperative. What does that mean in practice, and how do you make tight CPU loops cancel?
  5. Compare launch, async, and withContext. When do you actually need async?
  6. What is the difference between suspendCoroutine and suspendCancellableCoroutine?
  7. How does Flow differ from a coroutine? When is Flow the wrong abstraction?
  8. Explain cold vs hot flows. What problem does SharedFlow solve that Flow cannot?
  9. StateFlow vs LiveData - what is the same, what is different, and when do you still pick LiveData?
  10. Walk me through flatMapLatest, flatMapMerge, and flatMapConcat. Pick the right one for a search-as-you-type box and a file-upload queue.
  11. What does flowOn actually move, and what does it not?
  12. How do you test a flow that emits over time without sleeping?

Jetpack Compose (23-32)

  1. How does Compose decide what to recompose? What is a "skippable" function?
  2. What is remember vs rememberSaveable? When does the wrong one cause a state-loss bug?
  3. Why does Compose dislike MutableList<Foo> as state, and what is the right alternative?
  4. Walk me through derivedStateOf. What problem does it solve that a plain val computed = ... does not?
  5. Compose phases: composition, layout, drawing. Where do most performance problems live?
  6. LaunchedEffect, DisposableEffect, SideEffect, produceState - which is correct for "start a websocket while this screen is visible"?
  7. How do you build a custom layout in Compose? Walk me through the Layout { ... } API.
  8. How do you embed a Compose UI in a fragment-based legacy app, and the other way around?
  9. Compose Navigation - how do you handle deep links and type-safe arguments in 2026?
  10. How do you preview a screen that depends on a Hilt-injected ViewModel?

Architecture, Lifecycle, DI (33-42)

  1. Explain the difference between an Activity, a Fragment, and a Compose screen in lifecycle terms. What outlives what?
  2. What is the ViewModel lifecycle, and why does a configuration change not destroy it?
  3. Why do we still bother with SavedStateHandle? When does it earn its complexity?
  4. What is the right way to scope a coroutine in a ViewModel so it cancels when the user leaves?
  5. Hilt vs Koin vs manual DI - what changes about your build, your testing, and your sanity?
  6. When does an interactor / use-case layer pay for itself, and when is it cosplay?
  7. What is unidirectional data flow in an Android app? Walk me through one screen end to end.
  8. How do you pass results between two destinations in Compose Navigation without leaking state into a ViewModel that does not own it?
  9. WorkManager vs JobScheduler vs a foreground service - pick the right one for nightly sync, photo upload, and live location.
  10. How does the new Predictive Back gesture change how you write back-press handlers?

Tooling, Modularization, Performance (43-46)

  1. Walk me through how a multi-module Gradle build pays for itself once an app has 5+ teams.
  2. What is R8, and what does the wrong rule in proguard-rules.pro look like in production?
  3. How do you find a frame-time regression? Walk me through using Macrobenchmark and Perfetto.
  4. App startup is over 2 seconds. Where do you start looking, and what tools do you run?

System Design (47-50)

  1. Design a photo upload pipeline that survives kill, retries on metered networks, and dedupes by content hash.
  2. Design an offline-first messaging app: local DB, server sync, conflict resolution, push.
  3. Design analytics for a feature flag rollout. How do you guarantee at-least-once event delivery?
  4. Design Twitter's home feed for an Android client. Where does paging live, and what does the cache look like?

How to Use This List

Pick three questions per study session. Answer them out loud - to a friend, to a rubber duck, into your phone's voice memos. Watch where you ramble. Tighten those.

If you can do all 50 cleanly, you are ready for any Android loop in 2026.


Drill these in real mock interviews with instant feedback on gitGood - $5/month, not $99.