Uber logo

Uber Backend Engineer System Design Questions

64 practice questions for Uber Backend Engineer interviews

Uber backend engineer interviews typically focus on APIs, databases, system design, concurrency, caching, and data structures.

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 Medium api design #1

1. [OA] Job Scheduler — a system to organize Uber's driver's shifts

Managing a flexible and efficient scheduling system for Uber drivers is crucial for operational efficiency. This problem will assess your ability to design a job scheduler that can optimally organize drivers' shifts.
Problem statement: Design a class JobScheduler with the following methods:
- addJob(driverId: int, startTime: int, endTime: int): Adds a job for a driver within specific time bounds.
- getSchedule(driverId: int) -> List[Tuple[int, int]]: Returns a list of scheduled jobs for a driver.
Example 1:
Input: JobScheduler scheduler = new JobScheduler();
scheduler.addJob(1, 1, 5);
scheduler.addJob(1, 6, 10);
scheduler.getSchedule(1)
Output: [(1, 5), (6, 10)]
Explanation: Driver 1 has two scheduled jobs.
Constraints:
- 1 <= driverId <= 10^6
- 1 <= startTime < endTime <= 10^9
system design Medium api design #2

2. [OA] RateLimiter — implement a rate-limiting feature for Uber APIs

In order to protect Uber's services from abuse and ensure fair usage, we need a reliable rate-limiting mechanism that tracks requests from users over a given time window.
Problem statement: Design a RateLimiter class with the following methods:
- RateLimiter(limit: int, timeWindow: int): Constructor that initializes a rate limiter allowing limit requests every timeWindow seconds.
- allowRequest(userId: int) -> bool: Returns true if the request is allowed, or false if the limit is exceeded.
Example 1:
Input: RateLimiter rateLimiter = new RateLimiter(3, 10);
rateLimiter.allowRequest(1) => Output: true
rateLimiter.allowRequest(1) => Output: true
rateLimiter.allowRequest(1) => Output: true
rateLimiter.allowRequest(1) => Output: false
Explanation: User 1 can make 3 requests in 10 seconds, and the fourth request is denied.
Constraints:
- 1 <= limit <= 100
- 1 <= timeWindow <= 1000
- 1 <= userId <= 10^6

Related Uber Backend Engineer interview prep

Start practicing Uber questions

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

Get Started Free