Design Uber
AdvancedOn the roadmap:Interview Ready · step 7: Practise under pressure
Design a ride-hailing system that matches riders and drivers.
Cover location ingestion, the geospatial index, matching and consistency, trip state machine, pricing and sharding.
Requirements
- Riders request a trip and see nearby drivers
- Match the rider with a suitable driver quickly
- Track the trip in real time
- Dynamic pricing and payments
Scale & constraints
- Millions of drivers sending a location update every 4 seconds
- 100M monthly riders
- Matching decision in a few seconds
Hints (try without them first)
- How do you index and query nearby drivers efficiently? Consider geohash or quadtrees.
- How do you avoid matching two riders to one driver?
- How do you shard trip data?