Skip to content

Mobile App Development Rapid-Fire Questions & Answers

50 questions for the rapid-fire stage — 32 easy, 18 medium.

About the rapid-fire round

Rapid-fire questions are quick definitions and one-line answers that interviewers fire at the start or end of a round to check your Mobile App Development basics. Aim to answer each in under 20 seconds.

Tips for the rapid-fire round

  • Answer in one or two sentences, then stop.
  • If you don't know, say so quickly and move on; don't guess at length.
  • Revise these the morning of the interview.
  • Practise with a friend who reads them in random order.
Solved — rapid-fireStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
3 questions free Unlock the rest in seconds
01

What types of tests do you write in Flutter?

Save to ▾
Show answer
Unit tests check pure Dart logic like validators, repositories and state notifiers. Widget tests render a single widget or screen in a test environment with WidgetTester, simulate taps and text entry, and assert what appears, running fast without a device. Integration tests, using the integration_test package, run the full app on a device or emulator for end-to-end flows. Golden tests compare widget screenshots to catch visual regressions.
02

What is the difference between native, cross-platform and hybrid mobile apps?

Save to ▾
Show answer
Native apps are written in platform languages, Kotlin for Android and Swift for iOS, with full access to platform APIs and the best performance. Cross-platform frameworks like Flutter and React Native share one codebase and render native-feeling UI, saving time for two platforms. Hybrid apps, such as Ionic or Cordova, run web code inside a WebView. Choice depends on performance needs, team skills, budget and how much platform-specific UI is required.
03

What security practices should every mobile app follow?

Save to ▾
Show answer
Use HTTPS everywhere and consider certificate pinning for high-risk apps. Store tokens only in secure storage, never log sensitive data, and keep secrets on the server. Obfuscate release builds, validate all input on the server, and protect sensitive screens from screenshots where needed. Check device integrity with platform attestation APIs for high-risk actions, and follow the OWASP Mobile Application Security Verification Standard as a checklist.
04

What is dependency injection in Flutter and how is it done?

Save to ▾
Show answer
Dependency injection supplies objects like API clients and repositories from outside instead of creating them inside widgets or blocs. In Flutter it is commonly done with Riverpod providers, Provider or RepositoryProvider in Bloc, or a service locator like get_it, sometimes with injectable for code generation. It makes code testable because tests can override dependencies with fakes, and it centralises object lifetimes.
05

Why use TanStack Query for server state in mobile apps?

Save to ▾
Show answer
Server state, such as data fetched from APIs, has caching, refetching, staleness and retry concerns that client state libraries do not handle well. TanStack Query caches responses by query keys, deduplicates requests, refetches on focus or reconnect, supports pagination and infinite queries, optimistic updates and offline persistence. It removes large amounts of useEffect and loading-state code and keeps screens consistent.
06

What is the role of a mobile developer in an Agile team?

Save to ▾
Show answer
A mobile developer turns user stories and designs into working app features, estimates tasks in sprint planning, raises technical risks early, and collaborates with backend, design and QA. They join standups, demos and retrospectives, review peers' code and keep builds releasable. They also give input on platform constraints like store review times and OS limits, which affect release planning more than in web development.
07

How do you pass parameters between screens and type them safely?

Save to ▾
Show answer
Pass small, serialisable params like IDs with navigation.navigate('Details', { id }), and read them with route.params. Define a param list type, such as type RootStackParamList = { Details: { id: string } }, and use it with the navigator and hooks for type checking. Avoid passing functions or large objects, which break state persistence and deep linking; fetch full data on the destination screen.
08

What are the steps to publish an app on the Play Store?

Save to ▾
Show answer
Create a Play Console developer account, create the app and fill in store listing details, screenshots, privacy policy, content rating, data safety and target audience forms. Build a signed release App Bundle with a unique application ID and increasing versionCode, and use Play App Signing. Upload to internal or closed testing first, then promote to production with a staged rollout. New personal accounts must complete a closed test with testers before production access.
09

What are runtime permissions and how do they differ between platforms?

Save to ▾
Show answer
Both platforms require runtime approval for sensitive features like camera, location, contacts and notifications. Android requires declarations in AndroidManifest.xml and runtime requests for dangerous permissions; iOS requires usage description strings in Info.plist, and the app crashes if a description is missing when requesting. iOS allows asking only once; later the user must change settings. Plugins like permission_handler or react-native-permissions unify the API.
10

What is the difference between a debug and release build in mobile apps?

