Uber interview rundown

Uber system design interviews

What people get asked, what's really being tested, and what to brush up on before you go in.

From candidate reports · Reviewed November 2026 · Independent, not affiliated with Uber

What the round is like

Candidates and Uber's own guide call this round Design and Architecture, and it's often the bar raiser. You can expect it if you're mid-level or above. New grads usually don't get one. They get a smaller design-in-code round instead, like modeling an employee hierarchy or a file system.

Your interviewer will poke at how it scales, what happens when things fail, and why you picked what you picked. Some phone screens also fit in about 15 minutes of design or past-project talk before the coding.

What people have been asked

These come up in candidates' own write-ups of their interviews. Some are problems Uber actually has, and some are classics like a chat app. We wrote the example prompts ourselves, so the wording you get will be different.

Match riders with nearby drivers

Recent reports have the Uber Eats version: an order's ready, so assign a nearby delivery partner and track them to the restaurant and then the customer. We've written it as rides, but the moving parts are the same.

Drivers and delivery partners are always moving, so you need a fast way to search them. And you can't let two riders or two orders grab the same one.

How it might be asked

Let's design the part of a ride-hailing app that matches riders with drivers. When someone requests a trip, find a nearby available driver and offer them the ride. If they decline or don't respond, try someone else. A driver should never have two trips at the same time, and this needs to work in lots of cities at peak times. How would you build it?

Key concepts to know

Try this Interview

Track driver locations

Every active driver sends GPS updates every few seconds. Take all of that in and make the latest positions available to other services.

That's a ton of writes, and each one is out of date a few seconds later. Saving every single update to a database probably isn't where you want to start.

How it might be asked

Drivers' phones send their GPS position every few seconds while they're online. Design the system that takes in those updates and lets other services ask where a driver is right now, or which drivers are in a certain area. Assume millions of drivers around the world.

Key concepts to know

Try this Interview

Stock price alerts

A price feed comes in. Notify everyone who follows a stock when it moves more than a set percent from the previous close. Candidates report this one more than any other.

One big move can mean a flood of notifications at once. You don't want to send the same alert twice, and you need a plan for sends that fail.

How it might be asked

We get a stream of stock prices with the symbol, current price and previous close. Users subscribe to stocks. When a price goes up or down more than 5% from the close, send them a push notification. Design it.

Key concepts to know

Try this Interview

Build a driver heatmap dashboard

Show where drivers are in a city, both over the last few minutes and hour by hour for the day before.

It's the same data going to two very different places. One needs to be fresh and the other needs to stick around.

How it might be asked

Our analytics team wants a dashboard with a heatmap of drivers in a city. They need one view of the last 20 minutes, close to real time, and another where they can look at yesterday hour by hour. Design the backend for it.

Key concepts to know

Try this Interview

Nearby restaurants for Uber Eats

Store restaurants and quickly return the ones near a customer, then deal with packed city centers and places with nothing around.

A normal index can't search by distance. Candidates say interviewers dig into the schema and how you store locations, then push on latency.

How it might be asked

Design the backend that shows a customer the restaurants near them when they open Uber Eats. Focus on how you store restaurant locations and query them fast. What happens in a dense city center, or where there's nothing nearby?

Key concepts to know

Try this Interview

Chat app

One-to-one and group messaging with offline delivery, receipts and history, scaled to Uber's size.

Messages have to reach people who might be offline, in order, without getting lost. Receipts add a pile of tiny writes on top.

How it might be asked

Design a chat app like Messenger. Support one-to-one and group chats, people who are offline, delivered and read receipts, and message history. Then tell me how it scales.

Key concepts to know

Try this Interview

What's really being tested

TopicWhat you're being asked, basically
Location dataHow do you search by distance when a normal index can't?
Lots of writesWhat takes millions of tiny updates without melting your storage?
Fan-outOne event, lots of people to tell. How do you send it to all of them, and only once?
FreshnessWhat has to be current, and what can show up later?
CorrectnessWhere's close enough fine, and where is it a real bug, like giving one partner two orders?
FailureWhat does a rider or driver actually see when something goes down?

Worked example: a driver heatmap

You've got to build an internal dashboard showing drivers in a city, both for the last 20 minutes and hour by hour the next day. One candidate got this as their bar raiser design round. It's a nice example because the same data has to work for two very different views.

Just an illustration. Each square is a map cell, and brighter means more drivers.

One way to build it

Location events~500K per secondConsumerslat, lng → geohashKafka streamkeyed by geohashFlink: 1 mintumbling countRedislast 20 minutesFlink: hourlyhourly totalsPostgresprevious dayLIVE VIEWNEXT-DAY VIEW
One reasonable setup. There are plenty of others.

Each location gets turned into a map cell. Send everything for the same cell to the same worker, and that worker can count it up over time. Then each view reads from its own place:

Live viewNext-day view
ShowsThe past 20 minutesHourly totals
Stored inA fast in-memory storeA relational database
Organized byCity, map cell and minuteCity, map cell and hour
Kept forMinutesAs long as the business wants it

How to work through a question

  1. Figure out what you're building. Who's using it, what does it need to do, and what can you ignore?
  2. Do some rough math. How many requests, how much data, more reads or more writes? Those answers decide a lot.
  3. Walk through one request. Draw the simplest thing that works before you add anything fancy.
  4. Pick storage last. Once you know what gets read, how often and how fresh it has to be, the choice gets a lot easier.
  5. Then try to break it. What happens in a traffic spike? What if a server dies?

Key concepts to know

Sources