5 exercises — choose the best-structured answer to common Mobile Developer interview questions covering React Native, Flutter, state management, deep linking, and testing.
Structure for Mobile Developer answers
Tip 1: Compare React Native (JSI, native widgets) vs Flutter (own renderer, Dart) clearly
Tip 2: Scope state management — local, shared, server cache, offline persistence
Tip 3: Name platform-specific tools: Xcode Instruments, Android Profiler, Detox, Maestro
Tip 4: For navigation: always mention deep linking, universal links, and auth-gated routes
0 / 5 completed
1 / 5
The interviewer asks: "What is the difference between React Native and Flutter?" Which answer best demonstrates cross-platform mobile development depth?
Option B is strongest because it identifies the fundamental architectural difference: React Native uses native platform widgets via JSI bridge, while Flutter renders everything with its own engine. Key concepts: JSI bridge, native widgets, Skia/Impeller, pixel-perfect, Dart, binary size, animation performance. Option A bases the comparison only on company ownership. Option C is incorrect (React Native uses JS but Flutter uses Dart, and neither "compiles to native code" in the traditional sense). Option D is partially true but not the key differentiator.
2 / 5
The interviewer asks: "How do you handle state management in a large-scale mobile app?" Which answer demonstrates architectural maturity?
Option B is strongest because it introduces a scope-based state management taxonomy and assigns appropriate tools to each scope. Key structure: local state → shared feature state (BLoC/Redux Toolkit) → server cache state (React Query) → offline persistence (SQLite/MMKV) → lowest-scope principle. Option A (global variables) causes coupling and testing nightmares. Option C (always Redux) ignores scope differentiation. Option D ("solved problem") is dismissive.
3 / 5
The interviewer asks: "How do you optimise performance in a mobile app with complex list rendering?" Which answer best demonstrates performance engineering knowledge?
Option B is strongest because it addresses all layers of list performance: virtualisation, lazy loading, memoisation, image caching, profiling toolchain, cursor-based pagination, and main thread protection. Key structure: virtualisation → lazy load → memo → image cache → profiler tools → cursor pagination → off-main-thread computation. Option A (load all) is an anti-pattern. Option C (spinner) is only partial. Option D (20 items max) is an arbitrary constraint.
4 / 5
The interviewer asks: "How do you manage deep linking and navigation in a mobile app?" Which answer demonstrates navigation architecture depth?
Option B is strongest because it covers the full navigation architecture: declarative navigation, deep link routing, universal links, state persistence, auth-gated routing, and analytics. Key structure: declarative nav → deep link map → universal links (AASA/assetlinks) → state persistence → auth-gate → analytics listener. Option A describes basic imperative navigation. Option C is incorrect (the OS handles URL opening but not in-app routing). Option D is an ad-hoc pattern without type safety or maintainability.
5 / 5
The interviewer asks: "How do you approach testing a mobile app?" Which answer best demonstrates a test strategy for mobile?
Option B is strongest because it applies the pyramid model specifically to mobile and names concrete tools at each level. Key structure: unit (Jest/flutter_test) → widget (RTL/flutter widget_test) → integration (Detox/integration_test) → E2E (Maestro/Appium) → visual regression → crash monitoring → flakiness management. Option A is manual testing only. Option C (Selenium) is a web testing tool not suited for native mobile. Option D ("simpler than web") is incorrect and dismissive.