Save to ▾
Show answer
Debug builds include debugging tools, hot reload, assertions and unoptimised code, so they are slower and larger. Release builds are compiled ahead of time, minified, optimised and signed with a release key. In Flutter, debug uses JIT while profile and release use AOT compilation; in React Native, release bundles minified JavaScript precompiled to Hermes bytecode. Always measure performance and test critical flows on release or profile builds.
11

What is App Store Optimisation and what can a developer influence?

Save to ▾
Show answer
App Store Optimisation improves an app's visibility and conversion in store search. Key factors are the app title, subtitle or short description, keywords, long description, screenshots, preview videos, ratings and reviews. Developers influence it by keeping app size small, crash rates low and performance high, since store algorithms consider quality signals, by adding in-app review prompts at good moments, and by supporting localisation for regional languages.
12

How do Future, async and await work in Dart?

Save to ▾
Show answer
A Future represents a value that will be available later, like an HTTP response. Marking a function async lets it use await, which pauses that function until the Future completes without blocking the event loop. Errors are handled with try-catch. Dart runs on a single-threaded event loop per isolate, so awaiting network calls keeps the UI responsive. Use Future.wait to run independent futures concurrently.
13

What is BuildContext?

Save to ▾
Show answer
BuildContext is a handle to a widget's location in the element tree. It is used to look up inherited data like Theme.of(context), MediaQuery and Navigator, and providers. Each widget's build method gets its own context. Common mistakes are using a context from above a widget that provides data, or using a context after an async gap when the widget may be unmounted; check context.mounted before using it after await.
14

What is a Stream in Dart and how is it used in Flutter?

Save to ▾
Show answer
A Stream delivers a sequence of asynchronous events, such as real-time database updates, location changes or WebSocket messages. You listen with listen() or await for, and transform with map, where and debounce from packages. Single-subscription streams allow one listener; broadcast streams allow many. In Flutter, StreamBuilder rebuilds UI on each event. Always cancel subscriptions in dispose to prevent leaks.
15

Where should you keep API keys and secrets in a mobile app?

Save to ▾
Show answer
Anything bundled in a mobile app can be extracted by decompiling, so never ship true secrets like payment secret keys or admin credentials. Keep them on your backend and let the app call your server. Public client keys, such as maps or Firebase config, are acceptable but should be restricted by app package name, bundle ID and certificate fingerprint. Use environment configuration in CI rather than committing keys to the repository.
16

What is accessibility in mobile apps and how do you implement it?

Save to ▾
Show answer
Accessibility makes apps usable by people with disabilities. Provide labels for icons and images so screen readers like TalkBack and VoiceOver can announce them, keep touch targets at least 44 to 48 points, support dynamic text sizes, ensure colour contrast, and avoid conveying information only by colour. Flutter uses Semantics widgets, and React Native uses accessibilityLabel and accessibilityRole. Test with screen readers enabled.
17

How do you design a mobile app for users on low-end devices and poor networks?

Save to ▾
Show answer
Keep the app size small, avoid heavy animations on low-end phones, and load images at the right resolution with caching. Use pagination and compressed API responses, cache data locally so screens open offline, and show skeleton loaders and clear retry options. Defer non-critical SDK initialisation to speed up startup. Test on budget devices with 2 or 3 GB RAM and throttled networks, since many users in India use them.
18

What is the difference between final and const in Dart?

Save to ▾
Show answer
final means a variable is assigned once at runtime and cannot be reassigned. const means the value is a compile-time constant and deeply immutable. In Flutter, const constructors like const Text("Hello") let the framework reuse the same widget instance across rebuilds, skipping unnecessary work. Use const wherever possible for widgets with fixed values; the linter rule prefer_const_constructors helps enforce it.
19

When would you choose a cross-platform framework over native development?

Save to ▾
Show answer
Choose cross-platform when you need both Android and iOS quickly with a small team, the app is mostly forms, lists, content and API-driven screens, and design consistency across platforms is desired. Choose native when the app needs heavy graphics, deep hardware integration, advanced background processing, newest platform features on day one, or very tight performance. Many companies mix both, using native modules inside a cross-platform app.
20

What is Supabase and how does it compare to Firebase?

Save to ▾
Show answer
Supabase is an open-source backend platform built on PostgreSQL, offering authentication, a relational database with auto-generated APIs, row level security, storage, edge functions and real-time subscriptions. Firebase uses NoSQL databases like Firestore. Supabase suits apps with relational data and SQL needs, and can be self-hosted, while Firebase has a richer mobile ecosystem including Crashlytics, Remote Config and FCM. Many apps combine them.
21

