Groww Mobile App Development Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About Groww hiring for Mobile App Development roles
Groww is an Indian investment platform offering stocks, mutual funds, futures and options, fixed deposits and other financial products. Its engineering and analytics teams work on trading systems, user experience, risk and growth. It hires for software engineers, SDETs, data analysts and data scientists. Many users are first-time retail investors.
For Mobile App Development roles, this Groww practice set focuses most on Flutter State Management and Architecture (6), Mobile Development Fundamentals (6), Mobile Backend, APIs and Firebase (5), React Native Navigation, State and Native Modules (4). It has 5 easy, 19 medium, 6 hard questions, so you can start easy and work up to the harder ones.
Company type
Fintech
Headquarters
Bengaluru, India
Main India offices
Bengaluru
Groww Mobile App Development interview process
Online assessment or assignment
Technical round (coding or SQL)
Design or problem solving round
Hiring manager round
Typical pattern based on public candidate experiences. Rounds vary by role, team and year.
Solved for GrowwStart 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
A global Redux store causes the whole app to re-render on every small change. How do you fix it?
Components are probably selecting large parts of state or creating new objects in selectors. Select only the fields each component needs with useSelector, memoise derived data with createSelector, and keep state normalised. Move server data to RTK Query or TanStack Query and local UI state back into components. Verify improvements with the React profiler, checking which components render after each action.
02
What is Supabase and how does it compare to Firebase?
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.
03
Write a Riverpod provider that fetches data asynchronously and display it in a widget.
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.
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.
06
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.
07
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.
08
What would you do if you joined a project and found the codebase poorly structured?
I would first understand why it is that way, since deadlines and changing requirements often explain it. I would document the main pain points with examples, such as frequent bugs in a module, and propose small improvements tied to upcoming features rather than a rewrite. I would add tests around risky areas first. Showing measurable wins, like fewer bugs, builds trust for larger refactors later.
09
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.
10
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.
11
Write a React Native function that uploads an image with progress using Expo FileSystem.
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.
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.
14
How do you balance speed and quality when a client wants features fast?
I agree on what quality means for this release, such as no crashes in key flows, working offline basics and tests for payment logic. I deliver the smallest useful version first, behind feature flags if needed, and avoid shortcuts in areas that are expensive to fix later, like data models and security. I make technical debt visible in the backlog with an estimate so it is planned rather than forgotten.
15
Users say the app does not work properly on foldable phones and tablets. What do you check?
Check whether orientation is locked, layouts use fixed widths, and screens assume phone dimensions. Make layouts adapt by width breakpoints with two-pane layouts on wide screens, handle configuration and size changes without losing state, and avoid hardcoding aspect ratios. Recent Android versions ignore orientation locks on large screens, so locking is no longer a fix. Test with resizable emulators, foldable postures and split-screen mode.
16
Write a Cubit that loads products and emits loading, success and error states.
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.
18
Users lose their place in a long Flutter form when they get a phone call and the app is killed in background. How do you fix it?
The operating system may kill the app process in background, and in-memory state is lost. Save draft form data to local storage, such as shared_preferences, Hive or a SQLite table, as the user types with a short debounce, and restore it when the screen opens. Flutter's RestorationMixin and restorationScopeId can restore simple UI state like scroll position and text fields. Clear the draft after successful submission.
19
Two users editing the same shared list offline create conflicting changes. How do you resolve conflicts?
Choose a strategy based on data. Last write wins, using server timestamps, is simple but can lose edits. Field-level merging keeps non-conflicting changes. For lists, treat each item as a separate record with its own version so edits rarely clash. For collaborative content, CRDT-based approaches merge automatically. Always let the server decide final order, and show users when their change was overwritten.
Store data in a local database and render the UI from it, so the app works without network. Queue user changes locally with a pending status and sync them in the background when connectivity returns, using retries with backoff. Fetch server changes using timestamps or sync tokens and merge them. Resolve conflicts with clear rules like last write wins or server authority, and show sync status to users.
21
How would you migrate a large React Native app from JavaScript to TypeScript?
Enable TypeScript with allowJs so both coexist, start with a relaxed tsconfig, and convert shared code first: API types, models, utilities and navigation param lists. Then convert screens feature by feature, tightening strict options gradually. Add type checks to CI so new files must be TypeScript. Avoid using any to silence errors; use unknown and narrow. Track progress and celebrate milestones to keep momentum.
22
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.
23
Write a release checklist for a mobile app update.
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.
24
Write a go_router configuration with an auth redirect.
Profile on the budget device in profile mode. Common fixes: wrap frequently repainting areas in RepaintBoundary, avoid expensive effects like Opacity on large subtrees, clipping and shadows in scrolling lists, use AnimatedBuilder with child so static parts do not rebuild, precache images and decode them at display size, and move heavy computation to isolates. Reduce animation complexity on low-end devices if needed.
27
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.
28
What is the difference between a BaaS and a custom backend for a mobile startup?
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.
29
Write a React Native component that requests location permission and shows the coordinates using Expo.
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.
Tips to crack the Groww Mobile App Development interview
Learn stock market basics like orders, settlement, mutual fund NAV and SEBI regulations for domain discussion.
Practise test scenarios for order placement, market hours and payment failures for QA roles.
Prepare analytics cases on first-time investor activation and retention, which are central to Groww's growth.
Keep a one-minute story ready for every project on your CV: problem, your part, tools, result.
Practise the hard questions on this page aloud; Groww interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the Groww Mobile App Development interview?
Candidates usually go through 4 stages: Online assessment or assignment; Technical round (coding or SQL); Design or problem solving round; Hiring manager round. The exact rounds change with the role, team, location and your experience, so confirm the process with the recruiter.
Which topics should I prepare for the Groww Mobile App Development interview?
This practice set leans on Flutter State Management and Architecture (6), Mobile Development Fundamentals (6), Mobile Backend, APIs and Firebase (5), React Native Navigation, State and Native Modules (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Groww interviewers ask you to walk through real work.
Are these the exact questions asked at Groww?
No. These are curated practice questions that match the skills and difficulty usually tested in fintech interviews like Groww's. They are not a leaked or verified list of past questions.
Where does Groww hire Mobile App Development professionals in India?
Groww has large teams in Bengaluru. Openings and locations change often, so check the Groww careers page and filter by city and experience.
Mobile App Development questions for similar companies