Android Engineer Interview Questions

Kotlin

  • Difference Between const val and val?

  • What is Data Class in Kotlin?

  • What are the different Coroutine Scopes?

  • How to manage series and parallel execution?

  • Difference between Flow/SharedFlow/StateFlow and elaborate it.

  • What happens if we call .cancel() from a coroutine scope?

  • What is an Init block in Kotlin?

  • How to choose between apply and with?

  • What is inline function in Kotlin?

  • Difference between Coroutine and Java Thread

  • Why Coroutines are light weight?

  • How does Coroutine switch context?

  • When to use Kotlin sealed classes?

  • Suspending vs Blocking in Kotlin Coroutines

  • What are Dispatchers and Name all of them

  • On which thread Dispatchers .Default execute the task or use which thread?

  • Dispatchers .Default vs Dispatcher .IO

  • What is SupervisorScope?

  • Exception Handling in Coroutine

  • Map vs FlatMap in kotlin

  • Singleton Pattern in Kotlin with object keyword

  • Collections API in Kotlin

  • What is Unidirectional Flow

  • StateFlow vs SharedFlow

  • Builder Pattern in Kotlin

  • Higher Order Functions in Kotlin

  • Covariance in Kotlin

  • Delay vs Thread.sleep?

  • Is singleton thread-safe? vs Object?


Android

  • How does Garbage collection works?

  • What is a dangling pointer?

  • Elaborate Memory Leak?

  • Explain fragment Lifecycle when it comes to ViewPager and sliding between different fragments.

  • Difference between FragmentStateAdapter and FragmentStatePagerAdapter.

  • Difference between Serializable and Parcelable? What are the disadvantages of Serializable?

  • How you could implement observable SharedPrefs or observable Databases i.e. Observe a certain key/table/query?

  • How does layout inflation work from xml tags to view references in memory?

  • What is a Thread, Handler, Looper, and Message Queue?

  • What are the different methods of concurrency on Android? Can you explain the difference between ExecutorService vs CachedThreadPool vs FixedThreadPool vs AsyncTasks vs HandlerThreads?

  • How does ViewModel instance provide to Activity and Fragment? How does ViewModelProviderStore decide when to retain the instance?

  • How do you inspect and solve the Jank issue?

  • How does the OutOfMemory happen?

  • How do you find memory leaks in Android applications?

  • What is Doze? What about App Standby?

  • What does setContentView do?

  • Process of creating a custom view

  • Deeplink understanding and architecture

  • Notifications

  • Difference between Fragment Lifecycle Observer and View Lifecycle Observer.

  • When should you use a Fragment rather than an Activity?

  • Explain the Android push notification system.

  • How LiveData is different from ObservableField?

  • What is the difference between setValue and postValue in LiveData?

  • What is process death?

  • What is ViewModelScope and How does it work internally?

Lifecycle

  • How to keep a video maintain a playing state when we rotate the screen?

  • How many callbacks are in Fragments?

  • What could be the reasons why onPause didn't get triggered?

  • What kind of events trigger onPause() to run?

  • In what scenario does the "onDestory" get called directly after "onCreate"?

  • Which callback gets called on Activity when an AlertDialog is shown?

  • What's the lifecycle in PIP (Picture-in-Picture)?

  • What happens if you rotate the device?

  • Inside a viewpager (Fragment state pager adapter) what will be the lifecycle of the fragments when you swap from one tab to another?

  • Why onActivityCreated is now depreciated in Fragment?

  • Which callback should I use if I want to know when my activity came to the foreground?

  • When is onActivityResult called?

  • What does setRetainInstance do and how you can avoid it?

  • What callbacks trigger when a Dialog opens up? In both cases, the dialog is attached from the same activity/fragment and another activity/fragment.

  • What do launchWhenCreated, launchWhenStarted, and launchWhenResumed functions do?

  • Fragment Callbacks when moving from one fragment to another and coming back to prev one?

  • Does onCreateView get called after coming to a fragment from top fragment?

  • When does ViewModel not survive?

Networking

  • What is the role of OkHttp and Retrofit?

  • What design pattern does Retrofit use?

  • How would optimize the handling of access token expiration? How would you handle a retry network call when the API fails? (Custom Interceptor response)

WebView

  • What are the problems around security when dealing with WebView?

  • How to interact or make connections with JavaScript?

Dependency Injection

  • Provides vs binds

  • Subcomponent vs. component dependency, what is the difference under the hood

  • What is a subcomponent and what is its use? How do you use qualifiers or how would you provide different instances of a class with the same data type? Constructor Injection V/s Method Injection? What is the scope? Singleton Annotation?

  • What is Circular dependency in dagger? and how to resolve it

  • What's interesting about Hilt?

  • Did you use Koin? What are your thoughts on it?