How do deep links and universal links work?

Save to ▾
Show answer
Deep links open a specific screen in your app from a URL. Custom schemes like myapp://order/42 work but are not verified. Verified HTTPS links are App Links on Android, using assetlinks.json, and Universal Links on iOS, using an apple-app-site-association file on your domain. When verified, the link opens your app directly instead of the browser. The routing library, like go_router or React Navigation linking, maps URLs to screens.
22

What is the difference between ScrollView and FlatList?

Save to ▾
Show answer
ScrollView renders all its children at once, which is fine for short content but uses lots of memory and slows rendering for long lists. FlatList virtualises, rendering only items near the viewport and recycling as you scroll, with props like keyExtractor, initialNumToRender and windowSize. For very large or complex lists, FlashList offers better recycling and performance. Never nest a FlatList inside a ScrollView of the same direction.
23

What local storage options exist for Flutter and React Native apps?

Save to ▾
Show answer
For simple key-value settings, Flutter uses shared_preferences and React Native uses AsyncStorage or MMKV. For sensitive data, flutter_secure_storage or expo-secure-store use Keychain and Keystore. For structured data and queries, use SQLite via sqflite or drift in Flutter and expo-sqlite or WatermelonDB in React Native. Object stores like Isar, Hive or Realm also exist, but check maintenance status before choosing.
24

What are isolates and when should you use them?

Save to ▾
Show answer
Isolates are Dart's units of concurrency, each with its own memory and event loop, communicating by messages. Heavy CPU work like parsing a large JSON file, image processing or encryption on the main isolate causes jank. Use Isolate.run or compute to run such work in a separate isolate and return the result. For network or file I/O, async-await is enough because that work is not CPU-bound.
25

How does Flutter render UI differently from React Native?

Save to ▾
Show answer
Flutter draws every pixel itself using its own rendering engine, Impeller, onto a canvas, so widgets look identical across platforms and do not depend on native UI components. React Native maps components like View and Text to real native views, so the UI uses platform controls. Flutter gives pixel consistency and predictable performance; React Native gives native look and easier reuse of native view libraries, plus web developer familiarity with JavaScript.
26

Why do Flutter apps need a state management solution beyond setState?

Save to ▾
Show answer
setState works for local UI state inside one widget, but shared state like the logged-in user, cart or settings must be read and changed by many screens. Passing it through constructors becomes messy, and rebuilding large trees hurts performance. State management libraries separate business logic from UI, make state testable, rebuild only widgets that depend on changed data, and give a clear, predictable flow of updates.
27

What is the difference between a BaaS and a custom backend for a mobile startup?

Save to ▾
Show answer
A Backend-as-a-Service gives ready authentication, database, storage and functions, so a small team launches faster without managing servers, and costs stay low at small scale. A custom backend gives full control over business logic, data model, integrations and cost at large scale, but needs more engineering effort. Many startups begin with BaaS for the MVP and gradually move complex or expensive parts to custom services.
28

What is React Native and how does it work?

Save to ▾
Show answer
React Native lets you build mobile apps with React and JavaScript or TypeScript. You write components like View, Text and Image, and React Native renders them as real native views on Android and iOS. JavaScript runs on the Hermes engine, and with the New Architecture it communicates with native code directly through JSI rather than an asynchronous JSON bridge. Business logic and most UI code are shared between platforms.
29

How does styling and layout work in React Native?

Save to ▾
Show answer
Styles are JavaScript objects created with StyleSheet.create, using camelCase properties like backgroundColor. Layout uses flexbox through the Yoga engine, with flexDirection defaulting to column, unlike the web. Units are density-independent pixels without px. There is no CSS cascade, so styles are applied per component and composed with arrays. Libraries like NativeWind bring Tailwind-style classes, and themes are usually provided through context.
30

How do you persist state in React Native between app launches?

Save to ▾
Show answer
For small key-value data use AsyncStorage or MMKV, which is much faster and synchronous. Persist Redux with redux-persist or Zustand with its persist middleware, choosing only the slices that need it. Store tokens in secure storage like expo-secure-store or Keychain and Keystore wrappers, never in plain storage. For larger structured data use SQLite through expo-sqlite or an ORM like WatermelonDB.
31

What backend options are common for mobile apps?

