Android is the dominant mobile platform in India: over 95% of Indian smartphones run Android, and every major Indian product company (Swiggy, Zomato, PhonePe, Myntra, Nykaa, CRED, Ola) invests heavily in their Android app. Android developer is a strong career in India in 2026: the combination of Kotlin's maturity, Jetpack Compose's growing adoption, and India's mobile-first user base makes Android engineering both technically engaging and commercially critical. This guide covers the interview preparation for Android roles at Indian product companies.
Kotlin Fundamentals: What Every Android Interview Tests
Kotlin is the primary language for Android development in India. Every Android interview tests Kotlin fundamentals before going deeper into architecture. Coroutines: the most frequently tested Kotlin topic in 2026. launch vs async: launch is fire-and-forget (returns a Job), async is for concurrent work with a result (returns a Deferred, call .await() to get the value). Dispatchers: Main (UI thread, use for UI updates), IO (optimised for I/O operations: network and database), Default (optimised for CPU-intensive computation). Structured concurrency: the coroutine scope governs the lifetime of all child coroutines. When the scope is cancelled (e.g., when a ViewModel is destroyed), all child coroutines are cancelled automatically, preventing memory leaks. Flow: a cold stream that emits multiple values over time. Compare to LiveData: Flow is more powerful (transformation operators, backpressure handling) but requires collecting in a lifecycle-aware scope. StateFlow: a hot Flow that always has a current value, replacing LiveData in many ViewModels. Sealed classes for state modelling: data class Loading, data class Success(val data: T), data class Error(val message: String). Why sealed classes over enums: sealed class subclasses can carry data; enum values cannot. Null safety: the ? operator in the type system (String? vs String). Safe call (?.), non-null assertion (!! should be avoided except when you are absolutely certain the value is non-null), Elvis (?:). Scope functions: let (transform a nullable value safely), run (execute a block on an object), apply (configure an object and return it), also (do something with an object without changing the return), with (call multiple methods on an object without repeating its name).
Android Architecture: MVVM, Clean Architecture, and Dependency Injection
Architecture is the primary differentiator between junior and mid-level Android developer candidates in India. MVVM (Model-View-ViewModel): the standard Android architecture pattern. View (Activity or Fragment): observes state from ViewModel and dispatches user events. ViewModel: holds UI state, survives configuration changes (screen rotation), calls business logic, exposes StateFlow or LiveData. Model (Repository): abstracts data sources (network API and local database). Why ViewModel survives rotation: ViewModel is scoped to the lifecycle of the ViewModelStore, not the Activity. When the Activity is recreated on rotation, it receives the same ViewModel instance from the ViewModelStore. Repository pattern: the ViewModel should not know whether data came from the network or the local cache. The Repository decides which source to use and returns a unified result. Room database for local persistence: Entity (annotated data class that becomes a database table), DAO (interface with annotated query methods), Database (abstract class with singleton instance). Database migrations: you must provide a migration object for every schema change; forgetting causes crashes on upgrade. Clean Architecture (for senior interviews): presentation, domain, and data layers. The dependency rule: dependencies only point inward. Presentation layer (ViewModel) depends on domain layer (UseCases). Domain layer does not depend on any Android SDK class. Data layer (Repository implementations) depends on domain layer interfaces. Hilt dependency injection: @HiltAndroidApp on Application, @AndroidEntryPoint on Activity/Fragment, @HiltViewModel on ViewModel. Provides annotation for external dependencies (Retrofit, Room). Binds annotation for interface-to-implementation mapping.
Jetpack Compose: The Modern UI Toolkit
Jetpack Compose is Google's declarative UI toolkit for Android, adopted by most new Android projects at Indian product companies since 2022. Compose vs XML: Compose is declarative (you describe what the UI should look like for a given state, and Compose handles the rendering). XML is imperative (you update the view manually when state changes). Composable functions: annotated with @Composable, can only be called from other @Composable functions. They describe what the UI looks like for a given set of inputs. Recomposition: when a Composable's inputs change, it recomposes (re-executes the function to produce a new UI). Composables should be idempotent and free of side effects. State management in Compose: remember {} for local state that survives recomposition but not navigation. rememberSaveable {} for state that also survives process death. LaunchedEffect(key) for side effects (launching coroutines from a Composable): re-runs when the key changes. State hoisting: moving state up to the lowest common ancestor of the Composables that need it. Allows the parent to control state while children remain stateless and testable. Performance: LazyColumn (like RecyclerView, only composes visible items). derivedStateOf: compute a derived value from state without triggering unnecessary recomposition. key {} in lazy lists to associate a composable with a stable identity. Common Compose interview question: 'What is the difference between LazyColumn and Column in Jetpack Compose, and when would you use each?' (LazyColumn only renders visible items, Column renders all children upfront.)
Practise Android developer interview questions with HireStepX. Our AI evaluates your Kotlin and Compose explanations, architecture reasoning, and Coroutines understanding with immediate coaching.
Practice freeAndroid Developer Salary in India 2026
Android is one of India's highest-demand specialisations given the country's mobile-first user base. 2026 salary benchmarks: Junior Android developer (0-2 years): Rs 8-22 LPA at product companies, Rs 4-10 LPA at service companies. Mid-level (2-5 years): Rs 22-55 LPA at product companies. Senior Android developer (5-8 years): Rs 50-95 LPA at leading product companies (Swiggy, PhonePe, Myntra, CRED). Staff/Principal Android: Rs 90-160 LPA at FAANG India. Company-specific demand: consumer app companies with mobile-first user bases (Swiggy, Zomato, PhonePe, Myntra, Nykaa, Blinkit) invest heavily in Android talent. Fintech companies (CRED, Razorpay, Angel One) need high-quality Android for payments, which users trust with real money. Specialisation premiums: Jetpack Compose expertise adds 10-15% premium as companies migrate from XML. Accessibility (TalkBack, content descriptions) is growing in demand as companies comply with Indian accessibility standards. Performance engineering (frame drops, memory profiling with Memory Profiler, cold start optimisation) is rare and well-paid. Cross-platform note: engineers proficient in both Kotlin (Android) and Swift (iOS) are rare and can earn 15-25% more. React Native engineers can work on both platforms but are in a different market: consumer companies (OYO, Urban Company) that built React Native apps pay at par with native Android; companies with premium native apps (CRED, Swiggy) hire native-only.
Frequently asked questions
Explore more