Android has decades of API history and many ways to get it wrong. These questions check whether a candidate understands the lifecycle, modern Jetpack and performance.
Hiring a Android developer is easy. Telling a real one from a convincing résumé is the hard part — and it’s most of what we do. These are grouped by level, because the same question that stretches a junior is a warm-up for a senior.
Junior Android interview questions
0–2 years
Core components.
What is the Activity lifecycle?
Callbacks (onCreate, onStart, onResume, onPause, onStop, onDestroy) as an Activity is created, foregrounded and destroyed; you release resources appropriately.
Does heavy work in onCreate and leaks in onDestroy.
What is the difference between an Activity and a Fragment?
An Activity is a screen host; a Fragment is a reusable, lifecycle-aware UI portion hosted within one.
Puts everything in Activities with no reuse.
What is an Intent?
A messaging object to start components or pass data, explicit (named target) or implicit (by action).
Confuses explicit and implicit intents.
What is the difference between onCreate and onResume?
onCreate initialises once; onResume runs each time the screen becomes interactive — refresh logic belongs there.
Refreshes data only in onCreate and shows stale UI.
Why can’t you do heavy work on the main thread?
It blocks the UI and triggers ANRs; long work must run off the main thread.
Does network or DB work on the main thread.
What are resources and configuration qualifiers?
Externalised strings, layouts and drawables with qualifiers for locale, density and orientation.
Hardcodes strings and one layout for all devices.
What is the difference between View and ViewGroup?
A View is a UI element; a ViewGroup is a container that lays out child views.
Cannot explain the view hierarchy.
What is Gradle used for?
Building the app, managing dependencies and build variants (debug/release, flavors).
No idea how the app is built.
Mid-level Android interview questions
2–5 years
Jetpack and async.
What is the recommended app architecture?
A layered approach (UI, domain, data) with ViewModels holding UI state and a repository for data, per Android’s guidance.
Puts networking and logic directly in Activities.
What is a ViewModel and why use it?
A lifecycle-aware holder of UI state that survives configuration changes like rotation.
Loses state on rotation because data lives in the Activity.
How do coroutines fit Android?
Structured, lifecycle-scoped async that keeps the main thread free; scopes cancel work when the screen is destroyed.
Leaks background work after the screen closes.
What is the difference between LiveData, StateFlow and Flow?
Observable state holders; LiveData is lifecycle-aware, StateFlow/Flow are Kotlin-native streams increasingly preferred with coroutines.
Cannot choose an appropriate state holder.
How do you avoid memory leaks?
Avoid holding Activity/Context references beyond their lifecycle, unregister listeners, and use lifecycle-aware components.
Holds a static reference to a Context.
What is RecyclerView and why is it efficient?
A list component that recycles views for off-screen items; DiffUtil updates only changed items.
Inflates a view per item with no recycling.
How do you handle configuration changes?
Persist UI state in a ViewModel/saved state rather than rebuilding it, so rotation doesn’t lose data.
Reloads everything from scratch on rotation.
How does dependency injection help (Hilt/Dagger)?
It provides dependencies consistently and improves testability over manually constructing them everywhere.
News up dependencies inside components.
Senior Android interview questions
5+ years
Performance and architecture.
How do you diagnose and fix jank?
Profile with Android Studio tools, keep frames within budget, avoid heavy work and overdraw on the main thread, and optimise layouts.
Assumes the device is just slow.
How do you manage background work correctly?
WorkManager for deferrable/guaranteed work, respecting Doze and background execution limits.
Uses long-running services that the system kills.
What are the tradeoffs of Jetpack Compose vs Views?
Compose is declarative and productive but newer; Views are mature; migration and interop need planning.
Presents one as strictly superior.
How do you structure a large, modular Android app?
Feature modules, clear layering, a shared design system, and dependency injection for testable boundaries.
One monolithic module with god-Activities.
How do you optimise app size and startup?
App bundles, removing unused code/resources (R8), lazy initialisation, and baseline profiles.
Ships a bloated APK with slow cold start.
How do you handle offline support and data sync?
A single source of truth (local database) with background sync and conflict handling.
Assumes constant connectivity.
How do you test Android code effectively?
Unit-test ViewModels and logic off-device, use fakes for dependencies, and reserve UI tests for critical flows.
All logic in Activities, impossible to unit test.
How do you manage the fragmentation of devices and OS versions?
Target modern APIs with compatibility libraries, test on representative devices, and handle permission and behaviour changes.
Targets one device and ignores the rest.
Build and score a full interview with our free interview scorecard tool, browse the full question hub, or see how we interview engineers.