Skip to content

Mobile App Development Interview Questions in Delhi

36 practice questions with answers for Mobile App Development interviews in Delhi.

Mobile App Development jobs in Delhi

Delhi NCR has one of India's biggest pools of IT, consulting, banking and start-up jobs. Delhi itself hosts many corporate, government-tech and consulting offices, and most candidates also apply across Noida and Gurgaon, so interviews here mix service-company and product-company styles.

Below are 36 questions that match the mix of service, product and domain employers hiring junior mobile app developers in Delhi.

Solved for DelhiStart 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

Parsing a 10 MB JSON file freezes the Flutter UI for two seconds. How do you fix it?

Save to ▾
Show answer
JSON decoding is CPU-bound and runs on the main isolate, blocking frames. Move it to a background isolate with Isolate.run(() => parseProducts(jsonString)) or compute. Also consider whether the API can paginate or return less data, and parse lazily. Test in profile mode with DevTools performance view to confirm the frame time improvement, since debug mode exaggerates slowness.
02

Write a GitHub Actions workflow that runs Flutter tests on every pull request.

Save to ▾
Show answer
name: flutter-ci on: pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: channel: stable cache: true - run: flutter pub get - run: dart format --set-exit-if-changed . - run: flutter analyze - run: flutter test --coverage
03

What is clean architecture in a Flutter app?

Save to ▾
Show answer
Clean architecture separates code into presentation (widgets and state notifiers or blocs), domain (entities, use cases and repository interfaces) and data (repository implementations, API clients, local storage and DTOs). Dependencies point inward, so the domain knows nothing about Flutter or HTTP. It improves testability and lets you swap data sources. For small apps it may be heavy, so many teams keep presentation and data layers and add domain only when logic grows.
04

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.
05

How do you create reusable custom widgets in Flutter?

Save to ▾
Show answer
Extract repeated UI into a StatelessWidget class with clear constructor parameters, rather than helper methods that return widgets, because classes get their own element, can be const and rebuild independently. Accept callbacks for events, use the theme for colours and text styles, and provide sensible defaults. Group them into a shared widgets folder or design system package and document them with widget previews or a showcase screen.
06

How do push notifications work end to end?

Save to ▾
Show answer
The app registers with the platform push service, FCM on Android and APNs on iOS, often both through FCM, and receives a device token. The app sends this token to your backend, linked to the user. When an event happens, the backend sends a message to FCM or APNs with the token, which delivers it to the device. The app requests notification permission, handles taps to open the right screen, and refreshes tokens when they change.
07

Write a Redux Toolkit slice for a cart.

Save to ▾
Show answer
const cartSlice = createSlice({ name: 'cart', initialState: { items: [] }, reducers: { addItem(state, action) { const existing = state.items.find((i) => i.id === action.payload.id); if (existing) existing.qty += 1; else state.items.push({ ...action.payload, qty: 1 }); }, removeItem(state, action) { state.items = state.items.filter((i) => i.id !== action.payload); }, }, }); export const { addItem, removeItem } = cartSlice.actions; export const selectTotal = (s) => s.cart.items.reduce((t, i) => t + i.price * i.qty, 0);
08

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.
09

How do you manage form state and validation across multiple steps in a Flutter onboarding flow?

Save to ▾
Show answer
Keep the onboarding data in one state object owned by a notifier or cubit scoped to the flow, with each step updating its part. Validate per step before moving forward and again on final submit. Save progress locally so users can resume if they leave. Keep validation rules in pure functions that are unit tested. Dispose the state when the flow completes so data does not leak into later sessions.
10

Explain the Bloc pattern and Cubit.

Save to ▾
Show answer
In Bloc, the UI adds events, the Bloc handles them with on<Event> handlers and emits new immutable states, and widgets rebuild with BlocBuilder or react with BlocListener. A Cubit is a simpler version where the UI calls methods directly and the Cubit emits states, without event classes. Use Cubit for straightforward logic and full Bloc when you need event transformations like debounce or detailed traceability.
11

The API responses are slow on mobile networks. What can the mobile team ask the backend team to change?

Save to ▾
Show answer
Ask for pagination with sensible page sizes, gzip or brotli compression, removing unused fields or providing screen-specific endpoints, and aggregated endpoints to avoid multiple sequential calls. Request proper cache headers and ETags so the client can reuse responses. Ask for resized images through a CDN and HTTP/2 or HTTP/3 support. Share measured timings from real devices to justify the requests.
12

How do you handle account deletion requirements in mobile apps?

Save to ▾
Show answer
Both major stores require apps that let users create accounts to also let them delete their account from within the app, and the Play Store also requires a web link for deletion requests. Implement a clear settings option, confirm the action, call a backend endpoint that deletes or anonymises user data according to retention rules, revoke tokens, clear local data and sign the user out. Document what is retained for legal reasons.
13

What are over-the-air updates and what are their limits?

