tezvyn:

📱Mobile Dev

Mobile app development across platforms

351 bites

Android & Kotlin30 sec read

Why choose DataStore over SharedPreferences for a toggle?

This tests your grasp of modern Android storage safety beyond syntax. A strong answer names DataStore's async coroutines API, type safety, transactions, and migration support. A red flag is claiming SharedPreferences is simpler while ignoring ANR risk.

Android & Kotlin31 sec read

What are Room's three main components and their functions?

Tests whether you know Room's architectural layers. Name the three: Database holds config and is the access point; Entity represents a table schema; DAO defines SQL operations. Red flag: confusing DAOs with Repositories or claiming Room is a full ORM.

Android & Kotlin30 sec read

How would you architect state-driven UI with ViewModel and Compose?

Tests unidirectional data flow and state hoisting. Model screen state as an immutable data class, expose StateFlow from ViewModel, and collect it in Compose so events flow up and state down. Red flag: exposing mutable state or putting logic in Composables.

Android & Kotlin30 sec read

How do you navigate between feature modules without direct dependencies?

This tests architectural decoupling in multi-module Android apps. A great answer describes a shared navigation contract or deep-link router that lets features stay independent. Recommending direct Gradle dependencies between features is a major red flag.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec read

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

WHAT IT TESTS: Separation of concerns beyond basic MVVM. ANSWER OUTLINE: UseCases encapsulate single business rules between ViewModel and Repository, keeping ViewModels lean and Repositories focused on data.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec read

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

WHAT IT TESTS: LiveData replays one-time events after rotation. A GOOD ANSWER COVERS: State is not events; suggest an Event wrapper with a consumed flag, or SharedFlow or Channel with no replay. RED FLAG: Praising SingleLiveEvent or onCleared resets as fix.

Android & Kotlin30 sec read

How do you pass data between Fragments with Jetpack Navigation?

WHAT IT TESTS: Type-safe argument flow in Navigation. ANSWER OUTLINE: Define args in nav graph XML, navigate with generated Directions, read with navArgs() in target Fragment. RED FLAG: Direct Fragment constructors, manual Bundles, or Activity Intent extras.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec read

Difference between remember and rememberSaveable

WHAT IT TESTS: Compose state vs saved state. ANSWER OUTLINE: remember survives recompositions only; rememberSaveable uses Bundle state for config changes and process death; use for UI state after recreation. RED FLAG: Claiming it uses ViewModel or disk.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec read

Describe state hoisting and its benefits in Compose

WHAT IT TESTS: Understanding unidirectional data flow in declarative UI. ANSWER OUTLINE: Move state to the caller, pass value and event lambda down, keep them stateless. RED FLAG: Internal state in reusable composables or calling hoisting boilerplate.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec 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.

Android & Kotlin30 sec 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.

Android & Kotlin31 sec read

What happens to a bound service during config changes and multiple clients?

Tests bound service reference counting. Config change destroys the Activity binding; if no other clients exist, the service stops. Multiple clients keep it alive until the last unbind. Red flag: assuming the service survives config changes without a rebind.