Easy everything in Mobile Dev, page 2
Local state versus global state management
Keep state local with useState/useReducer when it is used by one component or its subtree; reach for Redux or Zustand when many distant components share and mutate the same state.
Prop drilling and the Context API
Prop drilling is threading props through many intermediate components that do not use them; Context provides a value to a subtree so consumers read it directly.
SectionList versus FlatList for grouped data
FlatList takes a flat data array; SectionList takes a sections array of objects each with a data array and optional title, and supports renderSectionHeader and sticky headers.
FlatList data, renderItem, and keyExtractor
Data is the array, renderItem maps each item to a component, keyExtractor returns a stable unique key letting React reconcile and reuse rows.
ScrollView versus FlatList for long lists
ScrollView mounts all children at once; FlatList virtualizes, rendering only on-screen items plus a buffer. Use ScrollView for small/fixed content, FlatList for long/dynamic data.
Stack Navigator vs Tab Navigator and nesting
A Stack pushes and pops screens for hierarchical drill-down; a Tab switches between parallel top-level sections. Nesting a Stack in each tab gives each tab its own independent push/pop history.
navigate vs push in a Stack Navigator
Navigate goes to an existing instance of the route if present, otherwise pushes; push always adds a new instance onto the stack. Use push to revisit the same screen with new params.
Button vs TouchableOpacity vs Pressable
Button is minimal and platform-styled with limited customization; TouchableOpacity wraps children with an opacity fade; Pressable is the modern, flexible primitive exposing rich press states.
Controlled TextInput with value and onChangeText
Store input text in state, bind value to that state, and update state in onChangeText so React is the single source of truth.
View vs Text and nesting rules
View is a flexbox layout container; Text renders and lays out text with inheritance. Text nests inside Text and inherits style; View inside Text is constrained and discouraged.
Inline styles vs StyleSheet.create
Styles are JS objects passed to the style prop; StyleSheet.create registers styles once for stable references and validation, while inline objects recreate on each render.
Expo managed workflow vs bare React Native
Expo gives fast setup, OTA updates, managed builds, and prebuilt APIs; bare gives full native control and arbitrary native modules.
Diagnosing choppy scrolling performance
Reach for Instruments, especially the Time Profiler and Core Animation/Hangs tools, and look for main-thread work and dropped frames.
Purpose and setup of an Objective-C bridging header
The bridging header imports ObjC headers into Swift; Xcode auto-creates it or you add it manually and set the build setting.
Archiving and uploading a build to TestFlight
Select a real-device or Any iOS destination, Product Archive, then in the Organizer distribute to App Store Connect, where the build appears for internal TestFlight testers after processing.
App ID, provisioning profile, and signing certificate
The certificate proves who you are, the App ID identifies the app and its capabilities, and the provisioning profile binds certificate, App ID, and allowed devices so iOS trusts the install.
Package.swift manifest: library vs executable products
The manifest declares name, targets, dependencies, and products; a library is consumed by other code while an executable produces a runnable binary with an entry point.
Adding a Swift Package dependency in Xcode
Add via File menu, paste the repo URL, choose a version rule like up-to-next-major, link the product to your target.
Unit test versus UI test in Xcode
Unit tests (XCTest) exercise code logic in-process and fast; UI tests (XCUITest) drive the app through the accessibility layer, slower and end-to-end.
Play a remote video with AVFoundation
Wrap the URL in AVPlayerItem, feed it to AVPlayer, render with AVPlayerLayer added to the view's layer (or AVPlayerViewController for controls).
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