Save to ▾
Show answer
Over-the-air updates push new JavaScript bundles and assets to React Native apps without a store release, using services like EAS Update. They fix bugs quickly but can only change JavaScript and assets, not native code, permissions or SDK versions, which need a new build. Store policies allow them only if the app's core purpose does not change. Use runtime versions to ensure updates match compatible native builds, and roll out gradually.
14

How do you communicate a delayed release to stakeholders?

Save to ▾
Show answer
I inform them as soon as I know, not on the release day. I explain the reason briefly, such as a store rejection or critical bug, the impact, the new estimated date, and what we are doing to avoid repeating it. I offer options, like releasing other features first. Regular short updates until release keep trust, and I note learnings in the release retrospective.
15

Push notifications arrive on Android but not on iOS. How do you debug it?

Save to ▾
Show answer
Check that the push notifications capability and background modes are enabled in Xcode, that an APNs authentication key is uploaded to the push provider, and that notification permission was granted. Verify the app gets an APNs token and the provider token, and that the right environment, development or production, is used. Test on a real device, since simulators have limited push support, and check payload format.
16

Write a release checklist for a mobile app update.

Save to ▾
Show answer
1. Bump version name and build number on both platforms. 2. Run full automated tests and smoke tests on release builds. 3. Verify signing, obfuscation and debug symbol upload. 4. Check new permissions and update store privacy declarations. 5. Update release notes and screenshots if UI changed. 6. Upload to internal track and TestFlight; QA sign-off. 7. Submit for review with reviewer notes and demo account. 8. Start staged rollout at 5 to 10 percent. 9. Monitor crashes, ANRs, reviews and key metrics. 10. Expand rollout or halt and hotfix.
17

How do you set up multiple environments such as dev, staging and production in a mobile app?

Save to ▾
Show answer
Create build flavours on Android and schemes or configurations on iOS, each with its own app ID suffix, app name, icon and API base URL, so all can be installed side by side. In Flutter, use --flavor with --dart-define-from-file for config values; in React Native, use react-native-config or Expo app config with environment variables. Keep secrets out of the repo and set them in CI.
18

Why do you want to work in mobile app development?

Save to ▾
Show answer
Answer with genuine motivation and proof. For example: I enjoy building things people use every day in their pocket, and mobile gives fast feedback from real users. I started by building an attendance app for my college, published it for classmates, and improved it from their reviews. That experience of seeing ratings and usage grow made me choose mobile development as my career.
19

How do you detect and fix memory leaks in cross-platform apps?

Save to ▾
Show answer
Leaks usually come from subscriptions, timers, controllers and listeners that are never disposed, or global caches that grow without limits. In Flutter, dispose controllers and cancel stream subscriptions in dispose, and check the DevTools memory view for growing instances. In React Native, return cleanup functions from useEffect and remove event listeners. Repeatedly open and close a screen while profiling to confirm memory returns to baseline.
20

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.
21

How do you handle gestures such as swipe to delete in React Native?

Save to ▾
Show answer
Use react-native-gesture-handler, which processes gestures on the native side, often with Reanimated for smooth animations. For swipe to delete, the Swipeable or ReanimatedSwipeable component renders action buttons behind a row. Define gestures with the Gesture API, such as Gesture.Pan, and compose them when needed. Wrap the app root in GestureHandlerRootView. Provide an accessible alternative like a long-press menu for screen reader users.
22

What is the difference between ref.watch, ref.read and ref.listen in Riverpod?

Save to ▾
Show answer
ref.watch subscribes to a provider and rebuilds the widget or recomputes the provider when it changes; use it in build methods. ref.read gets the current value once without subscribing; use it in callbacks like onPressed to call notifier methods. ref.listen runs a callback when a provider changes without rebuilding, useful for side effects like showing a snackbar or navigating after a state change.
23

How do you write a Fabric native component or use one in React Native?

Save to ▾
Show answer
A Fabric component wraps a native view for use in JavaScript. You write a TypeScript spec using codegenNativeComponent with typed props, run Codegen to generate C++ and platform interfaces, and implement the view in Kotlin and Objective-C or Swift. With Expo, the Expo Modules API lets you define a native view in Kotlin and Swift with less boilerplate. Use this for maps, video players or custom SDK views.
24

Describe a time you had to deliver a feature with incomplete requirements.

Save to ▾
Show answer
Situation: product asked for a referral feature with only a one-line description. Task: deliver in a sprint. Action: I listed open questions, met the product manager for 20 minutes to agree on core rules, built the agreed version with configurable reward values from the backend, and documented assumptions in the ticket. Result: we shipped on time, and later changes needed only config updates instead of a new release.
25

Your app needs a third-party SDK that has only native Android and iOS libraries. How do you integrate it in React Native?

Save to ▾
Show answer
First check whether a maintained wrapper package exists. If not, create a native module using the Expo Modules API or a TurboModule with a typed spec, add the SDK through Gradle and CocoaPods or Swift Package Manager, and expose a small JavaScript API with promises and events. If using Expo, write a config plugin to apply native setup during prebuild. Test on both platforms and document the setup.
26

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.
27

