Uber logo

Uber Mobile Engineer System Design Questions

64 practice questions for Uber Mobile Engineer interviews

Uber mobile engineer interviews focus on iOS or Android platform knowledge, memory management, offline-first architecture, and mobile-specific system design.

All Roles Software Engineer Backend Engineer Frontend Engineer Full Stack Engineer Mobile Engineer Data Engineer Data Scientist ML Engineer DevOps Engineer DevOps Engineer Product Manager SRE Security Engineer Engineering Manager Data Analyst UX/UI Designer QA Engineer
1
System Design
system design Hard Verified Question #1

1. Top 6 Recently Asked Uber System Design Questions


Category: Graph system design problem
This collection covers the most frequently asked system design questions at Uber interviews.
Input: Graph (nodes and edges)
Output: Computed result
system design Senior offline sync #1

1. [OA] Design an Offline-First Sync Engine for Uber Rides

With many Uber users dependent on the app in low connectivity areas, designing an Offline-First Sync Engine is critical. As a Mobile Engineer, your task is to create a robust class to manage local data persistence and synchronization with the server.
Problem statement: Define a class OfflineSyncEngine that maintains local copies of user ride requests and syncs them with a remote server when connectivity is restored.
- addRideRequest(ride: RideRequest) -> None: Adds a ride request to the local queue.
- syncWithServer() -> None: Syncs all local requests with the server when a connection is available.
Example 1:
Input: syncEngine.addRideRequest(RideRequest(userId='user1', origin='A', destination='B'))
Output: None
Explanation: The ride request is stored locally until a connection is established.
Example 2:
Input: syncEngine.syncWithServer()
Output: None
Explanation: Syncs the local ride requests with the server.
Constraints:
- The system should handle up to 500 requests locally.
- Data types for trip requests must be validated.
system design Senior messaging #2

2. [OA] Design a Notifications Center for Uber

Uber needs an effective Notifications Center to manage ride updates, promotions, and driver messages in real-time. As a Mobile Engineer, you will design a system that handles notifications through multiple channels.
Problem statement: Define the NotificationCenter class, which must manage sending and storing notifications for users. You should implement methods to send notifications via different channels and to retrieve pending notifications.
- sendNotification(userId: string, message: string, channel: string) -> None: Sends a notification to the intended user through the specified channel (e.g., SMS, push).
- getPendingNotifications(userId: string) -> List[str]: Retrieves and returns all pending notifications for the given user.
Example 1:
Input: notificationCenter.sendNotification('user1', 'Your ride is arriving!', 'push')
Output: None
Explanation: Successfully sends a push notification.
Example 2:
Input: notificationCenter.getPendingNotifications('user1')
Output: ['Your ride is arriving!']
Explanation: Retrieves the pending notification message for the user.
Constraints:
- The number of notifications should not exceed 1000 per user.
- User ID and message should be non-empty strings.

Related Uber Mobile Engineer interview prep

Start practicing Uber questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free