Skip to content
tezvyn:

📱Mobile Dev

Mobile app development across platforms

652 bites

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

Interview questions in Mobile Dev, page 29

intermediate2 min read

View identity in SwiftUI and the .id() modifier

Identity links a view to its persistent state and transitions; structural identity comes from position, explicit identity from .id(); changing the id resets state and forces a new view.

What is a Dart Isolate and how does it differ from threads?
advanced2 min read

What is a Dart Isolate and how does it differ from threads?

Tests Dart's shared-nothing concurrency model. Define an isolate as an independent heap plus event loop, contrast it with shared-memory threads, and explain UI isolate communication via async message ports.

intermediate2 min read

Describe staged rollout on Google Play Console, benefits, and metrics to monitor

Tests release engineering and risk mitigation. Covers: set percentage and countries, manually ramp, halt on bad signals; benefits are blast-radius reduction and real-world validation. Flag: auto-ramping claims or ignoring halted users keep the bad build.

intermediate1 min read

Why react-native-gesture-handler Replaces the Responder System

The JS responder system runs on the JS thread so gestures lag under load; gesture-handler runs recognition natively for smooth, reliable gestures.

intermediate2 min read

Faulting in Core Data

A fault is a placeholder object whose property data is not yet loaded; accessing a property fires the fault and fetches from the store, saving memory.

advanced2 min read

When would you implement a CustomPainter and how does shouldRepaint work?

Use CustomPainter for charts; check fields in shouldRepaint to skip frames; pass Listenable to bypass build layout.

Explain R8's shrinking, obfuscation, and optimization phases and how to influence optimization
advanced2 min read

Explain R8's shrinking, obfuscation, and optimization phases and how to influence optimization

Separate dead code removal, renaming, and bytecode transformation; cite ProGuard keep rules and selective passes.

intermediate1 min read

Fetching REST Data with Loading and Error State

Track loading, data, and error; fetch in an effect, check response.ok, parse JSON, handle catch and finally.

intermediate1 min read

Minimizing Storyboard merge conflicts

Split into many small storyboards or xibs, or move to programmatic or SwiftUI layout; process-wise coordinate ownership and merge often.

Write the ProGuard keep rule to fix reflection after R8
advanced2 min read

Write the ProGuard keep rule to fix reflection after R8

This tests R8 dead-code removal and exact ProGuard syntax for reflective constructors. A strong answer gives -keep class com.example.T { <init>(...); } because R8 cannot trace dynamic class names. Broad -keep rules or omitting constructor are red flags.

advanced2 min read

What is Flutter tree shaking and how does it reduce app size?

Tests Dart AOT dead code elimination. Covers compile-time dead code removal, smaller binaries, faster startup, and practices like avoiding dart:mirrors and using const constructors. Red flag: confusing it with minification or runtime stripping.

intermediate1 min read

Draggable Snap-Back Card with Gesture Handler and Reanimated

Shared values track offset, a Pan gesture updates them on the UI thread, an animated style applies translation, onEnd springs back to zero.

intermediate1 min read

Decoding a heterogeneous JSON array by a type field

Peek the type field with a partial decode, switch on it, and decode the concrete type, wrapping each in an enum or boxed protocol value.

How does App Bundle handle ABI splits versus multi-APK?
advanced2 min read

How does App Bundle handle ABI splits versus multi-APK?

Tests dynamic delivery of native libs: AAB auto-generates per-ABI config splits, but multi-APK requires manual APK builds per ABI. Misconfiguration ships unused .so bloat or crashes on unsupported devices. Red flag: calling AAB a simple multi-APK zip.

intermediate2 min read

How would you implement debounce for a search input using Streams?

This tests Stream transformation and event throttling. A strong answer outlines a resetting timer that only emits after 300ms of silence, referencing debounceTime or DebounceStreamTransformer. Red flag: manual Timer juggling without Stream composition.

intermediate1 min read

Returning a Promise from a Native Module Method

The exported method takes resolve and reject as its last parameters; do the async work off the main thread, then settle exactly once with a result or an error.

intermediate1 min read

Retain cycles and how to break them

A cycle is two objects (or a closure and its owner) holding mutual strong references so neither deallocates; break it with a [weak] or [unowned] capture list.

What are RecyclerView.Adapter and ViewHolder, and why do they improve scrolling?
intermediate2 min read

What are RecyclerView.Adapter and ViewHolder, and why do they improve scrolling?

This tests RecyclerView's data-to-view separation. A strong answer says Adapter binds data while ViewHolder caches findViewById results, avoiding hierarchy scans on scroll. A red flag is calling ViewHolder a memory saver instead of a lookup cache.

intermediate2 min read

What is a Dart Completer and when should you use it?

This tests bridging callback APIs into Dart's Future ecosystem. An answer defines Completer as a manual Future producer, explains completing with value or error from callbacks, preferring Future() when possible. A red flag is using Completer for simple async.

intermediate2 min read

ViewManager and Exposing Native Component Props

The ViewManager creates the native view and maps it to a JS component; you expose props with a prop-setter that receives the value when the prop changes.

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