androidengineers.Book a session

ANDROID INTERVIEW PREPARATION

Your next role.
Prepare for it here.

Aiming for an Android role at a leading product company? Build the depth to explain your code, defend your design decisions, and work through unfamiliar problems.

474 questions with answers · Kotlin to system design · Progress saved as you learn

PRACTISE WITH PURPOSE

Interview question library

Find a question, explain your approach, then explore the answer.

474 of 474 questions

  1. Should typing a draft and publishing it use the same coroutine scope?

    Choose lifetime from the operation: screen work may be cancellable, while a confirmed publish may need durable scheduling.

    Android BasicsIntermediate2 minPractical scenario
    Practise
  2. Returning to a Fragment duplicates UI updates. Which lifecycle would you investigate?

    Scope rendering to the Fragment view lifecycle and collect while STARTED; the Fragment can outlive its view.

    Android BasicsIntermediate3 minPractical scenario
    Practise
  3. A checkout survives rotation but loses the cart after backgrounding. How would you fix it?

    Separate in-memory screen state, small restoration keys, and durable cart data. A ViewModel alone cannot survive process death.

    Android BasicsIntermediate3 minPractical scenario
    Practise
  4. A retried background upload creates two server records. How would you make it safe?

    Use durable operation IDs and server-side idempotency. Unique WorkManager scheduling alone does not guarantee exactly-once server effects.

    Android BasicsAdvanced3 minPractical scenario
    Practise
  5. Payment succeeds while the screen is stopped, but confirmation never appears. How would you redesign the outcome?

    Treat the confirmed purchase as recoverable state, not only a transient navigation emission. Reconcile the authoritative outcome on return.

    ArchitectureAdvanced3 minPractical scenario
    Practise
  6. An injected singleton keeps an old Activity alive after rotation. Where is the scope mismatch?

    A long-lived object must not retain a shorter-lived Activity or its callbacks. Align dependency lifetime with ownership.

    ArchitectureIntermediate3 minPractical scenario
    Practise
  7. Switching a paged search from Kotlin to Compose mixes both result sets. Where would you look?

    Check query-scoped cache membership and remote keys, plus transactional refresh writes and invalidation.

    DatabaseAdvanced3 minPractical scenario
    Practise
  8. A refresh fails and an offline-capable screen goes blank. How would you model its state?

    Represent available content separately from refresh status so a network error does not discard useful cached data.

    DatabaseIntermediate2 minPractical scenario
    Practise
  9. A database upgrade must add bookmarks without losing learning progress. How would you ship it?

    Define a migration for existing installations, export schemas, and test that real stored progress survives each supported upgrade path.

    DatabaseIntermediate3 minPractical scenario
    Practise
  10. A custom course-progress ring looks correct but TalkBack cannot explain it. What would you add?

    Expose the meaning of the drawing through semantics, including its label and progress, then test the accessibility tree.

    Jetpack ComposeIntermediate2 minPractical scenario
    Practise
  11. A lesson screen keeps showing the first lesson after its ID changes. How would you debug the effect?

    Inspect effect keys: work that belongs to a lesson should restart when that lesson ID changes.

    Jetpack ComposeIntermediate2 minPractical scenario
    Practise
  12. Inserting a lesson moves an expanded row to the wrong item. What is missing?

    Give lazy-list items stable, unique keys so remembered row state follows item identity rather than position.

    Jetpack ComposeIntermediate2 minPractical scenario
    Practise
  13. A lesson is added to a mutable list, but Compose shows no change. Why?

    Compose must observe the mutation. Replace an immutable list held in state or use a snapshot-aware state collection.

    Jetpack ComposeBeginner2 minPractical scenario
    Practise
  14. A scrolling header recomposes the whole screen on every pixel. How would you narrow the work?

    Find where rapidly changing state is read, then move reads to the smallest relevant scope or an appropriate later rendering phase.

    Jetpack ComposeAdvanced3 minPractical scenario
    Practise
  15. The screen is backgrounded, but its data stream keeps doing work. Is lifecycle-aware collection broken?

    Stopping the UI collector and stopping the upstream producer are separate events. Inspect sharing policy, scope, and other subscribers.

    KotlinAdvanced3 minPractical scenario
    Practise
  16. Builder Pattern in Kotlin?
    KotlinIntermediate4 min
    Practise
  17. Cancelling a search stops the request, but parsing continues at full CPU. How would you fix it?

    CPU-bound loops must check cancellation. Use a suitable dispatcher and deliberate cancellation checkpoints between bounded units of work.

    KotlinIntermediate3 minPractical scenario
    Practise
  18. Collections API in Kotlin?
    KotlinIntermediate4 min
    Practise
  19. Covariance in Kotlin?
    KotlinIntermediate4 min
    Practise
  20. Delay vs Thread.sleep?

    delay suspends cooperatively; Thread.sleep blocks a thread. Neither is a reliable way to synchronize a test or wait for a request.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  21. Practise
  22. Practise
  23. Practise
  24. Practise
  25. Exception Handling in Coroutine?

    Handle expected failures locally, preserve cancellation, and reason about parent-child propagation; async failure is not postponed until await.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  26. Higher Order Functions in Kotlin?
    KotlinIntermediate4 min
    Practise
  27. How does Coroutine switch context?
    KotlinIntermediate4 min
    Practise
  28. Practise
  29. How to manage series and parallel execution?

    Use sequential calls for dependencies and structured async children for independent results. Concurrency does not guarantee parallel threads.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  30. Practise
  31. Map vs FlatMap in Kotlin?
    KotlinIntermediate4 min
    Practise
  32. Practise
  33. Practise
  34. StateFlow vs SharedFlow?

    StateFlow models a current value; SharedFlow broadcasts emissions with configurable replay and buffering. Neither is a durable event queue.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  35. Suspending vs Blocking in Kotlin Coroutines?

    Suspension can pause a coroutine without occupying its thread. The suspend modifier alone neither moves work off Main nor makes blocking code non-blocking.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  36. Practise
  37. Practise
  38. What happens if we call .cancel() from a coroutine scope?

    Cancelling a scope cancels its Job and children cooperatively. Cancel an operation's Job when you intend to reuse the owner scope.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  39. What is an Init block in Kotlin?
    KotlinIntermediate4 min
    Practise
  40. What is Data Class in Kotlin?
    KotlinIntermediate4 min
    Practise
  41. What is inline function in Kotlin?
    KotlinIntermediate4 min
    Practise
  42. What is SupervisorScope?

    supervisorScope isolates direct child failures, still waits for children, and still propagates cancellation from its caller.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  43. What is Unidirectional Flow?
    KotlinIntermediate4 min
    Practise
  44. When to use Kotlin sealed classes?
    KotlinIntermediate4 min
    Practise
  45. Why Coroutines are lightweight?

    Suspended coroutines can share threads, but each still retains state and resources. Lightweight does not mean unlimited concurrency.

    KotlinIntermediate4 minIn-depth explanation
    Practise
  46. Networking runs on IO, but the app still has ANRs. What would you investigate next?

    Inspect the main thread and its dependencies: parsing, lock contention, synchronous IPC, and initialization can still block responsiveness.

    PerformanceAdvanced3 minPractical scenario
    Practise
  47. A startup optimization feels faster on your phone. How would you prove it?

    Measure repeatable startup journeys on a release-like build with controlled compilation, device conditions, and meaningful readiness metrics.

    PerformanceIntermediate3 minPractical scenario
    Practise
  48. A test sees Success but never Loading from StateFlow. Is the implementation necessarily wrong?

    StateFlow conflates updates. Decide whether you are testing the current state or a required observable intermediate state.

    TestingAdvanced3 minPractical scenario
    Practise
  49. A debounced search test fails randomly in CI. How would you remove real-time waiting?

    Control coroutine time with a shared test scheduler, start collection explicitly, and assert requests before and after the debounce boundary.

    TestingIntermediate3 minPractical scenario
    Practise
  50. Practise
  51. Build an app to perform CRUD operations.
    Machine CodingIntermediate4 min
    Practise
  52. Practise
  53. Build your own LRU cache.
    Machine CodingIntermediate4 min
    Practise
  54. Build an offline-first approach system.
    Machine CodingIntermediate4 min
    Practise
  55. Practise
  56. Practise
  57. Practise
  58. Practise
  59. Practise
  60. Practise
  61. How does Garbage collection work?
    Android BasicsIntermediate4 min
    Practise
  62. What is a dangling pointer?
    Android BasicsIntermediate4 min
    Practise
  63. Elaborate Memory Leak?
    Android BasicsIntermediate4 min
    Practise
  64. Practise
  65. Practise
  66. Practise
  67. Practise
  68. Practise
  69. Practise
  70. Practise
  71. How do you inspect and solve the Jank issue?
    Android BasicsIntermediate4 min
    Practise
  72. How does OutOfMemory happen?
    Android BasicsIntermediate4 min
    Practise
  73. Practise
  74. What is Doze? What about App Standby?
    Android BasicsIntermediate4 min
    Practise
  75. What does setContentView do?
    Android BasicsIntermediate4 min
    Practise
  76. Process of creating a custom view?
    Android BasicsIntermediate4 min
    Practise
  77. Deeplink understanding and architecture?
    Android BasicsIntermediate4 min
    Practise
  78. Notifications?
    Android BasicsIntermediate4 min
    Practise
  79. Practise
  80. Practise
  81. Explain the Android push notification system?
    Android BasicsIntermediate4 min
    Practise
  82. Practise
  83. Practise
  84. What is process death?
    Android BasicsIntermediate4 min
    Practise
  85. Practise
  86. Practise
  87. How many callbacks are in Fragments?
    LifecycleIntermediate4 min
    Practise
  88. Practise
  89. Practise
  90. Practise
  91. Practise
  92. Practise
  93. What happens if you rotate the device?
    LifecycleIntermediate4 min
    Practise
  94. Practise
  95. Practise
  96. Practise
  97. When is onActivityResult called?
    LifecycleIntermediate4 min
    Practise
  98. Practise
  99. Practise
  100. Practise
  101. Practise
  102. Practise
  103. When does ViewModel not survive?
    LifecycleIntermediate4 min
    Practise
  104. What is the role of OkHttp and Retrofit?
    NetworkingIntermediate4 min
    Practise
  105. What design pattern does Retrofit use?
    NetworkingIntermediate4 min
    Practise
  106. Practise
  107. Practise
  108. Practise
  109. Practise
  110. Provides vs Binds in Dependency Injection?
    Dependency InjectionIntermediate4 min
    Practise
  111. Subcomponent vs Component dependency in Dagger?
    Dependency InjectionIntermediate4 min
    Practise
  112. What is a Subcomponent and its use in Dagger?
    Dependency InjectionIntermediate4 min
    Practise
  113. Constructor Injection vs Method Injection?
    Dependency InjectionIntermediate4 min
    Practise
  114. What is the Scope in Dependency Injection?
    Dependency InjectionIntermediate4 min
    Practise
  115. Practise
  116. What is interesting about Hilt?
    Dependency InjectionIntermediate4 min
    Practise
  117. What are your thoughts on Koin?
    Dependency InjectionIntermediate4 min
    Practise
  118. Practise
  119. Practise
  120. What is recomposition in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  121. What is remember in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  122. Why and when to use remember {}?
    Jetpack ComposeIntermediate4 min
    Practise
  123. Difference between LazyColumn and RecyclerView?
    Jetpack ComposeIntermediate4 min
    Practise
  124. What is AndroidView in Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  125. What is the lifecycle of Composables?
    Jetpack ComposeIntermediate4 min
    Practise
  126. Practise
  127. Practise
  128. What is State in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  129. Practise
  130. Practise
  131. Practise
  132. Difference between remember and LaunchedEffect?
    Jetpack ComposeIntermediate4 min
    Practise
  133. What is CompositionLocal?
    Jetpack ComposeIntermediate4 min
    Practise
  134. How to create Custom Views in Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  135. What are the benefits of Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  136. Practise
  137. Practise
  138. How is navigation handled in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  139. Practise
  140. Practise
  141. What is LazyVerticalGrid, and when to use it?
    Jetpack ComposeIntermediate4 min
    Practise
  142. Practise
  143. What is SideEffect, and when to use it?
    Jetpack ComposeIntermediate4 min
    Practise
  144. Practise
  145. Practise
  146. How to handle animation in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  147. What is AnimationSpec, and how to use it?
    Jetpack ComposeIntermediate4 min
    Practise
  148. Practise
  149. Practise
  150. How to create a Snackbar in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  151. What is Scaffold in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  152. How to handle WindowInsets in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  153. What is BackHandler in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  154. How to use a ViewModel in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  155. Practise
  156. What is Paging in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  157. How to use Accompanist libraries for Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  158. How to use Compose with Jetpack Navigation?
    Jetpack ComposeIntermediate4 min
    Practise
  159. What is Layout in Compose, and how does it work?
    Jetpack ComposeIntermediate4 min
    Practise
  160. Practise
  161. How to manage State Hoisting in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  162. Practise
  163. How to test Composables in Jetpack Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  164. Practise
  165. Practise
  166. Practise
  167. Practise
  168. Practise
  169. Practise
  170. Practise
  171. Practise
  172. Practise
  173. Practise
  174. Practise
  175. Practise
  176. Practise
  177. Practise
  178. Practise
  179. Practise
  180. Practise
  181. Practise
  182. How to reduce APK size in Android?
    PerformanceIntermediate4 min
    Practise
  183. Practise
  184. Practise
  185. Practise
  186. Practise
  187. What is the role of the Android Profiler?
    PerformanceIntermediate4 min
    Practise
  188. Practise
  189. How to optimize database queries in Room?
    PerformanceIntermediate4 min
    Practise
  190. Practise
  191. Practise
  192. Difference between Room and SQLite?
    DatabaseIntermediate4 min
    Practise
  193. How to manage migrations in Room?
    DatabaseIntermediate4 min
    Practise
  194. Practise
  195. Practise
  196. Practise
  197. Practise
  198. Practise
  199. Practise
  200. How to test Room database with Hilt?
    DatabaseIntermediate4 min
    Practise
  201. Practise
  202. Practise
  203. Practise
  204. Practise
  205. What is the role of JNI in Android development?
    Advanced TopicsIntermediate4 min
    Practise
  206. Practise
  207. Practise
  208. Practise
  209. How to optimize apps for Android TV?
    Advanced TopicsIntermediate4 min
    Practise
  210. Practise
  211. How to implement app widgets with Glance API?
    Advanced TopicsIntermediate4 min
    Practise
  212. What is Coroutine Context?
    KotlinIntermediate4 min
    Practise
  213. Open keyword in Kotlin?
    KotlinIntermediate4 min
    Practise
  214. Practise
  215. Practise
  216. Practise
  217. Practise
  218. Practise
  219. What is Coroutine Scope??
    KotlinIntermediate4 min
    Practise
  220. Practise
  221. Practise
  222. What are Labels in Kotlin?
    KotlinIntermediate4 min
    Practise
  223. Practise
  224. Practise
  225. Practise
  226. JvmOverloads Annotation in Kotlin?
    KotlinIntermediate4 min
    Practise
  227. Practise
  228. Practise
  229. Practise
  230. How does Garbage collection works?
    AndroidIntermediate3 min
    Practise
  231. Practise
  232. Practise
  233. Practise
  234. Practise
  235. Practise
  236. Practise
  237. Practise
  238. How does the OutOfMemory happen?
    AndroidIntermediate3 min
    Practise
  239. Practise
  240. Practise
  241. Practise
  242. Practise
  243. Practise
  244. Practise
  245. Practise
  246. Practise
  247. Practise
  248. Practise
  249. Why Coroutines are light weight?
    LifecycleIntermediate3 min
    Practise
  250. Practise
  251. Dispatchers .Default vs Dispatcher .IO
    LifecycleIntermediate3 min
    Practise
  252. Delay vs Thread.sleep?
    LifecycleIntermediate3 min
    Practise
  253. Practise
  254. Practise
  255. Practise
  256. Provides vs binds
    Dependency InjectionIntermediate3 min
    Practise
  257. Practise
  258. Practise
  259. Practise
  260. What's interesting about Hilt?
    Dependency InjectionIntermediate3 min
    Practise
  261. Did you use Koin? What are your thoughts on it?
    Dependency InjectionIntermediate3 min
    Practise
  262. Practise
  263. Practise
  264. Practise
  265. **What is `remember` in compose?**
    Jetpack ComposeIntermediate3 min
    Practise
  266. Practise
  267. Practise
  268. Practise
  269. Why and when to use `remember {}`?
    Jetpack ComposeIntermediate3 min
    Practise
  270. What is the lifecycle of composeables?
    Jetpack ComposeIntermediate3 min
    Practise
  271. Practise
  272. What is State?
    Jetpack ComposeIntermediate3 min
    Practise
  273. Practise
  274. Practise
  275. Difference b/w remember and LaunchedEffect
    Jetpack ComposeIntermediate3 min
    Practise
  276. Practise
  277. Practise
  278. Custom views in compose
    Jetpack ComposeIntermediate3 min
    Practise
  279. Canvas in Compose
    Jetpack ComposeIntermediate3 min
    Practise
  280. Practise
  281. What is Strong Skipping Mode?
    Jetpack ComposeIntermediate3 min
    Practise
  282. Different types of threads?
    ThreadIntermediate3 min
    Practise
  283. Practise
  284. Thread <-> Handler <-> looper
    ThreadIntermediate3 min
    Practise
  285. UI vs Background Thread
    ThreadIntermediate3 min
    Practise
  286. Practise
  287. Practise
  288. Practise
  289. Practise
  290. Practise
  291. What is a Race Condition?
    ThreadIntermediate4 min
    Practise
  292. Practise
  293. Practise
  294. Practise
  295. Practise
  296. Practise
  297. Practise
  298. What are SOLID principles?
    ArchitectureIntermediate3 min
    Practise
  299. What is MVVM?
    ArchitectureIntermediate3 min
    Practise
  300. Brief about Android Architecture.
    ArchitectureIntermediate3 min
    Practise
  301. MVP vs MVVM?
    ArchitectureIntermediate3 min
    Practise
  302. Practise
  303. Clean Architecture
    ArchitectureIntermediate3 min
    Practise
  304. MVVM vs MVI
    ArchitectureIntermediate3 min
    Practise
  305. What is Clean Architecture in MVVM
    ArchitectureIntermediate3 min
    Practise
  306. Practise
  307. What is SOLID principle?
    Design PatternIntermediate3 min
    Practise
  308. Practise
  309. What is a creational pattern?
    Design PatternIntermediate3 min
    Practise
  310. What is a structural pattern?
    Design PatternIntermediate3 min
    Practise
  311. What is a behavioral pattern?
    Design PatternIntermediate3 min
    Practise
  312. Practise
  313. Create Observer Pattern
    Design PatternIntermediate3 min
    Practise
  314. Create Adapter Pattern
    Design PatternIntermediate3 min
    Practise
  315. How to make a Singleton Pattern Thread Safe?
    Design PatternIntermediate3 min
    Practise
  316. What is Dependency Inversion
    Design PatternIntermediate3 min
    Practise
  317. Practise
  318. Practise
  319. Design Image Loading Library
    System DesignAdvanced3 min
    Practise
  320. Design Image Downloading Library
    System DesignAdvanced3 min
    Practise
  321. Design LRU Cache
    System DesignAdvanced3 min
    Practise
  322. Practise
  323. Design Networking Library
    System DesignAdvanced3 min
    Practise
  324. Design Checkout Screen
    System DesignAdvanced3 min
    Practise
  325. Design Error handling Structure
    System DesignAdvanced3 min
    Practise
  326. REST <-> Web Sockets
    System DesignIntermediate3 min
    Practise
  327. Implement caching mechanism
    System DesignIntermediate3 min
    Practise
  328. Build an offline-first app
    System DesignIntermediate3 min
    Practise
  329. Design Analytics Library
    System DesignAdvanced3 min
    Practise
  330. How does Glide internally work?
    LibrariesIntermediate3 min
    Practise
  331. How does retrofit work internally?
    LibrariesIntermediate3 min
    Practise
  332. ViewModel internal working
    LibrariesIntermediate3 min
    Practise
  333. Practise
  334. `String` vs `StringBuilder`
    Common QuestionIntermediate3 min
    Practise
  335. `==` vs `.equals`?
    Common QuestionIntermediate3 min
    Practise
  336. `===` vs `==`?
    Common QuestionIntermediate3 min
    Practise
  337. Java OOP concepts
    Common QuestionIntermediate3 min
    Practise
  338. What is `rememberSaveable` vs `remember`?
    Jetpack ComposeIntermediate3 min
    Practise
  339. Practise
  340. Practise
  341. Difference between `@Provides` vs `@Binds` in Hilt?
    Dependency InjectionIntermediate3 min
    Practise
  342. `launch` vs `async` in Coroutines?
    KotlinIntermediate3 min
    Practise
  343. Practise
  344. What is Clean Architecture and its layers?
    Android BasicsIntermediate4 min
    Practise
  345. Practise
  346. Practise
  347. What is Scoped Storage in Android?
    DatabaseIntermediate4 min
    Practise
  348. Mockito vs Mockk?
    TestingIntermediate3 min
    Practise
  349. What is `CompositionLocal` and when to use it?
    Jetpack ComposeIntermediate3 min
    Practise
  350. Practise
  351. Practise
  352. Practise
  353. Practise
  354. Practise
  355. Sealed Class vs Enum?
    KotlinIntermediate3 min
    Practise
  356. Practise
  357. Practise
  358. Practise
  359. Usage of `@JvmStatic` annotation?
    KotlinIntermediate3 min
    Practise
  360. Practise
  361. Practise
  362. Practise
  363. Practise
  364. Fragment Lifecycle vs View Lifecycle?
    LifecycleIntermediate4 min
    Practise
  365. Practise
  366. Practise
  367. Dalvik vs ART (Android Runtime)?
    Android BasicsAdvanced4 min
    Practise
  368. Practise
  369. Service vs IntentService vs JobIntentService?
    Android BasicsIntermediate4 min
    Practise
  370. Practise
  371. `PendingIntent` immutability flags?
    Android BasicsIntermediate3 min
    Practise
  372. `Parcelable` vs `Serializable` performance?
    Android BasicsIntermediate3 min
    Practise
  373. Practise
  374. `derivedStateOf` use cases?
    Jetpack ComposeAdvanced3 min
    Practise
  375. `rememberUpdatedState` explanation?
    Jetpack ComposeAdvanced3 min
    Practise
  376. `LazyColumn` internals vs `RecyclerView`?
    Jetpack ComposeAdvanced4 min
    Practise
  377. Practise
  378. Using `ConstraintLayout` in Compose?
    Jetpack ComposeIntermediate3 min
    Practise
  379. Practise
  380. Testing Compose UI (Semantics tree)?
    TestingIntermediate4 min
    Practise
  381. `subcompose` layout modifier?
    Jetpack ComposeAdvanced4 min
    Practise
  382. Intrinsic measurements in Compose?
    Jetpack ComposeAdvanced4 min
    Practise
  383. Practise
  384. Practise
  385. Practise
  386. Practise
  387. Usage of `yield()` in Coroutines?
    KotlinIntermediate3 min
    Practise
  388. SOLID Principles in Android context?
    Android BasicsAdvanced5 min
    Practise
  389. Benefits of the Repository Pattern?
    Android BasicsIntermediate3 min
    Practise
  390. Necessity of UseCases/Interactors?
    Android BasicsIntermediate3 min
    Practise
  391. Practise
  392. Single Activity Architecture pros and cons?
    Android BasicsIntermediate3 min
    Practise
  393. Practise
  394. Qualifier annotations (`@Named` etc)?
    Dependency InjectionIntermediate3 min
    Practise
  395. Constructor Injection vs Field Injection?
    Dependency InjectionIntermediate3 min
    Practise
  396. Practise
  397. Caching strategies in Retrofit?
    NetworkingAdvanced4 min
    Practise
  398. Room vs SQLite differences?
    DatabaseBeginner3 min
    Practise
  399. DataStore: Preferences vs Proto?
    DatabaseIntermediate3 min
    Practise
  400. Practise
  401. Espresso vs Compose Test Rule?
    TestingIntermediate3 min
    Practise
  402. Practise
  403. What are Baseline Profiles?
    PerformanceAdvanced4 min
    Practise
  404. Practise
  405. Practise
  406. Practise
  407. When and how to use `typealias`?
    KotlinIntermediate3 min
    Practise
  408. Practise
  409. Practise
  410. Practise
  411. Practise
  412. Practise
  413. Practise
  414. Practise
  415. Practise
  416. Practise
  417. How and when to use `produceState`?
    Jetpack ComposeIntermediate3 min
    Practise
  418. Using `snapshotFlow` to convert State to Flow?
    Jetpack ComposeIntermediate3 min
    Practise
  419. Practise
  420. Practise
  421. Practise
  422. Basics of drawing with `Canvas` in Compose?
    Jetpack ComposeIntermediate4 min
    Practise
  423. How to handle gestures using `PointerInput`?
    Jetpack ComposeIntermediate4 min
    Practise
  424. Practise
  425. What is the role of the Zygote process?
    Advanced TopicsAdvanced4 min
    Practise
  426. Practise
  427. Practise
  428. What is the role of SurfaceFlinger?
    Advanced TopicsAdvanced4 min
    Practise
  429. Explain the Android Boot Process steps?
    Advanced TopicsAdvanced5 min
    Practise
  430. What is the internal structure of an APK?
    Android BasicsIntermediate3 min
    Practise
  431. What are DEX files?
    Android BasicsIntermediate3 min
    Practise
  432. Android App Bundle (AAB) vs APK?
    Android BasicsIntermediate3 min
    Practise
  433. Practise
  434. Evolution of the Android Permission Model?
    Android BasicsIntermediate4 min
    Practise
  435. Practise
  436. Practise
  437. Practise
  438. Practise
  439. Preventing SQL Injection in Android?
    SecurityIntermediate3 min
    Practise
  440. Hilt Application Component vs Activity Component?
    Dependency InjectionIntermediate3 min
    Practise
  441. What is Assisted Injection in Hilt?
    Dependency InjectionAdvanced4 min
    Practise
  442. What are Multibindings with Dagger/Hilt?
    Dependency InjectionAdvanced4 min
    Practise
  443. What is Lazy Injection?
    Dependency InjectionIntermediate3 min
    Practise
  444. Explain Scopes in Koin?
    Dependency InjectionIntermediate3 min
    Practise
  445. What is Certificate Pinning?
    NetworkingAdvanced4 min
    Practise
  446. How to use WebSockets with OkHttp?
    NetworkingIntermediate4 min
    Practise
  447. Using GraphQL in Android (Apollo)?
    NetworkingIntermediate4 min
    Practise
  448. Practise
  449. Practise
  450. How to use SysTrace?
    PerformanceAdvanced4 min
    Practise
  451. What is Perfetto and how to use it?
    PerformanceAdvanced4 min
    Practise
  452. Features of the Layout Inspector?
    PerformanceIntermediate3 min
    Practise
  453. Features of the Database Inspector?
    PerformanceIntermediate3 min
    Practise
  454. Techniques to reduce APK size?
    PerformanceIntermediate4 min
    Practise
  455. How to handle Flaky Tests?
    TestingAdvanced4 min
    Practise
  456. Practise
  457. Practise
  458. Practise
  459. Practise
  460. Practise
  461. Practise
  462. Practise
  463. What is the Navigator Pattern for navigation?
    Android BasicsIntermediate3 min
    Practise
  464. Practise
  465. Kotlin DSL (KTS) vs Groovy for Gradle?
    Advanced TopicsIntermediate3 min
    Practise
  466. Explain the Gradle Task Lifecycle?
    Advanced TopicsAdvanced4 min
    Practise
  467. Build Variants vs Product Flavors?
    Android BasicsIntermediate3 min
    Practise
  468. Basics of ProGuard rules syntax?
    Advanced TopicsAdvanced4 min
    Practise
  469. What are the benefits of Version Catalogs?
    Advanced TopicsIntermediate3 min
    Practise
  470. How to chain requests in WorkManager?
    Android BasicsIntermediate3 min
    Practise
  471. Handling Deep Links with Navigation Component?
    Android BasicsIntermediate3 min
    Practise
  472. Practise
  473. CameraX vs Camera2 API?
    Android BasicsIntermediate4 min
    Practise
  474. Basics of Media3 / ExoPlayer?
    Android BasicsIntermediate4 min
    Practise