Uber System Design Interview: Ride-Hailing Driver Matching

Based on questions reported for Uber interviews

The interviewer opens

Hi, and thanks for joining. Welcome to your interview for the software engineer role at Uber. We'll design a system together, with you sketching on the whiteboard on the right of your screen as you talk, and you can pause at any time with the Pause button at the top right if you need a break.

The problem is about matching riders to nearby drivers, which sits at the heart of what Uber does. It's up in the Problem tab, so please read through the requirements and ask me anything you'd like clarified before you start drawing.

The problem

Design the system that matches a rider's trip request to a nearby available driver: it offers the trip to a driver and, if they decline or don't respond, offers it to another, across many cities at peak times.

Must do

  • Drivers' apps continuously report location and availability
  • A rider requests a trip from a pickup point
  • Find nearby available drivers and offer the trip to one at a time
  • On decline or no response, offer the trip to the next driver
  • A driver is never assigned two trips at once

Must hold

  • Matching keeps working in many cities through evening peaks
  • Riders get a driver offer within seconds of requesting