Interview guide
Android Developer Interview Questions & Answers Guide (2026)
A hiring-manager’s interview kit for android developers — with specific “what to look for” notes on every answer, red flags to watch, and a practical test.
Interviewing a Android Developer? This guide gives you 26 real interview questions — 14 technical (tagged easy, medium, and hard), 7 behavioral, and 5 role-fit — each with a specific “what to look for” scoring rubric, 8 red flags to reject on, and a hands-on practical test, so you hire on demonstrated evidence, not a confident-sounding résumé.
Key facts
- Role
- Android Developer
- Technical questions
- 14
- Behavioral
- 7
- Role-fit
- 5
- Red flags
- 8
- Practical test
- Included
How to use this guide
Pick 4-6 technical questions across difficulties, 2-3 behavioral, and 1-2 role-fit for a 45-minute interview. For senior roles, weight harder technical and role-fit higher. Always close with the practical test so you are hiring on evidence, not impressions. The “what to look for” notes are a scoring rubric: strong answers touch most points, weak answers miss them or replace them with platitudes.
Technical questions — Easy
1. How do you handle runtime permissions cleanly in a modern app, including the case where the user permanently denies?
EasyWhat to look for: ActivityResult APIs / rememberLauncherForActivityResult, rationale UI, handling permanent denial by routing to settings, not spamming the request. Should know the difference between shouldShowRequestPermissionRationale states.
2. Write (verbally or on paper) how you would debounce a search field in Compose that hits a network API. What has to be correct?
EasyWhat to look for: A Flow from the text state with debounce + distinctUntilChanged + flatMapLatest to cancel the previous request, collected in the ViewModel. Or a snapshotFlow in Compose. Edge cases: cancelling in-flight requests, empty query, cancellation on recomposition.
Technical questions — Medium
1. What happens to a ViewModel during a screen rotation, and how is that different from what happens on process death?
MediumWhat to look for: ViewModel survives configuration changes (retained by the ViewModelStore), but not process death — for that you need SavedStateHandle or onSaveInstanceState. Candidate should know both and when each matters. Red flag: thinks ViewModel survives process death.
2. In Jetpack Compose, what triggers a recomposition, and how do you stop a whole screen from recomposing when one small piece of state changes?
MediumWhat to look for: Reads of a State object trigger recomposition of the scope that read it. Fixes: hoist state, narrow the read to the smallest composable, use derivedStateOf, stable/immutable parameters, and keys in lists. Should mention recomposition scope, not just "add remember everywhere".
3. Explain structured concurrency in Kotlin coroutines. What is viewModelScope, and what happens to a running coroutine when the ViewModel is cleared?
MediumWhat to look for: Structured concurrency ties child coroutines to a scope; viewModelScope is cancelled in onCleared, cancelling in-flight work. Should discuss cooperative cancellation (isActive, suspending functions checking cancellation) and why blocking work does not get cancelled.
4. What is the difference between StateFlow, SharedFlow, and LiveData for exposing UI state, and which do you reach for and why?
MediumWhat to look for: StateFlow for hot, always-has-a-value UI state; SharedFlow for one-off events (navigation, snackbars) with replay/buffer config; LiveData is lifecycle-aware but older. Good answers discuss the events-vs-state distinction and collecting with repeatOnLifecycle.
5. Explain how you configure ProGuard/R8 for a release build. What breaks if you get the rules wrong?
MediumWhat to look for: R8 shrinks, optimizes, and obfuscates; reflection-based code (Gson/Moshi models, some libraries) breaks without keep rules. Should know how to add keep rules, test the release variant, and read a deobfuscated stack trace with the mapping file.
6. What is an ANR, what causes them, and how have you fixed one in production?
MediumWhat to look for: ANR = main thread blocked ~5s (input) or broadcast/service timeouts. Causes: heavy work on main thread, blocking I/O, deadlocks, slow BroadcastReceiver. Fixes: move work off main thread, StrictMode in debug, Crashlytics/Play Console ANR clustering. Should have a real story.
7. Compose interop: you have a large XML/Fragment app and want to start using Compose. How do you do it incrementally without a rewrite?
MediumWhat to look for: ComposeView inside existing layouts, Compose-in-Fragment, keeping shared ViewModels, AndroidView for embedding legacy views into Compose, migrating screen by screen. Should argue against a big-bang rewrite.
8. How do you test a ViewModel that exposes a StateFlow and runs coroutines? What tools and what pitfalls?
MediumWhat to look for: runTest / TestDispatcher, Turbine for asserting Flow emissions, injecting a dispatcher instead of hardcoding Dispatchers.IO, fake repositories. Pitfalls: not swapping the Main dispatcher, testing timing instead of behavior.
Technical questions — Hard
1. A screen collects a Flow but keeps doing work in the background after the user navigates away. How do you fix it?
HardWhat to look for: Collect inside repeatOnLifecycle(STARTED) or use collectAsStateWithLifecycle in Compose, so collection stops in the background and restarts. Should explain why launchIn on lifecycleScope alone leaks work while the app is backgrounded.
2. How do you build an offline-first feature? Walk me through the data flow when the network is down and when it comes back.
HardWhat to look for: Room as single source of truth, UI observes the DB, Repository mediates network, WorkManager or a sync strategy reconciles when connectivity returns, conflict handling. Should mention the "single source of truth" pattern and not just try/catch on a network call.
3. Your app has a 4-second cold start. How do you diagnose it and what are the usual culprits?
HardWhat to look for: Macrobenchmark / startup tracing, App Startup initializers doing too much on the main thread, heavy Application.onCreate, synchronous DI graph, eager network calls. Fixes: Baseline Profiles, lazy init, deferring work, App Startup library. Should name real tools.
4. How would you implement a resilient network layer with Retrofit — timeouts, retries, auth token refresh, and error mapping?
HardWhat to look for: OkHttp interceptors for auth headers, Authenticator for 401 token refresh, timeouts, exponential backoff for retries, mapping HTTP/exceptions to a sealed Result type. Should avoid refreshing tokens in a way that causes a thundering herd of parallel refreshes.
Behavioral questions
1. Tell me about a time a release caused a spike in crashes. How did you find and fix it, and what did you change afterward?
What to look for: Uses Crashlytics/Play Console to cluster, reads the deobfuscated stack, ships a fix or halts the staged rollout, adds a guardrail (test, staged rollout discipline, StrictMode). Takes ownership, avoids blaming the OEM.
2. Describe a disagreement with a designer about an Android UI pattern — a back gesture, a bottom sheet, Material behavior. How did you resolve it?
What to look for: Brings platform conventions and accessibility to the table, proposes alternatives, respects the designer craft, lands a decision without ego.
3. How do you keep your code review comments useful without coming across as pedantic?
What to look for: Separates blockers from suggestions (nit: prefix), praises good choices, explains the why, asks questions rather than issuing decrees.
4. Walk me through how you onboard yourself into an unfamiliar Android codebase.
What to look for: Runs it locally, traces a feature from UI to repository to network, maps the module graph and DI setup, opens a small PR early to validate understanding.
5. What is the most technically ambitious Android thing you have shipped, and why was it hard?
What to look for: Specific: names the dimensions of difficulty (scale, device fragmentation, performance, deadline, novel tech). Shows depth and taste.
6. How do you manage your day when you have 7 hours async with the team and only 1 hour of overlap?
What to look for: Batches questions, writes long-form PR descriptions, records screen walkthroughs, protects the overlap hour for blocking questions. Demonstrates async discipline.
7. When have you pushed back on a deadline, and how did you frame the conversation?
What to look for: Offers a trade-off (scope, quality, deadline) rather than saying no. Communicates early, not at the deadline.
Role-fit questions
1. Why native Android over cross-platform like Flutter or React Native?
What to look for: Has an opinion grounded in performance, platform APIs, tooling, or team fit — not dogma. Bonus if they can name the trade-off honestly and say when they would pick cross-platform.
2. What does the first 30 days look like in this role for you to feel productive?
What to look for: Codebase tour, shipping a small PR in week 1, owning a feature by week 2, asking to pair. Red flag: expects weeks of onboarding with no output.
3. How do you feel about 4 hours of timezone overlap with a US team?
What to look for: Treats the overlap as sacred for syncs, protects the async hours for deep work, has done it before if possible.
4. Our stack is Kotlin + Jetpack Compose + Hilt + Coroutines/Flow + Room. Anything there you have not used, and how would you ramp up?
What to look for: Honest gap assessment plus a concrete ramp plan (docs, side project, pair sessions). Fakery is a red flag.
5. Which side of pragmatism-vs-purism are you on when trade-offs come up on a deadline?
What to look for: Names the trade-off explicitly, picks pragmatism with a follow-up ticket for the debt, vs purism when it matters (crash safety, security, accessibility).
Red flags
Any one of these alone is usually reason to pass, especially combined with weak answers elsewhere.
- • Thinks a ViewModel survives process death, or cannot explain SavedStateHandle.
- • Adds remember and LaunchedEffect by trial and error without understanding recomposition scope.
- • Never profiles — treats jank and cold start as "just the device being slow".
- • Runs blocking I/O on the main thread and cannot explain what an ANR is.
- • Ships without instrumented or unit tests and cannot name a testing tool.
- • Has never taken an app through a real Play Store release or staged rollout.
- • Cannot explain coroutine cancellation or why work keeps running after the screen is gone.
- • Uses GlobalScope for feature work and shrugs when asked about the leak.
Practical test
4-hour take-home: build a small Android app in Kotlin and Jetpack Compose that lists items from a mock REST API, with search and detail navigation. Requirements: MVVM with a ViewModel exposing StateFlow, debounced search, Retrofit + a repository, loading and error states, offline caching with Room, and at least 3 tests (ViewModel logic plus one UI test). We grade on: architecture (40%), correctness and lifecycle handling (20%), performance and recomposition hygiene (20%), and tests (20%). Bonus points for handling configuration changes and process death cleanly and for a sensible module structure.
Scoring rubric
Score each answer 1-4: (1) Misses most of the rubric or gives platitudes; (2) Hits some points but cannot go deep when pressed; (3) Covers the rubric and can defend the answer under follow-ups; (4) Adds unprompted nuance, trade-offs, or real examples beyond the rubric. Hire at an average of 3.0+ across technical, behavioral, and role-fit, with zero red flags, and a pass on the practical test.
Skip the interview grind — hire a pre-vetted Android Developer
We run this exact vetting process for you. Tell us the role and we’ll send 3 pre-vetted android developers within 5 business days — from $2800/mo, with a 30-day replacement guarantee.
Related
Written by Syed Ali
Founder, Remoteria
Syed Ali founded Remoteria after a decade building distributed teams across 4 continents. He helps US businesses source, vet, onboard, and scale pre-vetted offshore talent in engineering, design, marketing, and operations.
- • 10+ years building distributed remote teams
- • Direct hiring experience across US, UK, EU, and APAC markets
- • Specialist in offshore vetting and cross-timezone team integration
Last updated: April 12, 2026