Save to ▾
Show answer
Teams build custom REST or GraphQL APIs with Node.js, Java Spring Boot, Python or Go, hosted on cloud platforms. Backend-as-a-Service options like Firebase and Supabase provide authentication, databases, storage, functions and push notifications without managing servers, which suits startups and MVPs. Larger apps often combine a custom backend for business logic with managed services for auth, analytics and messaging.
32

Explain Row, Column, Expanded and Flexible in Flutter layouts.

Save to ▾
Show answer
Row lays out children horizontally and Column vertically, with mainAxisAlignment and crossAxisAlignment controlling placement. Expanded forces a child to fill remaining space along the main axis, and Flexible lets a child take up to its share but be smaller. Using flex values divides space proportionally. A common error is an unbounded width or height, such as a ListView inside a Column without Expanded, which throws a layout exception.
33

What are versionName, versionCode and build numbers?

Save to ▾
Show answer
On Android, versionName is the user-visible version like 2.3.1 and versionCode is an integer that must increase with every upload. On iOS, CFBundleShortVersionString is the marketing version and CFBundleVersion is the build number, which must be unique per version upload. In Flutter, the pubspec version 2.3.1+45 sets both; in Expo, version and the platform build numbers are set in app config and can auto-increment with EAS.
34

How do you handle error boundaries in a React Native app?

Save to ▾
Show answer
An error boundary is a class component, or a library like react-error-boundary, that catches rendering errors in its child tree and shows a fallback UI instead of crashing the whole app. Place one at the app root and around risky screens. They do not catch errors in event handlers or async code, so use try-catch there. Report caught errors to a crash reporting tool with context for debugging.
35

How does token-based authentication work in mobile apps?

Save to ▾
Show answer
The user signs in and the server returns a short-lived access token, often a JWT, and a longer-lived refresh token. The app stores them securely in Keychain or Keystore-backed storage and sends the access token in the Authorization header. When it expires, the app uses the refresh token to get a new one, retrying the failed request. On logout, tokens are deleted and ideally revoked on the server.
36

What is Firebase and which services do mobile apps commonly use?

Save to ▾
Show answer
Firebase is a mobile and web development platform. Commonly used services are Authentication for email, phone OTP and social logins; Cloud Firestore and Realtime Database for synced data; Cloud Storage for files; Cloud Functions for server code; Cloud Messaging for push notifications; Crashlytics for crash reports; Analytics; Remote Config for feature flags; and App Distribution for testers. FlutterFire and React Native Firebase provide SDKs.
37

What are the steps to publish an iOS app on the App Store?

Save to ▾
Show answer
Enrol in the developer program, create an App ID and the app record in App Store Connect, and set up signing with certificates and provisioning profiles, often managed automatically by Xcode or EAS. Archive the release build with an incremented build number, upload it, and test through TestFlight. Complete metadata, screenshots, privacy nutrition labels and age rating, then submit for review. After approval, release manually, automatically or in phased release.
38

How do you monitor crashes and performance in production?

Save to ▾
Show answer
Integrate a crash reporting tool like Firebase Crashlytics or Sentry, upload debug symbols, dSYMs and source maps so stack traces are readable, and record non-fatal errors with context. Track crash-free users, ANR rate, app start time, slow frames and network latency per release. Set alerts on spikes and review store vitals. Tag events with app version, device and OS so problems can be isolated quickly.
39

What are TestFlight and Play testing tracks?

Save to ▾
Show answer
TestFlight distributes iOS beta builds to internal testers on your team and external testers, up to 10,000, after a light beta review. Play Console offers internal testing for quick distribution to up to 100 testers, closed testing for selected groups, and open testing for anyone to join. Using these tracks catches device-specific bugs and gathers feedback before production, and staged rollouts then limit risk further.
40

Explain sound null safety in Dart.

Save to ▾
Show answer
Since Dart 3, all code is null safe. Types are non-nullable by default, so String cannot hold null while String? can. The compiler forces you to handle nulls with checks, the ?. and ?? operators, or the ! operator which throws if null. The late keyword declares a non-null variable initialised later. Sound means the compiler can trust non-null types completely, enabling optimisations and preventing many runtime null errors.
41

What is Dart and why does Flutter use it?

Save to ▾
Show answer
Dart is a typed, object-oriented language created for client development. Flutter uses it because Dart supports JIT compilation for fast hot reload in development and AOT compilation to native machine code for fast release apps. Dart has sound null safety, async-await, isolates for concurrency, and a garbage collector optimised for many short-lived objects, which suits Flutter's frequent widget rebuilding.
42

