On this page
Most Compose interview questions test one idea from different angles: UI is a function of state, and Compose re-runs only what reads changed state. If you can explain that clearly, with phases, stability and effects, you can handle the follow-ups.
Fundamentals
What is a composable function?
A Kotlin function annotated with @Composable that describes UI. The compiler plugin transforms it so it can participate in composition, remember values, and be skipped or re-run.
What triggers recomposition?
Writes to Compose State objects that a composable read during its last execution. Only those readers (and children whose inputs changed) recompose.
Can composables run in any order or in parallel?
You must assume they can run in any order and be skipped or re-run frequently. That's why bodies must be side-effect free and idempotent.
State
remember vs rememberSaveable vs ViewModel?
remember: recomposition only. rememberSaveable: plus configuration changes and process death (Bundle). ViewModel: screen state across configuration changes, with business logic.
What is state hoisting, and how high should state go?
Pass value plus onValueChange instead of keeping state inside. Hoist to the lowest common ancestor that needs it, and keep business state in the ViewModel.
Why is mutableStateOf(mutableListOf()) a bug?
Mutating the list doesn't write the State, so no recomposition happens. Use immutable lists with copy, or mutableStateListOf.
Side effects
When do you use LaunchedEffect vs rememberCoroutineScope?
LaunchedEffect(keys) runs coroutines when entering composition or when keys change. rememberCoroutineScope launches coroutines from callbacks such as clicks.
What is DisposableEffect for?
Registering something with a guaranteed cleanup in onDispose, for example lifecycle observers and listeners.
What does rememberUpdatedState solve?
Long-running effects capturing a stale lambda or value. It gives access to the latest value without restarting the effect.
Performance
What is stability, and what is strong skipping?
Compose skips a composable when its parameters are equal and considered stable. Strong skipping (default in recent compiler versions) allows skipping with unstable parameters using instance equality, and auto-remembers lambdas.
How do you avoid recomposing on every scroll pixel?
Read scroll state in layout or draw lambdas (Modifier.offset { }, graphicsLayer { }), or derive booleans with derivedStateOf.
val showButton by remember { derivedStateOf { listState.firstVisibleItemIndex > 0 } }Why give lazy list items keys?
Stable identity preserves item state and scroll position on insertions, enables item animations, and avoids unnecessary recomposition.
Navigation, theming, testing, interop
How does navigation work in Compose?
Navigation 3 keeps the back stack as Compose state rendered by NavDisplay. Navigation Compose (2.x) uses NavHost and NavController with type-safe routes. Pass IDs, not objects. See Navigation.
How do you theme a Compose app?
MaterialTheme with color schemes (optionally dynamic color), typography and shapes, plus custom tokens via CompositionLocal.
How do you test Compose?
The semantics tree with createComposeRule: finders, actions and assertions, plus screenshot tests for visuals.
How do Compose and Views interoperate?
ComposeView hosts Compose inside Views, and AndroidView hosts Views inside Compose.
Practical task tips
- Split Route (ViewModel) and Screen (stateless) composables.
- Model state as a single immutable UiState, with loading, error and empty states.
- Use keys in lazy lists, and keep composables small with a
modifierparameter.
Frequently asked questions
Will I be asked to write a custom layout?
Occasionally for senior roles. Know the Layout measure-and-place pattern. See Custom Layouts.
Do interviews still cover Views?
Often both. Be ready to compare Compose with Views and to explain migration.
Conclusion
Compose interviews test the state โ recomposition โ phases model, state ownership, side-effect APIs and performance techniques. Explain them with small examples, and show you can build clean, stateless, testable screens.
Next step: prepare system-level questions with Android Architecture Interview Questions.
Official references
๐ฑ Apps built by Yunok Tech
Real Android apps on Google Play, free to download.
Walzi4K wallpapers for lock and home screenGet it โธ
NotiVaultNotification history: recover dismissed notificationsGet it โธ
Ready to build real Android applications?
Jetpack Compose clicks once you build real screens with real state. Practise modern Android UI development on projects that go beyond toy examples.
Move beyond theory and strengthen your Android development skills with Yunoktech's Android course. Learn core concepts, practical implementation, modern Android development techniques, and the reasoning behind building maintainable applications.
Explore the Android course and take your next step as an Android developer.