Intermediate interview questions in Mobile Dev, page 17
Threading of native module methods
Methods run on a dedicated native module queue, not the UI thread; long blocking work stalls other module calls; offload to a background executor or override methodQueue, returning results via promise.
Structure a POST request to send a Dart object as JSON
Set Content-Type application/json, serialize to Map via toJson, encode with dart:convert jsonEncode, and pass the string as body.
TurboModules and lazy loading benefits
TurboModules use JSI for direct, synchronous, type-safe calls and are loaded lazily on first use instead of all at startup, cutting init time.
Propose a Dart FFI approach to share camera frames and its risks
Tests zero-copy frame sharing via Dart FFI plus ownership and thread hazards. Propose native allocation, pass pointer to Dart as external TypedData, use ring buffer, then free; cite use-after-free and races.
What JSI is and how it replaces the Bridge
JSI is a lightweight C++ layer letting JS hold references to native host objects and call them directly and synchronously, with no JSON serialization or async batched queue.
Securely inject secrets for build flavors in CI/CD
Contrast CI environment variable injection with runtime secrets-manager fetches via CLI, comparing rotation overhead and blast radius.
TurboModule lazy loading vs eager startup
Legacy modules are instantiated eagerly at launch; TurboModules initialize only when JS first accesses them, so unused modules cost nothing at startup.
How would you optimize Flutter CI build times beyond caching?
Tests platform build pipeline knowledge and CI design. Answers hit Gradle parallelism and R8 config for Android, Xcode derived data, target thinning on iOS, plus Dart AOT flags and sharding.
Fabric UI update lifecycle vs old architecture
Render builds an immutable C++ shadow tree, commit diffs trees and runs Yoga layout, mount applies mutations to native views; JSI shares the tree, enabling synchronous and concurrent rendering unlike the…
Generating a signed release APK or AAB
Create a keystore, reference its credentials via gradle.properties (gitignored), wire a release signingConfig in build.gradle, then assembleRelease or bundleRelease.
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