How do you measure performance in a Flutter app?

Save to ▾
Show answer
Run the app in profile mode on a real device, not debug or emulator. Use Flutter DevTools: the performance view shows frame build and raster times, the CPU profiler finds expensive functions, and the memory view tracks allocations and leaks. Target under about 16 milliseconds per frame for 60 fps. The performance overlay shows UI and raster thread graphs, and rebuild tracking highlights widgets rebuilding too often.
28

A screen re-renders every time the user types in a search box, making it laggy. How do you fix it?

Save to ▾
Show answer
Keep the search text state local to the search input component so only it re-renders, debounce the query before updating the list or calling the API, and memoise the list and row components. Avoid storing frequently changing values in a global store that many components subscribe to. Use the React DevTools profiler to confirm which components render, and useDeferredValue to keep typing responsive.
29

Write a go_router configuration with an auth redirect.

Save to ▾
Show answer
final router = GoRouter( initialLocation: '/', refreshListenable: authNotifier, redirect: (context, state) { final loggedIn = authNotifier.isLoggedIn; final goingToLogin = state.matchedLocation == '/login'; if (!loggedIn && !goingToLogin) return '/login'; if (loggedIn && goingToLogin) return '/'; return null; }, routes: [ GoRoute(path: '/', builder: (_, __) => const HomePage()), GoRoute(path: '/login', builder: (_, __) => const LoginPage()), GoRoute( path: '/product/:id', builder: (_, state) => ProductPage(id: state.pathParameters['id']!), ), ], );
30

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.
31

Your iOS app was rejected for guideline 5.1.1 about data collection. What do you do?

Save to ▾
Show answer
Read the reviewer's message in App Store Connect carefully. Guideline 5.1.1 issues often involve requesting permissions without clear purpose strings, requiring sign-up for features that do not need an account, or missing account deletion. Fix the specific problem, for example improving usage description text or adding in-app account deletion, and reply in Resolution Center explaining the changes. Ask for clarification if the rejection is unclear.
32

How do you avoid unnecessary rebuilds in a Flutter app with state management?

Save to ▾
Show answer
Rebuild only what depends on the changed data. Use selectors such as context.select, ref.watch(provider.select(...)) or BlocSelector to listen to one field, split big widgets into smaller ones, and use const constructors. Keep state objects immutable with proper equality so identical states do not trigger rebuilds. Use Flutter DevTools rebuild tracking to find widgets that rebuild more often than expected.
33

What are privacy declarations required by the app stores?

Save to ▾
Show answer
The Play Store requires a data safety form describing what data is collected, shared, encrypted and deletable, plus a privacy policy link and account deletion option for apps with accounts. The iOS App Store requires privacy nutrition labels, a privacy manifest file for the app and listed third-party SDKs describing data use and required reason APIs, and App Tracking Transparency permission before tracking users across apps.
34

How do you handle pressure when a production issue affects many users?

Save to ▾
Show answer
I stay calm and focus on reducing impact first: confirm the issue, communicate status to the team, and look for the fastest safe mitigation such as a remote config switch, server-side fix or pausing a rollout. Then I find the root cause, ship a proper fix and write a short postmortem. Clear, regular updates to stakeholders reduce panic and let others plan around the issue.
35

How does the keyboard affect layouts in React Native and how do you handle it?

Save to ▾
Show answer
When the keyboard opens it can cover inputs, especially at the bottom of the screen. Use KeyboardAvoidingView with behavior padding on iOS, and rely on Android's adjustResize window setting, or use react-native-keyboard-controller for consistent behaviour on both. Wrap forms in a ScrollView with keyboardShouldPersistTaps set to handled so buttons work while the keyboard is open, and dismiss the keyboard on submit.
36

How do you implement authentication flow screens in React Navigation?

Save to ▾
Show answer
Conditionally render screen groups based on auth state: if the user is signed out, the navigator shows login and signup; when signed in, it shows the app screens. Changing state automatically switches stacks and prevents going back to login with the back button. Restore tokens from secure storage on startup while showing a splash screen. Expo Router offers protected routes for the same pattern.

Frequently asked questions

Which companies hire Mobile App Development professionals in Delhi?

Companies with large offices in Delhi include many IT services and product firms. Use their company pages below to practise employer-specific sets.

Are Mobile App Development interviews in Delhi different from other cities?

The questions depend more on the company than the city. Delhi's mix of employers decides the style: Delhi itself hosts many corporate, government-tech and consulting offices, and most candidates also apply across Noida and Gurgaon, so interviews here mix service-company and product-company styles

How do I find Mobile App Development jobs in Delhi?

Shortlist companies with Delhi offices, keep your CV focused on Mobile App Development projects, apply on company career pages and job portals with the Delhi filter, and practise the questions on this page before each interview.