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)
- What is the difference between
valandvar, and why does the compiler treatvalas "read-only" rather than "immutable"? - Explain
data class, whatequals/hashCode/copygive you, and where the magic stops. - What is the difference between
==and===in Kotlin? - Walk me through the four kinds of scope functions (
let,run,apply,also,with). When do they make code clearer vs cuter? - What is a sealed class vs a sealed interface? When did sealed interfaces fix a real problem?
- Explain
inline,noinline,crossinline, andreified- with one realistic use case each. - How does Kotlin's null safety actually work at the bytecode level? What is
Intrinsics.checkNotNullParameter? - What is delegation in Kotlin (
by), and where have you used it outsidelazy? - Compare extension functions and member functions. What happens when both exist?
- What is contract DSL (
contract { ... }) and why would you ever write one?
Coroutines & Flow (11-22)
- Explain structured concurrency. What does
coroutineScope { ... }guarantee that GlobalScope does not? - Walk me through
Dispatchers.Main,IO,Default, andUnconfined. When have you been bitten by picking wrong? - What is a
SupervisorJoband what real bug does it fix? - Cancellation in coroutines is cooperative. What does that mean in practice, and how do you make tight CPU loops cancel?
- Compare
launch,async, andwithContext. When do you actually needasync? - What is the difference between
suspendCoroutineandsuspendCancellableCoroutine? - How does Flow differ from a coroutine? When is Flow the wrong abstraction?
- Explain cold vs hot flows. What problem does
SharedFlowsolve thatFlowcannot? StateFlowvsLiveData- what is the same, what is different, and when do you still pickLiveData?- Walk me through
flatMapLatest,flatMapMerge, andflatMapConcat. Pick the right one for a search-as-you-type box and a file-upload queue. - What does
flowOnactually move, and what does it not? - How do you test a flow that emits over time without sleeping?
Jetpack Compose (23-32)
- How does Compose decide what to recompose? What is a "skippable" function?
- What is
remembervsrememberSaveable? When does the wrong one cause a state-loss bug? - Why does Compose dislike
MutableList<Foo>as state, and what is the right alternative? - Walk me through
derivedStateOf. What problem does it solve that a plainval computed = ...does not? - Compose phases: composition, layout, drawing. Where do most performance problems live?
LaunchedEffect,DisposableEffect,SideEffect,produceState- which is correct for "start a websocket while this screen is visible"?- How do you build a custom layout in Compose? Walk me through the
Layout { ... }API. - How do you embed a Compose UI in a fragment-based legacy app, and the other way around?
- Compose Navigation - how do you handle deep links and type-safe arguments in 2026?
- How do you preview a screen that depends on a Hilt-injected ViewModel?
Architecture, Lifecycle, DI (33-42)
- Explain the difference between an Activity, a Fragment, and a Compose screen in lifecycle terms. What outlives what?
- What is the
ViewModellifecycle, and why does a configuration change not destroy it? - Why do we still bother with
SavedStateHandle? When does it earn its complexity? - What is the right way to scope a coroutine in a
ViewModelso it cancels when the user leaves? - Hilt vs Koin vs manual DI - what changes about your build, your testing, and your sanity?
- When does an interactor / use-case layer pay for itself, and when is it cosplay?
- What is unidirectional data flow in an Android app? Walk me through one screen end to end.
- How do you pass results between two destinations in Compose Navigation without leaking state into a ViewModel that does not own it?
- WorkManager vs JobScheduler vs a foreground service - pick the right one for nightly sync, photo upload, and live location.
- How does the new Predictive Back gesture change how you write back-press handlers?
Tooling, Modularization, Performance (43-46)
- Walk me through how a multi-module Gradle build pays for itself once an app has 5+ teams.
- What is R8, and what does the wrong rule in
proguard-rules.prolook like in production? - How do you find a frame-time regression? Walk me through using Macrobenchmark and Perfetto.
- App startup is over 2 seconds. Where do you start looking, and what tools do you run?
System Design (47-50)
- Design a photo upload pipeline that survives kill, retries on metered networks, and dedupes by content hash.
- Design an offline-first messaging app: local DB, server sync, conflict resolution, push.
- Design analytics for a feature flag rollout. How do you guarantee at-least-once event delivery?
- 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.