Skip to main content

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

  1. val vs var vs const val — when to use each?
  2. What is null safety and how does the type system enforce it?
  3. Explain the difference between ?:, ?., and !!.
  4. What's the difference between a class and data class? When NOT to use data class?
  5. Sealed class vs sealed interface — pros / cons?
  6. lateinit vs lazy — when to use each?
  7. What does inline do? When does it matter?
  8. What's a value class (@JvmInline value class)? When does it box?
  9. Object expression vs object declaration vs companion object — three?
  10. Explain extension functions. Can they access private members?

Coroutines

  1. launch vs async — when to use each?
  2. What is structured concurrency? Why does it matter?
  3. Explain CoroutineExceptionHandler vs try/catch — where does each work?
  4. Job vs SupervisorJob — how do they differ in failure propagation?
  5. What happens if a coroutine is cancelled mid-await?
  6. Difference between Dispatchers.IO, Default, Main, Main.immediate, Unconfined?
  7. Flow vs Channel — when to pick each?
  8. Cold vs hot flow — example of each?
  9. What does flowOn actually do? Does it affect the collector?
  10. SharedFlow vs StateFlow — semantic differences?

Jetpack Compose (25 questions)

Basics

  1. What makes a function a Composable? What's @Composable doing under the hood?
  2. Explain recomposition. When does it happen? When is it skipped?
  3. What is positional memoization in the slot table?
  4. remember vs rememberSaveable vs SavedStateHandle — when each?
  5. Why does Compose need stable parameters? What is @Immutable vs @Stable?

State + side effects

  1. mutableStateOf vs mutableIntStateOf — difference?
  2. derivedStateOf — when is it useful?
  3. Explain LaunchedEffect vs DisposableEffect vs SideEffect.
  4. When would you use rememberUpdatedState?
  5. snapshotFlow — what does it do?

Layout + drawing

  1. Modifier order: padding(8.dp).background(Red) vs background(Red).padding(8.dp) — what's the difference?
  2. What's a Slot API? Give an Android example.
  3. AndroidView vs ComposeView — when each?
  4. Why is LazyColumn necessary vs Column with scroll?
  5. Explain Modifier.graphicsLayer { } vs Modifier.rotate() — performance difference.

Performance

  1. What is composition vs measure vs draw phase? Which can graphicsLayer skip?
  2. How do you detect a composable that recomposes too often?
  3. Why does List<T> cause re-composition issues? How do you fix it?
  4. Strong skipping mode — what does it change?
  5. Compose compiler metrics — what do you look for?
  1. Navigation Compose type-safe routes — how do they work?
  2. How do you handle deep links in Compose Navigation?
  3. Shared element transitions — basic mechanism?
  4. How does a Composable preserve state across navigation?
  5. Compose in a Fragment — what's the correct ViewCompositionStrategy?

Architecture (15 questions)

  1. MVVM vs MVI — when to pick each?
  2. What is Unidirectional Data Flow? Why is it preferred?
  3. Explain Single Source of Truth for an Android app.
  4. What's the Repository pattern? Why use it?
  5. Hilt vs Koin vs Dagger 2 — pros/cons?
  6. @Singleton vs @ViewModelScoped vs @ActivityScoped — when each?
  7. Explain @AssistedInject and when you'd use it.
  8. What is Clean Architecture? Worth the effort for a 5-screen app?
  9. How would you model offline-first messaging?
  10. Sealed error hierarchies vs Result<T> — when to pick each?
  11. Explain typed errors with Outcome<T, E> or Arrow's Either.
  12. Why are value classes useful in domain modeling?
  13. What's an aggregate root? Give an Android example.
  14. How do you enforce module boundaries in a 30-module app?
  15. When does dynamic feature delivery make sense vs install-time modules?

Networking (10 questions)

  1. REST vs GraphQL vs gRPC — when each?
  2. Why use OkHttp interceptors? Give three real interceptor examples.
  3. How do you implement auth + token refresh with thundering-herd protection?
  4. How does Paging 3 work? PagingSource vs RemoteMediator?
  5. Explain idempotency keys and why they matter for payments.
  6. WebSocket reconnection strategy with exponential backoff + jitter — sketch?
  7. How do you cache HTTP responses with OkHttp?
  8. What is certificate pinning? When does it backfire?
  9. How do you handle a 401 in your network stack?
  10. Coil vs Glide — pros/cons?

