Interview Question Bank
100+ questions Android engineers actually face at L4–L6 interviews, grouped by category. Treat as drill material — for each, prepare a 30-second answer + a 2-minute deep dive.
Kotlin (20 questions)
Language fundamentals
valvsvarvsconst val— when to use each?- What is null safety and how does the type system enforce it?
- Explain the difference between
?:,?., and!!. - What's the difference between a
classanddata class? When NOT to use data class? - Sealed class vs sealed interface — pros / cons?
lateinitvslazy— when to use each?- What does
inlinedo? When does it matter? - What's a value class (
@JvmInline value class)? When does it box? - Object expression vs object declaration vs companion object — three?
- Explain extension functions. Can they access private members?
Coroutines
launchvsasync— when to use each?- What is structured concurrency? Why does it matter?
- Explain
CoroutineExceptionHandlervs try/catch — where does each work? JobvsSupervisorJob— how do they differ in failure propagation?- What happens if a coroutine is cancelled mid-await?
- Difference between
Dispatchers.IO,Default,Main,Main.immediate,Unconfined? FlowvsChannel— when to pick each?- Cold vs hot flow — example of each?
- What does
flowOnactually do? Does it affect the collector? SharedFlowvsStateFlow— semantic differences?
Jetpack Compose (25 questions)
Basics
- What makes a function a Composable? What's
@Composabledoing under the hood? - Explain recomposition. When does it happen? When is it skipped?
- What is positional memoization in the slot table?
remembervsrememberSaveablevsSavedStateHandle— when each?- Why does Compose need stable parameters? What is
@Immutablevs@Stable?
State + side effects
mutableStateOfvsmutableIntStateOf— difference?derivedStateOf— when is it useful?- Explain
LaunchedEffectvsDisposableEffectvsSideEffect. - When would you use
rememberUpdatedState? snapshotFlow— what does it do?
Layout + drawing
- Modifier order:
padding(8.dp).background(Red)vsbackground(Red).padding(8.dp)— what's the difference? - What's a Slot API? Give an Android example.
AndroidViewvsComposeView— when each?- Why is
LazyColumnnecessary vsColumnwith scroll? - Explain
Modifier.graphicsLayer { }vsModifier.rotate()— performance difference.
Performance
- What is composition vs measure vs draw phase? Which can graphicsLayer skip?
- How do you detect a composable that recomposes too often?
- Why does
List<T>cause re-composition issues? How do you fix it? - Strong skipping mode — what does it change?
- Compose compiler metrics — what do you look for?
Navigation + integration
- Navigation Compose type-safe routes — how do they work?
- How do you handle deep links in Compose Navigation?
- Shared element transitions — basic mechanism?
- How does a Composable preserve state across navigation?
- Compose in a Fragment — what's the correct
ViewCompositionStrategy?
Architecture (15 questions)
- MVVM vs MVI — when to pick each?
- What is Unidirectional Data Flow? Why is it preferred?
- Explain Single Source of Truth for an Android app.
- What's the Repository pattern? Why use it?
- Hilt vs Koin vs Dagger 2 — pros/cons?
@Singletonvs@ViewModelScopedvs@ActivityScoped— when each?- Explain
@AssistedInjectand when you'd use it. - What is Clean Architecture? Worth the effort for a 5-screen app?
- How would you model offline-first messaging?
- Sealed error hierarchies vs
Result<T>— when to pick each? - Explain typed errors with
Outcome<T, E>or Arrow'sEither. - Why are value classes useful in domain modeling?
- What's an aggregate root? Give an Android example.
- How do you enforce module boundaries in a 30-module app?
- When does dynamic feature delivery make sense vs install-time modules?
Networking (10 questions)
- REST vs GraphQL vs gRPC — when each?
- Why use OkHttp interceptors? Give three real interceptor examples.
- How do you implement auth + token refresh with thundering-herd protection?
- How does Paging 3 work? PagingSource vs RemoteMediator?
- Explain idempotency keys and why they matter for payments.
- WebSocket reconnection strategy with exponential backoff + jitter — sketch?
- How do you cache HTTP responses with OkHttp?
- What is certificate pinning? When does it backfire?
- How do you handle a 401 in your network stack?
- Coil vs Glide — pros/cons?
Data & persistence (10 questions)
- Room migrations — how do you write + test one?
- What is the Room
@Transactionannotation? Why critical with@Relation? - How does Room's Flow auto-invalidate?
- Preferences DataStore vs Proto DataStore — when each?
- How do you migrate from SharedPreferences to DataStore?
- Explain SQLCipher for Room encryption.
- Scoped storage on Android 10+ — what changed?
- Photo Picker vs READ_MEDIA_IMAGES — which to use and why?
- What does EncryptedSharedPreferences actually encrypt? Where is the key?
- When does Room emit Flow updates across processes?
Concurrency + performance (10 questions)
- What is jank? What causes it? How do you measure it?
- What is the frame budget on a 90Hz device?
- How does a baseline profile work? What does it speed up?
- Explain Doze and App Standby. How does WorkManager interact?
viewModelScopevslifecycleScope— when each?- How does a foreground service differ from a regular Service since Android 8?
- What's the difference between expedited work and regular periodic work?
- Memory profiling: how do you find a leak?
- What is Strict Mode? What can it detect?
- OkHttp connection pool — what is it; how big should it be?
Security + testing (10 questions)
- What is Play Integrity? When do you use Standard vs Classic API?
- HIPAA — what technical controls must your app implement?
- Biometric-bound Keystore key — how does it work?
- Explain
setUserAuthenticationRequired(true)on a Keystore key. - Testing pyramid for Android — what's the ratio?
StandardTestDispatchervsUnconfinedTestDispatcher— when each?- What's MockK's
coVerifyvsverify? - Why are fakes better than mocks for domain tests?
- What does Turbine do? Give one assertion API.
runTestvsrunBlocking— when each?
System design (10 questions)
- Design an offline-first chat app. Walk me through.
- Design Instagram's photo feed for mobile.
- Design Uber's rider app — request → match → ride.
- Design a fitness tracker with Wear OS companion.
- Design a video-sharing app like TikTok (upload + feed).
- Design a banking app that survives bank API outages.
- Design a collaborative editor (like Google Docs) on mobile.
- Design a podcast app with offline playback.
- Design a music streaming app with cast support.
- Design an e-commerce checkout flow with payment + inventory.
Behavioral (15 questions)
- Tell me about a time you disagreed with a teammate.
- Tell me about your most complex technical project.
- Tell me about a bug you shipped and how you handled it.
- Tell me about a time you missed a deadline.
- Tell me about a time you mentored someone junior.
- Tell me about a time you influenced without authority.
- Tell me about a technical decision you made that turned out wrong.
- Tell me about a time you received difficult feedback.
- Tell me about a time you changed your mind.
- Tell me about your favorite project. Why?
- Tell me about a time you went outside your role.
- Tell me about a time you had to learn something quickly.
- Tell me about a conflict you resolved between teams.
- What's the hardest production incident you've worked through?
- Tell me about a time you said no to a feature request.
Compensation + negotiation (5 questions)
- What are your salary expectations? (correct answer: deflect)
- What's your current compensation? (correct answer: deflect or reframe)
- Why are you leaving your current job?
- What are you looking for in your next role?
- You have 24 hours to decide — can you give us an answer by EOD? (correct answer: push back)
How to use this bank
Where to deep-dive
| Topic | Chapter |
|---|---|
| Coroutines / Flow | Coroutines Deep Dive |
| Compose internals | Compose Internals |
| MVI | MVI & State Machines |
| Networking | Retrofit & OkHttp |
| Performance | Memory + LeakCanary, Jank Hunting |
| Security | Crypto + Keystore |
| System design | System Design Walkthroughs |
| Behavioral | Behavioral & Negotiation |
| Coding patterns | Coding Interview Patterns |