The Senior Signal Flashcards
BEHAVIORAL › Soft Skills
- What most distinguishes a senior from a mid-level Android engineer in an interview?
- Judgment and ownership: weighing trade-offs against real constraints, justifying decisions, de-risking change, and considering team and production impact, rather than just implementing a known solution.
- How would you migrate a large XML view codebase to Jetpack Compose without halting feature delivery?
- Incrementally via interop. Use ComposeView inside existing screens and AndroidView/Fragments to host the other direction, migrate leaf screens or components first, keep a shared design system, and ship behind flags screen-by-screen rather than a big-bang rewrite.
- What is a sound strategy for a Java to Kotlin migration?
- Kotlin and Java interoperate in the same module, so convert file-by-file (often starting with new code and well-tested classes). Add nullability annotations to remaining Java, lean on the IDE converter then hand-clean idioms, and avoid rewriting working code purely for style.
- How do you approach replacing RxJava with Kotlin coroutines and Flow?
- Bridge incrementally: convert streams with kotlinx-coroutines-rx adapters (asFlow, await, rxSingle), migrate one layer or feature at a time, map Observable to Flow and Single to suspend functions, and keep both running until each surface is fully ported and tested.
- What is crash-free rate and why do seniors track it?
- The percentage of users (or sessions) that experienced no crash in a window. It is a top-line stability KPI; teams set a release gate (often 99.5 percent or higher crash-free users) and halt or roll back a rollout if it dips.
- Why use a staged (percentage) rollout on Google Play?
- It releases a new version to a small slice of users first, so you can watch crash-free rate, ANRs, and key metrics before widening. If something regresses you halt the rollout, limiting blast radius without a full recall.
- When is a feature flag the right tool versus a staged rollout?
- A staged rollout controls who gets the binary; a feature flag controls behavior independent of release, enabling server-side kill switches, gradual ramps, A/B tests, and decoupling deploy from launch. They are complementary, not interchangeable.
- How do you decide module boundaries in a multi-module Android app?
- By feature and responsibility with a clear dependency direction (features depend on shared core/domain, never on each other). Good boundaries improve build parallelism and incremental compilation, enforce separation via API/implementation visibility, and reduce merge contention.
- An interviewer asks how you mentor. What signals a senior answer?
- Concrete leverage: raising the team via code-review standards and design docs, pairing and unblocking rather than taking over, giving context behind decisions, and measuring success by others' growth and the system's health, not personal output.