Jetpack Compose

  • How to launch a coroutine from a composable function?

  • How to launch a coroutine from a non-composable function, but tied to composition?

  • What is recomposition?

  • What is remember in Jetpack Compose?

  • Why and when to use remember {}?

  • Difference between LazyColumn and RecyclerView?

  • What is AndroidView in compose?

  • What is the lifecycle of composeables? Lifecycle

  • How to avoid recomposition of any composable, if the state is not changed? Smart Recomposition

  • What are stable types that can skip recomposition?

  • What is State?

  • What is MutableState and how does recomposition happen?

  • How to retain State across recomposition and configuration changes?

  • Difference between Stateless and Stateful composeables?

  • What are your thoughts on flat hierarchy, constraint Layout in compose vs. the older view hierarchy in xml

  • Difference b/w remember and LaunchedEffect

  • Does re-composition of ComposeItem1 bring any effect on ComposeItem2? If yes, then how?

    • ComposeParent() { ComposeItem1 {} ComposeItem2() {...} }

    • What is CompositionLocal?

  • Custom views in compose

  • Canvas in Compose

  • What are the benefits of Jetpack Compose?

  • How does Jetpack Compose integrate with existing Android frameworks and libraries?

  • What are the best practices for performance optimization in Jetpack Compose?

  • How is navigation handled in Jetpack Compose?

  • What is Strong Skipping Mode?

Thread

  • Different types of threads?

  • Difference between different types of thread?

  • Thread <-> Handler <-> looper

  • UI vs Background Thread

  • How do you know when some process if blocking a UI thread?

Architecture

  • What are SOLID principles?

  • What is MVVM?

  • Brief about Android Architecture.

  • MVP vs MVVM?

  • Is there any issue in the Presenter in the MVP?

  • Clean Architecture

  • MVVM vs MVI

  • What is Clean Architecture in MVVM

  • What are Provides and Binds in your Dagger library

Design Patterns

  • What is SOLID principle?

  • What are different design patterns you know about?

  • What is a creational pattern?

  • What is a structural pattern?

  • What is a behavioral pattern?

  • Create Singleton Pattern without Kotlin default implementation

  • Create Observer Pattern

  • Create Adapter Pattern

  • How to make a Singleton Pattern Thread Safe?

  • What is Dependency Inversion

  • Write a real-life example of Dependency Injection without using any library

  • Explain how Android Architecture components (ViewModel, LiveData, etc.) utilize design patterns behind the scenes

System Design

  • Design Image Loading Library

  • Design Image Downloading Library

  • Design LRU Cache

  • Design a real-time Twitter feed timeline. How will you structure the backend? Will you use WebSocket or REST for this use case? Justify.

  • Design Networking Library

  • Design Checkout Screen

  • Design Error handling Structure

  • REST <-> Web Sockets

  • Implement caching mechanism

  • Build an offline-first app

  • Design Analytics Library

Libraries

  • How does Glide internally work?

  • How does retrofit work internally?

  • ViewModel internal working

  • How will you choose between Dagger 2 and Dagger-Hilt?

Common Questions

  • String vs StringBuilder

  • == vs .equals?

  • === vs ==?

  • Java OOP concepts


----------------

Must Try Android Project

Akshay Nandwana
Founder AndroidEngineers

You can connect with me on:


Book 1:1 Session here
Click Here

Join our upcoming classes
https://www.androidengineers.in/courses

Love from our past students

Excellent list of questions really helped me to coverup all the topics before interview.

Saiteja Janjirala

10th Oct, 2024

I had an exceptional experience with the 1:1 mentorship session. Akshay was incredibly friendly and provided invaluable guidance on focusing on long-term goals. They also gave great interview tips, including a thorough resume review. Additionally, the discussion on Data Structures and Algorithms (DSA) was insightful and practical. Highly recommended for anyone looking to advance their career!

Nayab khan

11th Sep, 2024

Cleared my major points for what I am missing in the resume and also suggested what I can work on for further growth in the career.

Ketan Chaurasiya

7th Aug, 2024

What impressed me most was his personalized approach and practical tips that I could immediately apply. Akshay’s guidance not only improved my technical skills but also boosted my confidence in navigating my career path. His insights and encouragement have been a game-changer for me. I highly recommend Akshay’s mentorship to anyone looking to advance their Android development career.

Hardik Kubavat

5th Aug, 2024

2025© Made with   by Android Engineers.