Interview questions in Mobile Dev, page 32
Resolving Conflicting Transitive Versions in SPM
SPM allows only one version per package, so diagnose the graph, then update, pin, or fork to find an overlap.

Architect periodic and on-demand sync with WorkManager
Tests combining periodic and push WorkManager requests safely. Outline: one Worker class, PeriodicWorkRequest hourly and OneTimeWorkRequest on push, with ExistingWorkPolicy.KEEP plus constraints. Red flag: two Workers, no deduplication, or ForegroundService.
How do you synchronize app state with GoRouter navigation?
Read auth state in top-level redirect; rebuild GoRouter via refreshListenable on changes; handle deep links in page builders.
Passing params between Stack Navigator screens
Navigate to the route with a params object, read it via route.params on the target, pass an id not a huge object.
Decoupled Cross-Module Navigation in Modular iOS
Depend on a shared abstraction, register concrete routers in a coordinator or registry, resolve at runtime.

How does WorkManager guarantee task execution across reboots and process death?
Tests your understanding of WorkManager's durability under process death. Strong answer: Room database persists requests; JobScheduler or AlarmManager executes them; BroadcastReceiver reschedules on reboot.
Persist a custom Dart object using shared_preferences
Tests JSON serialization bridging custom objects to primitive-only key-value storage. Strong answer: add toJson/fromJson on User, jsonEncode into SharedPreferences as String, jsonDecode on read. Red flag: proposing direct storage or toString hacks.
Android-only native module called safely from JS
Write a ReactContextBaseJavaModule with an exported method, register it in a package, then guard the JS call with Platform.OS or a null check on the module.
Build a custom layout in Jetpack Compose
Use the Layout composable with a MeasurePolicy, measure each child once with constraints, then place children and report your size.
XCFrameworks and Binary Distribution Trade-offs
XCFramework bundles slices for multiple platforms/architectures, used to hide source or speed builds.
Explain the difference between tester.pump and tester.pumpAndSettle
This tests your grasp of Flutter frame scheduling. pump draws one frame; pumpAndSettle loops until idle, failing on infinite animations. A red flag is treating pumpAndSettle as universally safe or missing why a loading spinner causes timeouts.
Platform-specific typography in a global theme
Define one theme with Platform.select for fontFamily, expose semantic text styles, and reuse them everywhere rather than per-screen overrides.
R8 shrinking, obfuscation, and optimization
Shrinking removes unused code/resources, obfuscation renames symbols to short opaque names, optimization inlines and simplifies; shrinking also strips unreachable code that could be exploited.
Explain map() vs where() on a List and chain them
This tests Dart Iterable laziness and correct chaining. A strong answer states where filters and map transforms, both return Iterables, then chains where before map and converts with toList. A red flag is claiming the original list mutates or omitting toList.
Unifying divergent native video player props
A JS component accepts a unified source prop, then uses Platform.OS to map it into each native view's expected props before rendering.
Design an immutable UserSettings class with copyWith for Flutter state
Tests immutability as Flutter's state foundation. A great answer shows final fields, a const constructor, copyWith with nullable named params and null-aware fallback, and explains how immutability prevents accidental shared mutations during rebuilds.
Offline data storage and sync strategy
Persist locally in SQLite or WatermelonDB, queue mutations with a pending flag, detect reconnection with NetInfo, then replay the queue and resolve conflicts.
Dart reduce versus fold on collections
Reduce combines same-type elements and throws on empty; fold takes an initial value and accumulator of any type, safe on empty.
Creating a native module with a sync method
Extend the RN base class, mark the method exported and synchronous, register in a package or bridging file.
Riverpod providers are objects, not widgets. What are the practical advantages?
Tests architectural decoupling of state and UI in Flutter. Strong answers hit compile-time safety, unit testing without widget trees, and logic that survives outside BuildContext. Red flag: praising syntax sugar without explaining the coupling problem.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles