Skip to content
tezvyn:

📱Mobile Dev

Mobile app development across platforms

164 bites

Test yourself: Top 30 advanced Mobile Dev interview questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Advanced interview questions in Mobile Dev, page 6

How would you architect state-driven UI with ViewModel and Compose?
advanced2 min read

How would you architect state-driven UI with ViewModel and Compose?

Tests unidirectional data flow and state hoisting. Model screen state as an immutable data class, expose StateFlow from ViewModel, and collect it in Compose so events flow up and state down. Red flag: exposing mutable state or putting logic in Composables.

advanced1 min read

How task cancellation works with async/await

Cancellation is a flag, not a kill; check Task.isCancelled or call checkCancellation, URLSession throws CancellationError automatically.

advanced1 min read

What is an actor and how does it prevent data races

Actors serialize access to mutable state, reachable only via await; compiler blocks unsafe access. Token-refresh actor coalesces concurrent refreshes.

advanced2 min read

What is a worklet in Reanimated

A worklet is a JS function marked to run on the UI thread runtime with a captured snapshot of its scope, enabling synchronous per-frame work.

advanced1 min read

Shared element transitions with Reanimated

Wrap both views in Animated.View with the same sharedTransitionTag, use a native-stack navigator so Reanimated interpolates between source and target.

advanced2 min read

Explain Dio interceptors and automatic token refresh

Define interceptors as hooks; queue concurrent 401s during refresh; retry with Bearer header via token manager.

Implement an API caching layer with offline support and storage trade-offs
advanced2 min read

Implement an API caching layer with offline support and storage trade-offs

Use in-memory for hot data and disk for offline, pick Hive or SQLite by shape, and use TTL with a sync queue.

Room DAO: Flow<List<User>> vs suspend fun getUsers(): List<User>
advanced2 min read

Room DAO: Flow<List<User>> vs suspend fun getUsers(): List<User>

This tests reactivity versus one-shot queries in Room and coroutines. Flow emits on every table change on Room's dispatcher, while suspend returns a single snapshot requiring manual refresh.

advanced1 min read

Diagnose dropped frames during animation

Use Core Animation and color-debug options to spot off-screen passes, blending, and overdraw; cache, flatten, and set shadowPath.

advanced2 min read

Why are stale search requests problematic and how do you cancel them?

This tests race conditions and resource waste in async UI. Strong answers note stale requests waste bandwidth and overwrite newer results; cancel the previous call with a CancelToken before issuing the next.

How would you implement a robust offline-first repository?
advanced2 min read

How would you implement a robust offline-first repository?

Tests single-source-of-truth discipline and network-local sync. Outline a Room repository with Flow, background refresh, disk persistence, immediate local emission, and conflict resolution with retry.

advanced1 min read

Build an interruptible custom VC transition

A delegate vends an animator (UIViewControllerAnimatedTransitioning) for the visuals and an interactive controller (UIViewControllerInteractiveTransitioning) driven by a pan to scrub progress and…

advanced1 min read

Animate a SwiftUI Shape morphing point count

Expose a continuous sides value as animatableData so SwiftUI interpolates it, then compute the path from that fractional value each frame.

advanced2 min read

Building a custom native module

Write native classes in Kotlin/Java and Swift/Objective-C, expose methods via the module macros, register the module, and import via NativeModules with promises or events.

advanced2 min read

How do you safely add a non-nullable column in sqflite?

Tests onCreate for fresh installs vs onUpgrade for existing data. Outline: bump version; in onUpgrade use ALTER TABLE ADD COLUMN NOT NULL DEFAULT for existing rows; keep onCreate as latest schema. Red flag: only changing onCreate so old users crash.

advanced2 min read

Handling push notifications across app states

Foreground onMessage, background and quit setBackgroundMessageHandler and getInitialNotification, plus data-only messages and native background tasks like Background Fetch or Notification Service…

advanced2 min read

Parse polymorphic media JSON with Kotlin sealed classes and custom serializers

Sealed Media with Image and Video; use Moshi Factory or kotlinx.serialization keyed on the type field.

advanced2 min read

Streaming accelerometer data without bridge overload

The bottleneck is flooding the async bridge and re-rendering at sensor rate; fix by throttling, processing in worklets or native, and animating via shared values not setState.

advanced2 min read

Configure OkHttp Cache for Retrofit and force network requests

This tests HTTP caching semantics in mobile networking. A strong answer covers Cache setup with a 50 MiB directory, server Cache-Control driving expiration, and CacheControl.FORCE_NETWORK to bypass.

advanced1 min read

Apply a CIFilter to a live camera feed

Use AVCaptureSession with AVCaptureVideoDataOutput, receive CMSampleBuffers in captureOutput via the sample buffer delegate on a serial queue, filter with CIImage, drop late frames.

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