27 questions · Android Developer

Android Developer Interview Questions

A hiring manager's question bank for Android developers — Kotlin, the activity and fragment lifecycle, coroutines, Jetpack Compose, and architecture. Built to separate people who can follow a tutorial from people who ship stable apps to millions of devices.

Hiring an Android developer means testing for a specific kind of discipline: writing code that behaves correctly across a lifecycle you do not control. Unlike a backend service, an Android app is constantly interrupted — the screen rotates, a call comes in, the OS kills your process to reclaim memory, the user backgrounds the app for three days and comes back expecting their state intact. A candidate who does not deeply understand the activity and fragment lifecycle will write code that leaks memory, loses state on rotation, or crashes when a configuration change destroys and recreates the activity. Beyond the lifecycle, modern Android is Kotlin-first, so you want fluency in null safety, coroutines and structured concurrency for async work, and increasingly Jetpack Compose for declarative UI. The strongest signal is architectural judgement: does the candidate keep logic out of activities and fragments, use a ViewModel that survives configuration changes, reason about the main thread versus background dispatchers, and think about memory, battery, and jank on real devices rather than a fast emulator? The questions below run from Kotlin fundamentals through the lifecycle and concurrency into UI and architecture. Pair a couple of lifecycle questions with one coroutine scenario and one "your app is janky and leaking memory" discussion, and you will quickly learn whether someone has shipped and maintained a production Android app or only built a sample.

How to use these questions

Pick six to eight questions across two or three categories instead of running the whole list. Start with a Kotlin or Lifecycle question to set a baseline, then spend real time on a Coroutines & Async scenario and one Architecture or performance discussion. Follow every clean answer with "what happens on a configuration change?" or "which thread does that run on?" — the follow-up is where production experience shows.

Kotlin Fundamentals

  1. How does Kotlin's null safety work, and what is the difference between ?., !!, and the Elvis operator ?:
  2. What is the difference between val and var, and between a val and a const val?
  3. Explain data classes — what do they give you for free, and when would you not use one?
  4. What are extension functions, and when have you used one to keep code clean?
  5. What is the difference between a companion object and a top-level function?
  6. Explain higher-order functions and lambdas, and how inline changes their behaviour.
  7. What is the difference between a list, a mutableList, and a sequence in Kotlin?

Lifecycle & Components

  1. Walk me through the activity lifecycle. What happens on a screen rotation, and how do you preserve state?
  2. What is a ViewModel, and why does it survive a configuration change when the activity does not?
  3. What is the difference between an activity and a fragment, and when do you use each?
  4. How does the fragment lifecycle differ from the activity lifecycle, especially around the view?
  5. What causes a memory leak from holding a Context or a View, and how do you avoid it?
  6. How do you pass data between fragments safely, and why is the Bundle size limited?
  7. What is savedInstanceState versus a ViewModel for surviving process death?

Coroutines & Async

  1. What problem do coroutines solve over callbacks and AsyncTask, and what is a suspend function?
  2. Explain structured concurrency and what a CoroutineScope gives you.
  3. What is the difference between Dispatchers.Main, Dispatchers.IO, and Dispatchers.Default?
  4. Why should you launch coroutines in viewModelScope, and what happens to them when the ViewModel clears?
  5. What is the difference between launch and async/await?
  6. What are Flow and StateFlow, and when would you use them over LiveData?

UI, Architecture & Performance

  1. What changes in your mental model going from XML views to Jetpack Compose's declarative UI?
  2. What is recomposition in Compose, and how do you avoid unnecessary recompositions?
  3. Explain an MVVM architecture on Android and where the repository fits.
  4. A list scrolls with visible jank. How do you diagnose and fix it?
  5. How do you keep the main thread free, and what is an ANR?
  6. How would you reduce an app's battery and memory footprint?
  7. How do you handle dependency injection — what does Hilt or Dagger give you?

Tips for interviewing Android candidates

  • Probe the lifecycle hard — rotation and process death expose more real Android skill than any syntax question.
  • Reward candidates who name the exact dispatcher or thread a piece of code runs on; that habit prevents ANRs.
  • Ask about a memory leak or jank they actually fixed on a real device, not an emulator.
  • Check for structured-concurrency thinking; coroutines leaked outside a scope are a common production bug.
  • Do not over-weight the newest Compose API; solid lifecycle and architecture fundamentals matter far more.
  • Watch for candidates who put logic in activities and fragments — that signals a thin architectural mental model.

Frequently asked questions

Hiring Android developers? JuggleHire ranks, screens, and schedules candidates for you.

JuggleHire goes beyond simple job posting. Leverage custom forms, powerful screening filters, and automated social media previews to find the perfect fit for your team.