Skip to content
tezvyn:
Menu

📱Mobile Dev

Mobile app development across platforms

1327 bites

Test yourself: Top 30 Mobile Dev interview questions →Multiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Everything in Mobile Dev, page 29

How would you architect two source Flows from ViewModel to data layer?
advanced2 min read

How would you architect two source Flows from ViewModel to data layer?

This tests merging parallel async streams into one reactive state. A strong answer uses combine on two cold repository Flows, exposes one UI state Flow from the ViewModel, and maps failures to error states. Red flag: using two coroutines mutating shared state.

Explain the purpose of a UseCase and how it fits into MVVM
intermediate2 min read

Explain the purpose of a UseCase and how it fits into MVVM

UseCases encapsulate single business rules between ViewModel and Repository, keeping ViewModels lean and Repositories focused on data.

How do you share a ViewModel across multiple Fragments?
intermediate2 min read

How do you share a ViewModel across multiple Fragments?

Tests ViewModel scoping and Fragment communication. A strong answer names activityViewModels or navGraphViewModels, warns about Activity memory retention and hidden coupling, and suggests a parent Fragment or data flow alternative.

How would you use a nested navigation graph for a login flow?
intermediate2 min read

How would you use a nested navigation graph for a login flow?

Tests modular navigation scoping. Strong answers group the three screens under a nested graph with its own start destination, noting encapsulation and reusability.

Why is LiveData<Boolean> problematic for one-time ViewModel events?
intermediate2 min read

Why is LiveData<Boolean> problematic for one-time ViewModel events?

State is not events; suggest an Event wrapper with a consumed flag, or SharedFlow or Channel with no replay.

How do you pass data between Fragments with Jetpack Navigation?
easy2 min read

How do you pass data between Fragments with Jetpack Navigation?

Define args in nav graph XML, navigate with generated Directions, read with navArgs() in target Fragment.

Explain the roles of ViewModel, Repository, and data source in MVVM
easy2 min read

Explain the roles of ViewModel, Repository, and data source in MVVM

Tests your grasp of unidirectional data flow and separation of concerns in Android MVVM. A strong answer maps ViewModel to UI state, Repository to data coordination, and Room or Retrofit to I/O.

What is a ViewModel and what lifecycle problem does it solve?
easy1 min read

What is a ViewModel and what lifecycle problem does it solve?

Tests config-change survival: ViewModel outlives Activity recreation so state survives rotation. Strong answer notes it holds non-serializable data and separates concerns, but does not survive process death.

Diagnose Compose recomposition issues and explain lambda stability
advanced2 min read

Diagnose Compose recomposition issues and explain lambda stability

Tests Compose skipping and stability. Strong answers name recomposition counts, compiler metrics, and immutable state, then explain unremembered lambdas create new instances and prevent skipping.

Difference between remember and rememberSaveable
advanced2 min read

Difference between remember and rememberSaveable

Remember survives recompositions only; rememberSaveable uses Bundle state for config changes and process death; use for UI state after recreation.

How do you display a large list efficiently in Jetpack Compose?
intermediate2 min read

How do you display a large list efficiently in Jetpack Compose?

This tests understanding of Compose lazy versus eager layout. A strong answer names LazyColumn or LazyRow, notes visible-only composition, and contrasts Column which lays out everything upfront.

Which side-effect handler for a one-time coroutine on composition entry?
intermediate2 min read

Which side-effect handler for a one-time coroutine on composition entry?

Tests Compose side-effect API boundaries. Answer: LaunchedEffect(Unit); it runs once and auto-cancels on exit. Contrast with rememberCoroutineScope for user-triggered callbacks. Red flag: picking SideEffect or rememberCoroutineScope and missing cancellation.

Describe state hoisting and its benefits in Compose
intermediate2 min read

Describe state hoisting and its benefits in Compose

Move state to the caller, pass value and event lambda down, keep them stateless.

Explain Jetpack Compose recomposition, its triggers, and optimizations.
intermediate2 min read

Explain Jetpack Compose recomposition, its triggers, and optimizations.

This tests grasp of Compose's reactive model. A strong answer defines recomposition as recomputing composables when state changes, notes State triggers it, and explains Compose skips unchanged subtrees via smart tracking.

Arrange UI elements vertically or horizontally in Jetpack Compose
easy2 min read

Arrange UI elements vertically or horizontally in Jetpack Compose

Tests declarative layout fundamentals. Good answers name Column and Row, explain Modifier as an ordered chain of decoration and layout behavior, and note order changes semantics. Red flag: calling Modifier "just styling" or confusing it with LinearLayout.

What is remember in Compose and how do you use mutableStateOf?
easy2 min read

What is remember in Compose and how do you use mutableStateOf?

This tests state survival across recompositions. Good answers say remember caches values across recompositions, pairs with mutableStateOf for observable state, and shows a counter. A red flag is mutableStateOf without remember, state resets per recomposition.

intermediate2 min read

How does ConstraintLayout enable flat responsive UIs with chains and barriers?

It tests constraint-based positioning and flat hierarchy performance. A strong answer covers relative constraints replacing nested layouts, chains for distributing groups, and barriers for dynamic alignment to extreme edges.

Difference between Style and Theme, and how ?attr/ resolves vs @color/
intermediate2 min read

Difference between Style and Theme, and how ?attr/ resolves vs @color/

Probes Android resource indirection depth. A style targets one View; a theme targets a Context. ?attr/ resolves dynamically against the current theme at runtime, but @color/ is a static compile-time constant. Red flag: saying both resolve the same way.

Explain the difference between LinearLayout, RelativeLayout, and FrameLayout
easy2 min read

Explain the difference between LinearLayout, RelativeLayout, and FrameLayout

Understanding of ViewGroup measurement and simplicity versus flexibility tradeoffs. LinearLayout for 1D lists, RelativeLayout for complex sibling rules, FrameLayout for single-child or overlap.

advanced2 min read

How does Android manage ContentProvider lifecycle and threading across processes?

Tests Android IPC and provider architecture. Strong answers explain lazy per-process instantiation via AMS, ContentResolver as the client binder proxy, and query executing on a binder thread. Red flag: claiming the provider runs in the caller process.

We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.

See open roles