There is no doubt that the Android development platform is evolving faster than it ever has before. Most recently, Google has introduced Android 17, solidified Jetpack Compose as the definitive framework for creating user interfaces, and announced a new API called AppFunctions that allows you to use mobile applications as AI-based systems. As an aspiring software engineer, if you want to get hired into a top-tier engineering position, you cannot rely on outdated information.
In this guide, I will provide you with 40 Android interview questions and answers that are very relevant, very production-ready, and will allow you to show the technical knowledge and modern architectural principles that are necessary in front of an interview panel to secure your job offer.
I have also included the latest updates from Android 16 and Android 17 (currently in beta), so you can walk into any interview sounding like you actually keep up with the platform.
Let’s get started!
Read Also: React Native Tutorial For Beginners
Android is an open-source mobile operating system developed by Google. It is built on the Linux kernel and designed primarily for touchscreen devices like smartphones and tablets. What makes Android stand out is its open-source nature, massive developer community, support for multiple hardware manufacturers, and deep integration with Google services.
Unlike iOS, which only runs on Apple hardware, Android runs across thousands of different devices from many manufacturers. This hardware diversity creates more opportunities for developers but also introduces the challenge of fragmentation.
Every Android app is built around four fundamental components:
The AndroidManifest.xml file is the configuration file of every Android application. The Android system reads this file before it launches your app. It contains:
Without this file, the Android system would have no idea how to run your app.
The Activity lifecycle describes the different states an Activity goes through from creation to destruction. The Android system calls specific callback methods at each stage:
| Callback | When it is called |
|---|---|
| onCreate() | Activity is first created. Set up your UI here. |
| onStart() | Activity becomes visible to the user. |
| onResume() | Activity starts interacting with the user. |
| onPause() | System is about to start another activity. Save unsaved changes here. |
| onStop() | Activity is no longer visible. |
| onDestroy() | Called before the activity is destroyed. |
| onRestart() | Called after the activity has been stopped and is being started again. |
Pro Tip: A common fresher mistake is doing heavy work in onCreate(). Move data loading to a ViewModel with LiveData or StateFlow instead.
Read Also: Pega Tutorial For Beginners
An Intent is a messaging object that you use to request an action from another app component. You can think of it as a message that tells Android what you want to do. There are two types:
An Activity represents a full screen with a user interface. A Fragment is a modular section of an activity. Think of a Fragment as a sub-activity. You can combine multiple fragments in a single activity to build multi-panel UIs on larger screens like tablets.
Fragments have their own lifecycle but they depend on a host Activity. This makes them reusable and easier to manage for complex UIs. Since Jetpack Compose has become the preferred UI toolkit in 2026, traditional Fragments are used less in new projects, but you will still encounter them in legacy codebases.
Both Serializable and Parcelable are interfaces used to pass data between Android components.
For Android development, you should always prefer Parcelable for passing objects between activities. In Kotlin, the @Parcelize annotation from the Kotlin Parcelize plugin makes this even easier.
APK stands for Android Package. It is the file format that Android uses to distribute and install apps. The compilation process works like this:
Since Android 5.0, the Android Runtime (ART) has replaced the older Dalvik VM, improving performance significantly through Ahead-Of-Time (AOT) compilation.
Android permissions are a security mechanism that controls what resources and data an app can access. There are two categories:
In 2026 interviews, you should also mention the introduction of one-time permissions (granted for a single use) and background location restrictions that have tightened with each recent Android version.
These are units of measurement used in Android layouts:
| Unit | Full Name | When to use |
|---|---|---|
| px | Pixels | Avoid. Does not scale across screen densities. |
| dp | Density-independent pixels | Use for all layout dimensions. Scales consistently across screen sizes. |
| sp | Scale-independent pixels | Use for text sizes only. Respects user font size preferences. |
One dp equals one physical pixel on a 160dpi screen. Always use dp for dimensions and sp for text.
Related Article: Flutter Roadmap: A Step-byStep Guide
At the intermediate level, interviewers dig into architecture, threading, data management, and modern Android development practices. These questions check whether you have real project experience and know how to build apps that are scalable and maintainable.
Android Jetpack is a collection of libraries, tools, and architectural guidance from Google that helps developers build high-quality Android apps more easily. Google introduced Jetpack to solve a longstanding problem: Android's API was inconsistent across different OS versions, and developers had to write a lot of boilerplate code.
Jetpack components like ViewModel, LiveData, Room, Navigation, WorkManager, and Paging handle common tasks in a consistent and backward-compatible way. As of 2026, Jetpack Compose is the most important Jetpack component, offering a modern declarative UI toolkit that replaces the traditional XML-based view system.
MVVM stands for Model, View, and ViewModel. It is the recommended architecture pattern for Android apps.
The key benefit of MVVM is separation of concerns. Your View does not directly access the database, and your Model does not know anything about the UI. This makes the code easier to test and maintain.
Jetpack Compose is Android's modern declarative UI toolkit. Instead of describing your UI in XML files, you write UI components as Kotlin functions called Composables. When the state of your app changes, Compose automatically recomposes (redraws) only the parts of the UI that depend on that changed state.
Traditional XML layouts use a View hierarchy that you manipulate imperatively. Compose eliminates the need for findViewById, adapters, and XML files. It leads to less code, better readability, and a faster development cycle. In 2026, Compose is the default choice for any new Android project.
Kotlin Coroutines are a concurrency framework that makes asynchronous programming simple and readable. Android apps need to perform many tasks off the main thread, like network calls and database operations. Without coroutines, you had to manage threads manually using AsyncTask (now deprecated) or RxJava.
Coroutines let you write asynchronous code that looks and behaves like synchronous code. You use the suspend keyword to mark functions that can be paused and resumed without blocking a thread. Combined with ViewModelScope and LifecycleScope, coroutines tie their lifecycle to UI components and automatically cancel when the component is destroyed, preventing memory leaks.
Also Read: Python Developer Salary
Room is an abstraction layer over SQLite that is part of Android Jetpack. SQLite is the underlying database, but working with it directly requires writing a lot of boilerplate code, managing cursors, and handling SQL errors manually. Room eliminates this friction.
You define your database with annotated Kotlin classes:
Room validates your SQL queries at compile time (not at runtime), which means you catch database errors before shipping. Room also integrates natively with Kotlin Coroutines and Flow for reactive database operations.
WorkManager is a Jetpack library for scheduling deferrable, guaranteed background work. Unlike a simple coroutine or a Service, WorkManager guarantees that your task will run even if the app exits or the device restarts. It chooses the best implementation for the job based on the device's API level, using JobScheduler or AlarmManager under the hood.
You would use WorkManager for tasks like:
WorkManager respects battery optimizations and system constraints like network availability.
Related Article: Top SQL MCQs With Answers
Both LiveData and StateFlow are observable data holders used in the MVVM pattern, but they have key differences:
| Feature | LiveData | StateFlow |
|---|---|---|
| Language | Java-based | Kotlin-native |
| Lifecycle-aware | Yes | No (use repeatOnLifecycle) |
| Works outside Android | No | Yes |
| Supports Flow operators | No | Yes |
| Backpressure handling | No | Yes |
In 2026, StateFlow combined with repeatOnLifecycle is the recommended approach for exposing UI state from a ViewModel, as it gives you more control and works seamlessly with Jetpack Compose.
Dependency Injection (DI) is a design pattern where an object receives its dependencies from an external source rather than creating them itself. This makes your code more modular, testable, and maintainable.
Hilt is Google's recommended DI library for Android, built on top of Dagger 2. With Hilt, you annotate classes with @HiltAndroidApp, @AndroidEntryPoint, @Inject, and @Provides, and Hilt generates the required DI code at compile time. This eliminates the boilerplate of setting up Dagger manually. Hilt also integrates with other Jetpack components like ViewModel, WorkManager, and Navigation.
The Navigation Component is a Jetpack library that handles in-app navigation. It provides a visual Navigation Graph where you define destinations (screens) and actions (transitions between screens). It handles back stack management automatically, supports deep linking, and simplifies passing data between screens using Safe Args (which generates type-safe classes for navigation arguments).
In Jetpack Compose, you use NavHost and NavController from the Compose Navigation library to achieve the same goals with a fully code-driven approach.
Related Article: What is TensorFlow?
ProGuard was the original code shrinker and obfuscator for Android. R8 is its modern replacement, enabled by default since Android Studio 3.4. R8 does three things:
You configure R8 with proguard-rules.pro files. R8 is also faster than ProGuard because it integrates directly into the D8 compiler pipeline. Using R8 significantly reduces your APK size and makes your app harder to decompile.
Senior Android developer interview questions test your depth of knowledge, your architectural thinking, and your ability to handle real-world complexity. These questions go beyond syntax. They check whether you can design systems, solve performance problems, and make informed decisions under constraints.
For a large-scale Android application, I would use a multi-module, Clean Architecture approach. The core principle is separation of concerns across clearly defined layers:
I would split the project into Gradle modules: a core module for shared utilities, feature modules for individual features, and a shared UI module. This enables faster build times through parallelization and clear team ownership of features.
Read Also: How To Become A React Native Developer?
Memory leaks happen when the garbage collector cannot reclaim memory because objects are still being referenced. The most common causes in Android are:
To detect leaks, I use LeakCanary, which automatically detects and reports leaks in debug builds. For deeper profiling, Android Studio's Memory Profiler shows heap allocation and retained objects. To prevent leaks, I use WeakReference where appropriate, unregister listeners in the correct lifecycle callback, and avoid storing Context in long-lived objects.
Performance optimization in Android covers several dimensions:
In 2026, always prefer WorkManager for deferred background work and Foreground Services only for tasks that need to run immediately and continuously.
Also Read: How to Learn React Native from Scratch?
A Baseline Profile is a list of classes and methods that are critical to your app's startup and common user journeys. You provide this list to ART (Android Runtime), and ART pre-compiles those classes Ahead-Of-Time during app installation. This eliminates the Just-In-Time (JIT) compilation cost during the first run.
This can reduce startup time by 30% or more. You generate Baseline Profiles using the Macrobenchmark library in Android Studio. In 2026, Baseline Profiles are considered a best practice for production apps. They are especially impactful for apps using Jetpack Compose, which has a relatively heavy initialization cost.
An Android App Bundle (AAB) is a publishing format that includes all the compiled code and resources of your app but defers the generation of APKs to Google Play. When a user downloads your app, Google Play's Dynamic Delivery generates and delivers only the APK with the resources needed for that specific device: the right screen density, CPU architecture, and language.
This means smaller download sizes for users (on average 15 to 20 percent smaller). You can also use Dynamic Feature modules to deliver parts of your app on demand rather than at install time. The AAB format is now required for new apps published to Google Play.
Android 16 made edge-to-edge display mode mandatory for apps targeting API level 36 and above. In previous versions, apps could opt out of edge-to-edge and keep the traditional windowing model where system bars had opaque backgrounds.
With Android 16, the system enforces that apps draw behind the system bars. Developers need to handle WindowInsets properly so that their UI elements are not obscured by system bars. The WindowInsetsController API and Jetpack's WindowInsetsCompat make this manageable. Android 17 goes further and will enforce proper aspect ratio adaptation across all form factors.
Recomposition is the process by which Jetpack Compose updates the UI when the state it depends on changes. Compose is smart enough to skip recomposing functions whose inputs have not changed (this is called skippability). However, poorly written Composables can recompose more than necessary, hurting performance.
To optimize recomposition:
Read Also: Flutter Tutorial For Beginners
Android 17 (codename Cinnamon Bun) is currently in beta as of early 2026, with a stable release expected around Q2 2026 following Google I/O. Key features and changes include:
Developers should test their apps against Android 17 Beta, ensure Predictive Back gestures are fully implemented, and start preparing for the mandatory aspect ratio changes that Android 17 will enforce.
A solid Android testing strategy covers three layers:
I follow the testing pyramid principle: many unit tests, fewer integration tests, and even fewer E2E tests. I also use Robolectric for running Android-specific tests on the JVM to speed up feedback loops.
Scenario-based questions are the most challenging part of a senior Android interview. These are open-ended problems that test your ability to think, reason, and apply your knowledge to real situations. There is rarely one perfect answer. The interviewer wants to understand how you approach a problem.
I would start by measuring before guessing. I would use Android Studio's App Startup Profiler or the Macrobenchmark library to get exact startup time measurements — specifically Time to Initial Display (TTID) and Time to Full Display (TTFD).
Then I would look at what runs on the main thread during startup. Common culprits include initializing too many SDKs in Application.onCreate(), doing disk I/O or network calls on the main thread, and inflating complex layouts. I would move SDK initialization to background threads using the App Startup library and lazy initialization. I would also generate a Baseline Profile to pre-compile the hot startup path. If the issue is layout inflation, I would migrate the relevant screens to Jetpack Compose for faster rendering.
Device rotation triggers a configuration change, which destroys and recreates the Activity by default. The most common crash in this scenario is a NullPointerException or IllegalStateException because something tried to access a destroyed view or fragment.
I would first check the crash logs in Firebase Crashlytics for the exact stack trace. The root cause is almost always that the developer stored UI state in the Activity directly instead of in a ViewModel. The fix is to move all UI state into a ViewModel (which survives configuration changes) and restore it in the recreated Activity. I would also make sure that any background work is tied to the ViewModel's scope, not the Activity's lifecycle.
Read Also: What is Flutter?
For real-time chat, I would use WebSockets for persistent, bidirectional communication between the client and server. On the Android side, I would use OkHttp's WebSocket API.
The architecture would look like this:
I would store messages locally in a Room database so the chat history is available offline. I would also handle connection state (connecting, connected, disconnected, error) explicitly in the UI state to give users clear feedback.
First, I would read Google's official behavior changes document for Android 16 to understand what changed. Android 16 introduced mandatory edge-to-edge rendering, stricter background process restrictions, and changes to notification permissions.
I would use Android Studio's lint checks and the App Compatibility Dashboard in the Google Play Console to identify warnings. I would test the app on an Android 16 emulator with developer options enabled to see compatibility mode indicators. Common fixes involve updating WindowInsets handling for edge-to-edge, updating media controls for the new MediaSession API changes, and ensuring all runtime permissions align with the stricter targeting requirements for API level 36.
An offline-first app treats the local database as the single source of truth and syncs with the server in the background. The architecture I would use follows this pattern:
For conflict resolution, I would use a timestamp-based or server-wins strategy depending on the business requirements. I would use Kotlin Flow to expose Room data as a reactive stream, so the UI automatically updates when the local database changes. For optimistic updates (showing the change before server confirmation), I would update Room immediately and revert if the server call fails.
Read Also: 7 Best Power Apps Examples
I would start by analyzing the current APK with Android Studio's APK Analyzer to see what is consuming space. Typical findings include large libraries, unused resources, uncompressed assets, and multiple screen density resource sets.
My action plan would include:
Combining these steps almost always achieves a 40 percent or greater reduction.
RecyclerView jitter almost always means work is happening on the main thread during scroll. I would use the GPU Rendering Profile (in developer options) to confirm which frames are dropping.
I would then look at the onBindViewHolder() method. Common issues include:
I would also check that DiffUtil is in use for efficient list updates and that item animations are not running unnecessarily.
Related Article: Power Apps Tutorial For Beginners
For any new feature built in 2026, I would default to Jetpack Compose. The reasons are clear: it is Google's actively maintained UI toolkit, it reduces boilerplate significantly, and it handles state management more naturally with unidirectional data flow.
The exceptions where I would lean toward XML are:
In most greenfield scenarios, Compose is the right call.
I would use the BiometricPrompt API from the AndroidX Biometric library. This library handles the different biometric methods (fingerprint, face, iris) consistently across Android versions.
The implementation involves:
For cryptography-backed authentication (like unlocking a locally encrypted key), I would use CryptoObject. Android 16 QPR2 improved biometric authentication speed significantly, which is worth mentioning. I would also handle the case where the device has no biometric hardware by falling back to a PIN or password.
Android 16 Beta introduced support for the APV (Advanced Professional Video) codec, specifically the APV 422-10 Profile. Here is what makes it significant:
For a video editing app, APV gives you raw-quality footage in a more compact and edit-friendly package. It is the most developer-relevant codec addition Android has made in years.
Related Article: How to Learn Coding?
You have worked through 40 Android interview questions that cover everything from core fundamentals to advanced architecture, Android 16 and 17 features, and real-world scenarios.
The Android ecosystem in 2026 is more exciting than ever. Jetpack Compose has matured into a production-ready toolkit. Kotlin Coroutines and Flow have simplified asynchronous programming. Android 17 is pushing the platform toward an intelligent, cross-device experience with Gemini Intelligence and Desktop Mode. The developers who stand out in interviews are the ones who understand these changes and can explain the reasoning behind their decisions.
Kotlin is the official and recommended language for Android development. Google has made it clear that Kotlin is the primary language for Android, and all new Jetpack APIs are designed with Kotlin-first in mind. You can still use Java, but new projects should use Kotlin.
Yes, absolutely. Compose is no longer optional. Most companies building new Android features use Compose, and interviewers at mid-to-senior levels will ask about it. Understand state hoisting, recomposition, and how Compose integrates with ViewModel and Navigation.
Generally, two to four years of professional Android development experience with shipped apps qualifies you as intermediate. More important than years is whether you have worked with architecture patterns like MVVM, used Jetpack libraries in production, and solved real performance or reliability problems.
Android 16 launched in June 2025 and is the current stable Android release. It made edge-to-edge rendering mandatory for apps targeting API 36, introduced the APV professional video codec, improved biometric authentication speed, and added several developer productivity improvements. Yes, interviewers expect you to know about recent platform changes.