Mobile App Development Interview Questions in Thiruvananthapuram
36 practice questions with answers for Mobile App Development interviews in Thiruvananthapuram.
Mobile App Development jobs in Thiruvananthapuram
Thiruvananthapuram's Technopark is one of India's oldest IT parks, hosting IT-services, product and engineering-services companies. Data and testing teams here often work with global clients in finance, travel and healthcare.
Below are 36 questions that match the mix of service, product and domain employers hiring junior mobile app developers in Thiruvananthapuram.
Solved for ThiruvananthapuramStart 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 is a WebView and when is it appropriate to use one?
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.
02
What is responsive design in mobile apps and how do you handle different screen sizes?
Responsive design means layouts adapt to screen width, orientation, foldables and tablets instead of using fixed sizes. Use flexible layouts, percentages or flex, and breakpoints for compact, medium and expanded widths. In Flutter use LayoutBuilder and MediaQuery.sizeOf; in React Native use flexbox and useWindowDimensions. Respect safe areas for notches and system bars, support text scaling for accessibility, and test on small budget phones.
03
How do you manage form state and validation across multiple steps in a Flutter onboarding flow?
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.
04
After a release, crash reports show a spike only on one Android OS version. What steps do you take?
Pause the staged rollout to limit impact. Filter crash reports by OS version and device to find the top stack trace, and check behaviour changes for that version, such as permission, background or edge-to-edge rules. Reproduce on an emulator of that version, fix it, add a regression test and resume rollout with a hotfix. Add that OS version to the regular test device matrix.
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.
Provider is simple and built on InheritedWidget but depends on BuildContext and can throw provider-not-found errors at runtime. Riverpod, from the same author, is compile-safe, independent of the widget tree, supports async providers and easy overrides for testing. Bloc uses events and states with streams, enforcing strict separation and traceability, popular in large teams and enterprises. Choose based on team familiarity and app complexity.
08
A critical bug reaches production in a React Native app. How do you fix it quickly?
If the bug is in JavaScript, fix it, test on a preview channel, and publish an over-the-air update to production with a staged rollout, keeping it compatible with the current runtime version. If it needs native changes, build a hotfix release, submit it, and request expedited review on iOS if justified. Meanwhile disable the feature with a remote config flag if possible, and halt the store rollout.
09
How do you handle platform-specific code in React Native?
Use Platform.OS checks or Platform.select({ ios: ..., android: ... }) for small differences in styles or behaviour. For larger differences, create files with platform extensions like DatePicker.ios.tsx and DatePicker.android.tsx, and the bundler picks the right one automatically. Keep platform branches inside small components so screens stay shared. Native platform differences, such as permissions setup, are configured in native files or Expo config plugins.
10
A user reports that they cannot find your app in the store on their old phone. Why could this happen?
The app may not be available for their device because the minimum OS version is higher than theirs, the device lacks a required hardware feature declared in the manifest, the app is not released in their country, or the device architecture is excluded. Check the device catalogue in Play Console and the deployment target on iOS. Decide whether supporting that segment is worth lowering requirements.
11
Write a Flutter screen that fetches a list from an API using FutureBuilder.
Situation: my team decided to build a client app in Flutter, and I had only React Native experience. Task: deliver the login and dashboard screens in three weeks. Action: I completed the official codelabs in the first week, mapped concepts I knew like components and hooks to widgets and state, and asked for early code reviews. Result: the screens shipped on time, and I later wrote a short guide for other React Native developers moving to Flutter.
13
How do you write a Fabric native component or use one in React Native?
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.
14
Describe a time you had to deliver a feature with incomplete requirements.
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.
15
How do you implement OTP login with a phone number?
The user enters a phone number, the backend or an auth service sends an OTP via SMS and returns a verification ID. The user enters the code, which is verified to issue session tokens. On Android, use the SMS Retriever or User Consent API to auto-read the code without SMS permissions; on iOS, set the text content type to one-time code for autofill. Rate-limit requests, expire codes quickly and protect against abuse.
16
Where should you keep API keys and secrets in a mobile app?
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.
17
What are versionName, versionCode and build numbers?
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.
18
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.
19
How do you detect and fix memory leaks in cross-platform apps?
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
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.
21
Your app must show live delivery partner location on a map. How would you design it?
The partner app sends location updates every few seconds through a foreground service to the backend, which publishes them to a real-time channel like WebSockets or Firestore documents. The customer app subscribes only while the tracking screen is open and smoothly animates the marker between points. Throttle updates, reconnect on network changes, and fall back to polling. Stop tracking when the delivery completes to save battery.
22
Explain the three trees in Flutter: widget, element and render object.
Widgets are lightweight, immutable descriptions of UI created on every build. Elements are the mounted instances that hold a widget's position in the tree and link to State; they are reused when a new widget of the same type and key appears. RenderObjects handle layout, painting and hit testing, and are expensive, so Flutter updates them only when needed. This design makes frequent rebuilds cheap.
23
The API responses are slow on mobile networks. What can the mobile team ask the backend team to change?
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.
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.
25
Write a Riverpod provider that fetches data asynchronously and display it in a widget.
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.
27
What is InheritedWidget and how does Provider build on it?
InheritedWidget lets descendants read data efficiently via context and rebuild when it changes, which is how Theme and MediaQuery work. Writing it by hand is verbose. Provider wraps InheritedWidget with a simpler API: ChangeNotifierProvider exposes a ChangeNotifier, and widgets use context.watch to rebuild or context.read to call methods without rebuilding. It is simple and suitable for small to medium apps.
28
What is Firebase and which services do mobile apps commonly use?
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.
29
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.
30
How do you handle a logout that must clear all user data across the app?
Centralise session state in an auth provider or bloc that other state depends on. On logout, clear secure tokens, wipe local databases or caches for that user, reset or invalidate dependent providers, for example by Riverpod providers watching the auth state, and redirect with the router guard to login. Cancel ongoing requests and background jobs. Test that no previous user's data appears after logging in as someone else.
31
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.
32
How do you handle feedback that your code is not good enough?
I treat it as information, not a personal attack. I ask for specific examples and what better looks like, fix the issues, and look for patterns so I do not repeat them. Early in my career, a reviewer pointed out that my components were too large; I learned to split them and write small hooks, and my review comments dropped steadily after that. I also thank reviewers for their time.
33
Tell me about a time you improved app performance in a cross-platform app.
Situation: our React Native order history screen took three seconds to render and scrolled poorly. Task: make it smooth. Action: I profiled with React Native DevTools, replaced ScrollView with FlashList, memoised rows, moved date formatting into the API layer and switched images to a caching library. Result: render time dropped below 600 milliseconds, and frame drops nearly disappeared on budget phones.
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.
35
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.
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.
Few big employers listed in Thiruvananthapuram?
Many Thiruvananthapuram candidates also apply to teams in Bangalore and to remote or hybrid roles. Practise the Bangalore set as well.
Which companies hire Mobile App Development professionals in Thiruvananthapuram?
Companies with large offices in Thiruvananthapuram include many IT services and product firms. Use their company pages below to practise employer-specific sets.
Are Mobile App Development interviews in Thiruvananthapuram different from other cities?
The questions depend more on the company than the city. Thiruvananthapuram's mix of employers decides the style: Data and testing teams here often work with global clients in finance, travel and healthcare
How do I find Mobile App Development jobs in Thiruvananthapuram?
Shortlist companies with Thiruvananthapuram offices, keep your CV focused on Mobile App Development projects, apply on company career pages and job portals with the Thiruvananthapuram filter, and practise the questions on this page before each interview.