Android Engineer Interview Questions

Let's Learn for Free! Click Here
Book 1:1 Session here Click Here

AndroidKotlin

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:

Let's Learn for Free! Click Here
Book 1:1 Session here Click Here

2024© Made with   by Android Engineers.