A delivery app must track the rider location all day. How do you balance accuracy with battery life and OS limits?
What the interviewer wants to hear
- Use fused/significant location APIs with suitable accuracy and intervals
- Adapt frequency to movement and app state
- Foreground service on Android, background location mode on iOS
- Batch uploads and avoid waking the radio often
- Clear permission flow and user transparency
- Handle OS restrictions and doze mode
Model answer
GPS and the network radio are the biggest battery costs, so I avoid using them at full power all the time. On Android I use the Fused Location Provider and on iOS Core Location, choosing accuracy and interval based on need: high accuracy during an active delivery, lower when the rider is idle. I adapt using motion detection, so when the rider stops, updates slow down. Android requires a foreground service with a visible notification for continuous tracking, and iOS needs the background location mode and Always permission, which must be justified clearly to the user. Instead of sending each point immediately, I store points locally and upload them in batches, which lets the radio sleep. I also test under doze and low power mode, and monitor battery impact in production.
Can you answer it under time pressure?
Take a timed hard round and get scored on every answer.
More hard Mobile App Developer questions
- How would you design the mobile client for a chat app like WhatsApp?
- Your app has grown to 40 developers and one huge module. Builds are slow and teams block each other. How would you restructure it?
- In a Flutter or React Native app, you need a feature that only exists in native SDKs, such as a payment terminal SDK. How would you integrate it well?
- How would you measure and improve app performance for real users in production, not just on your test phone?
- Users keep running old versions of your app for months. How do you evolve the API and decide when to force an update?
- Your crash reports show rising out-of-memory crashes after a release. How do you find and fix the problem?
- How would you implement secure login with an OAuth or OpenID Connect provider in a mobile app?
- How would you migrate a large UIKit or Android View app to SwiftUI or Jetpack Compose without stopping feature work?
- Millions of users have data in your app local database. How do you change the schema safely?