Mobile App Development Interview Questions in Chandigarh
36 practice questions with answers for Mobile App Development interviews in Chandigarh.
Mobile App Development jobs in Chandigarh
Chandigarh, Mohali and Panchkula form the Tricity IT cluster, with IT-services firms, SaaS companies and start-ups in Mohali's IT City and Chandigarh's IT Park. Interviews usually check strong fundamentals and practical tool skills.
Below are 36 questions that match the mix of service, product and domain employers hiring junior mobile app developers in Chandigarh.
Solved for ChandigarhStart 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
How do you handle gestures such as swipe to delete in React Native?
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.
02
Write a React Native Testing Library test for a login button showing a validation error.
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.
04
How do you make sure your code works before handing it to QA?
I test the happy path and edge cases myself on both Android and iOS, including no network, slow network, empty states, large text sizes and rotation. I write unit tests for logic and run the existing test suite. I review my own diff before raising the pull request and add clear testing notes for QA explaining what changed and what to check, which saves time for both of us.
Hermes is a JavaScript engine optimised for React Native. It compiles JavaScript to bytecode at build time, so the app does not parse and compile JavaScript on startup, which reduces time to interactive, memory use and app size. It is the default engine on Android and iOS. It supports debugging with Chrome DevTools-based tools and sampling profiling to find slow JavaScript.
06
How do you handle error boundaries in a React Native app?
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.
07
How do you secure Cloud Firestore data accessed directly from a mobile app?
Because the app talks to the database directly, security rules are the backend. Write rules that check request.auth for authentication and that users can read or write only their own documents, for example allow read, write: if request.auth.uid == userId. Validate fields and types in rules, never leave test mode rules open, and move sensitive operations like payments or role changes to Cloud Functions. Test rules with the emulator suite.
08
Your Flutter codebase mixes setState, Provider and get_it randomly across screens. How would you clean it up?
Agree on one approach with the team, for example Riverpod for app state and setState only for local widget state, and document examples. Migrate gradually, starting with the most buggy or most changed features, and write tests before moving logic. Add lint rules and pull request checklists so new code follows the standard. Avoid a big-bang rewrite that blocks feature work for weeks.
09
Your team has no automated tests and frequent regressions. How would you introduce testing?
Start where bugs hurt most: write unit tests for business logic like pricing, validation and state transitions, and a few end-to-end smoke tests for login, checkout and payment flows with Maestro or integration tests. Run them in CI on every pull request so failures block merges. Require tests for bug fixes going forward. Show reduced regressions after a few sprints to build team support.
10
What is a Stream in Dart and how is it used in Flutter?
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.
11
Deep links open the app but land on the home screen instead of the product page. How do you debug it?
Check that the link configuration maps the URL path to the right screen name, including nested navigators, and that path parameters match. Verify verified link setup on both platforms: assetlinks.json for Android and the associated domains entitlement plus the site association file for iOS. Test with adb shell am start and xcrun simctl openurl. Also handle links when the app is cold started versus already running.
12
The client wants the app to look exactly like iOS on iPhones and like Material on Android. How do you approach this in a cross-platform app?
Identify which elements truly need platform-specific behaviour: navigation transitions, back gestures, date pickers, switches and dialogs. In Flutter, use adaptive constructors like Switch.adaptive or Cupertino widgets based on Theme.of(context).platform. In React Native, many components are native already, and Platform.select handles differences. Keep shared business logic and most layout common, and limit platform branches to a component library so they stay manageable.
13
What is an Expo project and how does it differ from a bare React Native project?
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.
useState stores local state and returns the value and a setter; calling the setter re-renders the component. useEffect runs side effects after render, like fetching data or subscribing to events, with a dependency array controlling when it re-runs, and a returned cleanup function to unsubscribe. Missing dependencies cause stale values, while unstable dependencies cause loops. For data fetching, libraries like TanStack Query are usually better than raw useEffect.
15
What are privacy declarations required by the app stores?
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.
16
A security audit finds that the app stores the access token in plain shared preferences. How do you fix it?
Move tokens to secure storage backed by Keychain on iOS and Keystore on Android, such as flutter_secure_storage or expo-secure-store. Migrate existing users by reading the old value once, writing it securely and deleting the plain copy. Shorten access token lifetime, use refresh tokens, exclude sensitive files from backups, and clear tokens on logout. Retest with the audit team to confirm the issue is closed.
17
How do you force users to update when an old version has a critical bug?
Keep a minimum supported version in remote config or an API endpoint, check it at startup and show a blocking update screen linking to the store. On Android, use the Play In-App Updates API with the immediate flow for critical updates and flexible flow for normal ones. Keep the backend compatible with older versions for a defined period, and use forced updates sparingly because they frustrate users.
18
What are useMemo, useCallback and React.memo used for?
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.
19
A startup asks you to choose between Flutter, React Native and native for their new delivery app. How do you decide?
I would ask about team skills, timeline, budget, required features and long-term plans. If the team knows JavaScript and has a web app, React Native allows code and skill sharing. If they want a consistent custom UI and fast development from scratch, Flutter is strong. Heavy background location and maps work well in both with plugins, but if the app depends deeply on platform features, native may be safer. I would prototype one key screen first.
20
What are runtime permissions and how do they differ between platforms?
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.
21
Explain the mobile app lifecycle states on Android and iOS.
Both platforms move apps between foreground active, inactive, background and terminated states. On iOS, an app goes inactive during interruptions like calls, then background, where it gets limited time before suspension. On Android, activities move through resumed, paused and stopped, and the process can be killed in background. Cross-platform apps observe these through AppLifecycleListener in Flutter or AppState in React Native to pause work and save data.
22
Write a Flutter widget test that taps a button and checks the counter text.
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.
25
What is accessibility in mobile apps and how do you implement it?
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.
26
Describe a time you helped a teammate who was stuck on a problem.
Situation: a new teammate spent two days on a Flutter layout that kept overflowing. Task: help without taking over. Action: I sat with them, showed how to use the widget inspector to see constraints, and explained the constraints go down, sizes go up rule with their own screen. Result: they fixed it in an hour and later solved similar issues alone. I also added the explanation to our team wiki.
27
Your company wants to publish the same app for five white-label clients. How do you manage builds and store listings?
Keep one codebase and create a configuration per client with app ID, name, icons, colours, API base URL and feature flags, using Android flavours and iOS targets or schemes, or dynamic Expo app config. Automate builds for each client in CI with fastlane or EAS. Each client usually needs its own store account or listing, so document signing keys and access per client and automate metadata uploads.
freezed generates immutable data classes with copyWith, equality, toString and union types or sealed classes, and integrates with json_serializable for fromJson and toJson. It removes boilerplate when modelling state such as loading, data and error variants. You annotate a class, run build_runner, and get generated code in a part file. With Dart 3 sealed classes and records, some teams need it less, but it is still widely used.
29
What is App Store Optimisation and what can a developer influence?
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.
30
A React Native list of 2000 items scrolls slowly and shows blank areas. How do you fix it?
Use FlatList or FlashList rather than ScrollView with map. Provide a stable keyExtractor, memoise row components with React.memo, avoid inline functions and heavy computation in renderItem, and use getItemLayout or fixed item sizes where possible. Tune windowSize and maxToRenderPerBatch, compress and cache images with a library like expo-image, and test a release build, since dev mode is much slower.
31
Write a Riverpod provider that fetches data asynchronously and display it in a widget.
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.
33
How do you design a mobile app for users on low-end devices and poor networks?
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.
Test business logic without widgets. For Bloc, the bloc_test package's blocTest builds the bloc with a fake repository, acts by adding events, and expects a list of emitted states. For Riverpod, create a ProviderContainer with overrides for repository providers, read the notifier, call methods and assert the state. Use mocktail for mocks and keep tests fast, deterministic and independent of the network.
35
After an API call finishes, the app throws an error about using BuildContext across async gaps or setState after dispose. How do you fix it?
The user left the screen before the Future completed, so the widget was unmounted. Before using context or calling setState after await, check if (!context.mounted) return; or if (!mounted) return; in State. Better still, move async logic out of widgets into a state management layer that the UI listens to, and cancel subscriptions or timers in dispose so no callbacks run on a dead widget.
36
QA reports the app becomes slower the longer it is used. How do you investigate?
This suggests a memory leak or growing work. Reproduce by repeating a flow many times while profiling memory and CPU. Look for listeners, timers or subscriptions that accumulate, caches without limits, lists that keep growing, or screens kept in the navigation stack. Fix by disposing resources, limiting cache sizes and replacing screens instead of pushing endlessly. Confirm memory returns to baseline after fixes.
Few big employers listed in Chandigarh?
Many Chandigarh candidates also apply to teams in Gurgaon and to remote or hybrid roles. Practise the Gurgaon set as well.
Which companies hire Mobile App Development professionals in Chandigarh?
Companies with large offices in Chandigarh include many IT services and product firms. Use their company pages below to practise employer-specific sets.
Are Mobile App Development interviews in Chandigarh different from other cities?
The questions depend more on the company than the city. Chandigarh's mix of employers decides the style: Interviews usually check strong fundamentals and practical tool skills
How do I find Mobile App Development jobs in Chandigarh?
Shortlist companies with Chandigarh offices, keep your CV focused on Mobile App Development projects, apply on company career pages and job portals with the Chandigarh filter, and practise the questions on this page before each interview.