Data & persistence (10 questions)

  1. Room migrations — how do you write + test one?
  2. What is the Room @Transaction annotation? Why critical with @Relation?
  3. How does Room's Flow auto-invalidate?
  4. Preferences DataStore vs Proto DataStore — when each?
  5. How do you migrate from SharedPreferences to DataStore?
  6. Explain SQLCipher for Room encryption.
  7. Scoped storage on Android 10+ — what changed?
  8. Photo Picker vs READ_MEDIA_IMAGES — which to use and why?
  9. What does EncryptedSharedPreferences actually encrypt? Where is the key?
  10. When does Room emit Flow updates across processes?

Concurrency + performance (10 questions)

  1. What is jank? What causes it? How do you measure it?
  2. What is the frame budget on a 90Hz device?
  3. How does a baseline profile work? What does it speed up?
  4. Explain Doze and App Standby. How does WorkManager interact?
  5. viewModelScope vs lifecycleScope — when each?
  6. How does a foreground service differ from a regular Service since Android 8?
  7. What's the difference between expedited work and regular periodic work?
  8. Memory profiling: how do you find a leak?
  9. What is Strict Mode? What can it detect?
  10. OkHttp connection pool — what is it; how big should it be?

Security + testing (10 questions)

  1. What is Play Integrity? When do you use Standard vs Classic API?
  2. HIPAA — what technical controls must your app implement?
  3. Biometric-bound Keystore key — how does it work?
  4. Explain setUserAuthenticationRequired(true) on a Keystore key.
  5. Testing pyramid for Android — what's the ratio?
  6. StandardTestDispatcher vs UnconfinedTestDispatcher — when each?
  7. What's MockK's coVerify vs verify?
  8. Why are fakes better than mocks for domain tests?
  9. What does Turbine do? Give one assertion API.
  10. runTest vs runBlocking — when each?

System design (10 questions)

  1. Design an offline-first chat app. Walk me through.
  2. Design Instagram's photo feed for mobile.
  3. Design Uber's rider app — request → match → ride.
  4. Design a fitness tracker with Wear OS companion.
  5. Design a video-sharing app like TikTok (upload + feed).
  6. Design a banking app that survives bank API outages.
  7. Design a collaborative editor (like Google Docs) on mobile.
  8. Design a podcast app with offline playback.
  9. Design a music streaming app with cast support.
  10. Design an e-commerce checkout flow with payment + inventory.

Behavioral (15 questions)

  1. Tell me about a time you disagreed with a teammate.
  2. Tell me about your most complex technical project.
  3. Tell me about a bug you shipped and how you handled it.
  4. Tell me about a time you missed a deadline.
  5. Tell me about a time you mentored someone junior.
  6. Tell me about a time you influenced without authority.
  7. Tell me about a technical decision you made that turned out wrong.
  8. Tell me about a time you received difficult feedback.
  9. Tell me about a time you changed your mind.
  10. Tell me about your favorite project. Why?
  11. Tell me about a time you went outside your role.
  12. Tell me about a time you had to learn something quickly.
  13. Tell me about a conflict you resolved between teams.
  14. What's the hardest production incident you've worked through?
  15. Tell me about a time you said no to a feature request.

Compensation + negotiation (5 questions)

  1. What are your salary expectations? (correct answer: deflect)
  2. What's your current compensation? (correct answer: deflect or reframe)
  3. Why are you leaving your current job?
  4. What are you looking for in your next role?
  5. 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

TopicChapter
Coroutines / FlowCoroutines Deep Dive
Compose internalsCompose Internals
MVIMVI & State Machines
NetworkingRetrofit & OkHttp
PerformanceMemory + LeakCanary, Jank Hunting
SecurityCrypto + Keystore
System designSystem Design Walkthroughs
BehavioralBehavioral & Negotiation
Coding patternsCoding Interview Patterns