How does navigation work in React Native with React Navigation?

Save to ▾
Show answer
React Navigation provides navigators: native stack for push and pop screens using platform transitions, bottom tabs, drawer and material top tabs. You nest navigators, for example tabs inside a root stack with modal screens. Screens receive navigation and route props or use hooks like useNavigation and useRoute. Version 7 adds a static configuration API for better TypeScript inference and automatic deep link setup.
43

How do you handle navigation in Flutter with go_router?

Save to ▾
Show answer
go_router is a declarative, URL-based routing package maintained by the Flutter team. You define GoRoute entries with paths like /product/:id, navigate with context.go or context.push, and read parameters from state.pathParameters. It supports nested navigation with ShellRoute for bottom tabs, redirects for authentication guards, and deep links on mobile and web. It wraps the Router API, which is complex to use directly.
44

What is the difference between StatelessWidget and StatefulWidget?

Save to ▾
Show answer
A StatelessWidget has no mutable state; its build output depends only on constructor parameters and inherited data. A StatefulWidget creates a State object that persists across rebuilds and holds mutable data; calling setState marks it dirty so build runs again. Use stateful widgets for local UI state like animations, text controllers or toggles, and lift shared or business state into a state management solution.
45

How do you test React Native components?

Save to ▾
Show answer
Use Jest as the test runner with React Native Testing Library, which renders components and queries them the way users do, by text, role or label. Fire events like fireEvent.press or userEvent, then assert on output. Mock native modules and network calls with jest mocks or MSW. For end-to-end tests on real builds, use Detox or Maestro, which drive the app on emulators and simulators.
46

What is an Expo project and how does it differ from a bare React Native project?

Save to ▾
Show answer
Expo is a framework and toolset for React Native that provides prebuilt native modules, file-based routing with Expo Router, EAS cloud builds and over-the-air updates. With Continuous Native Generation, Expo creates the android and ios folders from app config and config plugins, so you rarely edit native code. A bare project manages native folders directly. Expo is now the officially recommended way to start React Native apps.
47

What is a WebView and when is it appropriate to use one?

Save to ▾
Show answer
A WebView embeds a browser engine in your app to show web content. It suits help pages, terms, payment gateway pages or quickly reusing an existing web flow. It is not ideal for core app screens because it feels slower and less native. Restrict navigation to trusted domains, avoid exposing powerful JavaScript bridges to untrusted content, and handle back navigation. Flutter uses webview_flutter and React Native uses react-native-webview.
48

What are useMemo, useCallback and React.memo used for?

Save to ▾
Show answer
React.memo skips re-rendering a component when its props are shallowly equal. useCallback keeps the same function reference between renders, and useMemo caches a computed value, both only changing when dependencies change. They help when passing callbacks to memoised list items or computing expensive values. Overusing them adds complexity with little gain; the React Compiler can now apply such memoisation automatically in supported projects.
49

Why is TypeScript recommended for React Native projects?

Save to ▾
Show answer
TypeScript adds static types to JavaScript, catching mistakes like wrong prop names, missing fields in API responses and undefined values at compile time. It improves editor autocomplete and makes refactoring safer in large codebases. New React Native and Expo templates use TypeScript by default, and Codegen for TurboModules and Fabric components uses typed specs. Combined with strict mode, it significantly reduces runtime crashes.
50

What are the main differences between Android and iOS that a cross-platform developer must know?

Save to ▾
Show answer
Navigation patterns differ: Android has a system back gesture while iOS relies on swipe-back and navigation bars. Permissions, notification setup, background execution limits, file systems and store review rules differ. iOS builds require a Mac and Xcode, with signing through certificates and provisioning profiles. Design guidelines differ between Material Design and Human Interface Guidelines, so good cross-platform apps adapt some UI per platform.

Frequently asked questions

What happens in the Mobile App Development rapid-fire round?

Rapid-fire questions are quick definitions and one-line answers that interviewers fire at the start or end of a round to check your Mobile App Development basics. Aim to answer each in under 20 seconds.

How do I clear the rapid-fire round?

Answer in one or two sentences, then stop. If you don't know, say so quickly and move on; don't guess at length. Revise these the morning of the interview.

Which round comes next?

A typical order is online assessment, telephonic screening, one or two technical rounds, a managerial round and HR. Use the other round pages to practise each stage.