General Kotlin and Android Dev
Kotlin & Language
What are the key differences between
inline,noinline, andcrossinlinefunctions in Kotlin?How do coroutines differ from RxJava in terms of cancellation, backpressure, and thread management?
Explain the difference between
FlowandLiveData—when would you choose one over the other?What are reified type parameters and what limitations do they solve?
How does Kotlin's delegation pattern (
by) work under the hood, and where have you used it in production?What are the risks of using
suspendfunctions inside non-suspending lambdas?How do you handle structured concurrency when launching coroutines in custom
ViewModelscopes?Explain the difference between
SharedFlowandStateFlowwith respect to configuration and replay behavior.What is the purpose of
sealedclasses versussealedinterfaces in Kotlin, and how do they affect exhaustivewhenexpressions?How do you prevent memory leaks when using coroutines in custom views or long-lived components?
Android Architecture & Design Patterns
Describe the evolution of your app's architecture from MVP to MVVM to MVI—what drove each transition?
How do you enforce unidirectional data flow in a large-scale app with multiple feature modules?
What is your approach to designing a clean architecture boundary between domain and data layers?
How do you handle navigation in a multi-module app—do you prefer the Navigation Component, custom routers, or something else?
What are the trade-offs of using a monolithic
ViewModelversus splitting state into multiple smallerViewModels?How do you manage shared state across features without creating tight coupling?
Explain how you would architect a feature that needs to work both online and offline with eventual consistency.
What strategies do you use to prevent
ViewModelbloat when a screen has complex business logic?How do you approach error handling architecture—do you use
Resulttypes, exceptions, or domain-specific error models?Describe how you would structure a feature module to be reusable across multiple apps in your organization.
Jetpack Compose & UI
How does Compose's recomposition model differ from the traditional View system's invalidate/measure/layout cycle?
What techniques do you use to optimize recomposition in deeply nested Composable hierarchies?
How do you handle state hoisting when a Composable is used across multiple screens with different state requirements?
Explain the difference between
remember,rememberSaveable, andderivedStateOfwith concrete use cases.How do you integrate Compose into an existing large codebase using the legacy View system?
What is your strategy for theming and design system adoption in Compose at scale?
How do you test Composables that rely on
LaunchedEffectorDisposableEffect?What are the pitfalls of using
Modifierchains extensively, and how do you avoid them?How do you handle animations in Compose while maintaining 60fps on low-end devices?
Describe your approach to building accessible Composables—what tools and testing practices do you enforce?
Performance & Optimization
How do you diagnose and fix ANRs in production, not just during development?
What is your process for investigating memory leaks using the Memory Profiler and Heap Dumps?
How do you optimize RecyclerView scrolling performance when dealing with heterogeneous view types and images?
What strategies do you use to reduce APK size in a multi-module app with heavy native dependencies?
How do you benchmark app startup time, and what specific optimizations have you implemented?
Explain how you would optimize battery consumption for an app using location services in the background.
What are the trade-offs between using ProGuard, R8, and DexGuard in a commercial app?
How do you handle large bitmaps without running into
OutOfMemoryError?What tools do you use to profile jank and frame drops, and what are the most common causes you've fixed?
How do you optimize Room database queries for screens that display complex relational data?
Networking, Data & Storage
How do you design a network layer that gracefully handles flaky connectivity and retries?
What is your strategy for caching API responses—do you prefer OkHttp cache, Room, or a custom solution?
How do you handle API versioning and backward compatibility when the backend ships breaking changes?
Explain your approach to syncing local database state with remote server state in a conflict-prone environment.
How do you manage API keys and sensitive configuration in a way that resists reverse engineering?
What is your experience with GraphQL on Android, and how does it compare to REST in production?
How do you implement pagination at the data layer—Paging 3, custom solutions, or a hybrid?
Describe how you would migrate a production database schema using Room without data loss.
How do you handle large JSON payloads efficiently without blocking the UI thread?
What is your approach to data serialization—Kotlinx Serialization, Moshi, Gson, or Protobuf? Why?
Testing & Quality Assurance
What is your testing pyramid for an Android app, and what coverage thresholds do you enforce?
How do you write effective UI tests for flows that depend on biometric authentication or hardware sensors?
What is your strategy for testing ViewModels that interact with multiple UseCases and Repositories?
How do you handle flaky Espresso tests in CI, and what alternatives have you evaluated?
What mocking framework do you prefer—MockK, Mockito-Kotlin, or fakes—and why?
How do you test coroutine-based code that involves
Dispatchers.IOorDispatchers.Main?Describe your approach to screenshot testing and how you prevent visual regressions.
How do you enforce code quality standards across a team of developers with varying skill levels?
What is your process for conducting thorough code reviews on architectural changes?
How do you test edge cases in background work like WorkManager tasks or foreground services?
Security
How do you securely store OAuth tokens and refresh tokens on Android?
What is your approach to certificate pinning, and how do you handle certificate rotation?
How do you protect against reverse engineering and tampering in a high-risk app?
Explain how Android Keystore System works and when you would use it over EncryptedSharedPreferences.
What measures do you take to prevent intent hijacking and exported component vulnerabilities?
How do you handle root detection and emulator detection in financial or healthcare apps?
What is your strategy for obfuscating sensitive business logic beyond standard R8 rules?
How do you implement secure inter-process communication between your app and a SDK or partner app?
What are the risks of using
WebViewfor sensitive flows, and how do you mitigate them?How do you ensure compliance with GDPR or CCPA data handling requirements in your Android app?
Background Processing & System Integration
How do you choose between WorkManager, Foreground Service, AlarmManager, and JobScheduler for a given task?
What are the implications of Android 12+ restrictions on foreground services and exact alarms?
How do you implement reliable push notification delivery using FCM, especially for time-sensitive data?
Describe how you would design a background sync engine that respects Doze mode and App Standby.
How do you handle Bluetooth LE scanning and connections while managing battery impact?
What is your experience with Android's Camera2/CameraX APIs, and how do you handle device-specific quirks?
How do you implement deep linking that works consistently across notification taps, widgets, and external apps?
What strategies do you use for handling media playback in the background with proper audio focus?
How do you manage permissions across Android versions, especially for location, notifications, and Bluetooth?
Describe your approach to implementing widgets and ensuring they update reliably without draining battery.
Build System, CI/CD & Tooling
How do you structure a Gradle build to support multiple build variants, flavors, and feature modules efficiently?
What is your strategy for managing dependency versions across a large multi-module project?
How do you optimize Gradle build times for a team of 10+ developers?
Describe your CI/CD pipeline—what checks run on PR, merge, and release builds?
How do you automate app distribution to internal testers, beta users, and production?
What is your approach to versioning and release management in a fast-paced delivery cycle?
How do you handle build failures caused by transitive dependency conflicts?
What static analysis tools do you enforce—Detekt, KtLint, Android Lint, custom rules?
How do you manage secrets and signing configurations in CI without exposing them in repository history?
Describe how you would set up a modular build system where features can be developed and tested in isolation.
Leadership, Team & Process
How do you onboard a junior developer and bring them up to speed on your team's architecture?
Describe a time you had to push back on a product requirement due to technical constraints—how did you handle it?
How do you balance shipping features quickly with maintaining long-term code health?
What is your approach to resolving technical disagreements within the team?
How do you mentor developers who are resistant to adopting new patterns like Compose or coroutines?
Describe how you would plan the migration of a legacy Java codebase to Kotlin while keeping the app shippable.
How do you ensure knowledge is distributed and no single developer is a bottleneck?
What is your process for evaluating new libraries or architectural patterns before team-wide adoption?
How do you communicate technical debt and its impact to non-technical stakeholders?
How do you handle a critical production crash when the root cause is unclear and pressure is high?
System Design & Cross-Functional
Design a real-time chat feature that supports offline messaging, media sharing, and end-to-end encryption.
How would you architect an app that needs to support both phone and tablet form factors with shared code?
Design a navigation and routing system for an app with 50+ screens and deep linking requirements.
How would you build a SDK that third-party developers integrate into their apps—what constraints matter most?
Describe the architecture for an app that streams video with adaptive bitrate and offline download support.
How would you design a feature flag system that works across Android, iOS, and backend?
Design a local-first architecture where the app remains fully functional without network for days.
How would you approach building a white-label Android app framework used by multiple brands?
Describe how you would design an analytics pipeline that respects user privacy while providing product insights.
How would you architect an Android app that integrates with a complex existing backend built for web-first?
Emerging Tech & Future-Proofing
What is your assessment of Kotlin Multiplatform for sharing code between Android and iOS in production?
How do you evaluate the maturity of Jetpack Compose for replacing an entire existing UI layer?
What is your understanding of Android's declarative UI evolution beyond Compose—like Glance for widgets?
How do you stay current with Android platform changes and decide when to adopt new APIs?
What is your view on large language models or on-device AI integration in Android apps?
How do you approach foldable and large-screen device support from an architectural standpoint?
What role do you see for Baseline Profiles and Macrobenchmark in your performance strategy?
How do you think about Wear OS, TV, or Auto development in relation to your mobile app strategy?
What is your experience with server-driven UI frameworks, and when are they appropriate?
How would you prepare your team's architecture for potential future platform shifts or form factors?
Last updated