PracHub
QuestionsPremiumLearningGuidesCheatsheetNEWCoaches
|Home/System Design/Uber

Design a ride-hailing platform like Uber

Last updated: Mar 29, 2026

Quick Overview

This question evaluates a candidate's competency in large-scale system design, covering distributed systems architecture, data modeling, real-time location streaming, matching algorithms, scalability, fault tolerance, and secure payment handling.

  • hard
  • Uber
  • System Design
  • Software Engineer

Design a ride-hailing platform like Uber

Company: Uber

Role: Software Engineer

Category: System Design

Difficulty: hard

Interview Round: Onsite

You are asked to design a large-scale ride-hailing platform similar to Uber. ### Requirements #### Functional requirements - Riders can: - Sign up, log in, and manage their profile. - Request a ride from a pickup location to a destination. - See nearby available drivers and estimated time of arrival (ETA). - See an estimated fare before confirming the ride. - Track the driver in real time once a ride is accepted. - Pay via stored payment methods (e.g., credit card). - Rate and review drivers after the ride. - Drivers can: - Sign up, go through onboarding, and register their vehicle. - Go online/offline to indicate availability. - Receive ride requests and accept/decline them. - Navigate to the rider and then to the destination. - The system should: - Automatically match riders with nearby available drivers. - Support surge pricing based on demand and supply in a geographic area. - Store trip history (routes, prices, timestamps) for both riders and drivers. - Send real-time notifications (push/SMS) about ride status updates. #### Non-functional requirements - High availability: Service should remain usable even if individual components fail. - Low latency: - Rider should see ETA and match results quickly (e.g., within a few hundred ms). - Location updates should appear near real time. - Scalability: - Support millions of daily active users in multiple cities/regions. - Reliability and consistency: - Payments and trip records must not be lost or double charged. - Some data (e.g., live location) can be eventually consistent. - Security and privacy: - Protect user data and payment information. ### Task Design the backend system for this platform. In your answer, cover: 1. **High-level architecture**: - Main services/components and how they interact (e.g., client apps, API gateway, core services). 2. **Data model and storage**: - Key entities (users, drivers, vehicles, trips, locations, payments) and a rough schema. - Choice of databases (SQL / NoSQL / in-memory) and what to store where. 3. **Ride request and matching flow**: - How a rider request flows through the system. - How to find and choose a nearby driver efficiently. 4. **Real-time location tracking**: - How drivers send location updates. - How the system stores/serves this for ETAs and maps. 5. **Scalability and partitioning**: - How to scale by city/region or other keys. - How to handle hotspots during rush hour. 6. **Reliability and fault tolerance**: - How to handle failures of individual services or data centers. - How to ensure payments and trip records are durable. 7. **Additional considerations** (briefly): - Surge pricing approach. - Monitoring, logging, and key metrics you would track.

Quick Answer: This question evaluates a candidate's competency in large-scale system design, covering distributed systems architecture, data modeling, real-time location streaming, matching algorithms, scalability, fault tolerance, and secure payment handling.

Related Interview Questions

  • Design an Uber Eats Cart Service - Uber (medium)
  • Design A URL Shortener - Uber (medium)
  • Design Restaurant Search and Monitoring - Uber (hard)
  • Design Nearby Restaurant Search - Uber
  • Design a Food Delivery Cart - Uber (medium)
Uber logo
Uber
Nov 17, 2025, 12:00 AM
Software Engineer
Onsite
System Design
17
0

You are asked to design a large-scale ride-hailing platform similar to Uber.

Requirements

Functional requirements

  • Riders can:
    • Sign up, log in, and manage their profile.
    • Request a ride from a pickup location to a destination.
    • See nearby available drivers and estimated time of arrival (ETA).
    • See an estimated fare before confirming the ride.
    • Track the driver in real time once a ride is accepted.
    • Pay via stored payment methods (e.g., credit card).
    • Rate and review drivers after the ride.
  • Drivers can:
    • Sign up, go through onboarding, and register their vehicle.
    • Go online/offline to indicate availability.
    • Receive ride requests and accept/decline them.
    • Navigate to the rider and then to the destination.
  • The system should:
    • Automatically match riders with nearby available drivers.
    • Support surge pricing based on demand and supply in a geographic area.
    • Store trip history (routes, prices, timestamps) for both riders and drivers.
    • Send real-time notifications (push/SMS) about ride status updates.

Non-functional requirements

  • High availability: Service should remain usable even if individual components fail.
  • Low latency:
    • Rider should see ETA and match results quickly (e.g., within a few hundred ms).
    • Location updates should appear near real time.
  • Scalability:
    • Support millions of daily active users in multiple cities/regions.
  • Reliability and consistency:
    • Payments and trip records must not be lost or double charged.
    • Some data (e.g., live location) can be eventually consistent.
  • Security and privacy:
    • Protect user data and payment information.

Task

Design the backend system for this platform. In your answer, cover:

  1. High-level architecture :
    • Main services/components and how they interact (e.g., client apps, API gateway, core services).
  2. Data model and storage :
    • Key entities (users, drivers, vehicles, trips, locations, payments) and a rough schema.
    • Choice of databases (SQL / NoSQL / in-memory) and what to store where.
  3. Ride request and matching flow :
    • How a rider request flows through the system.
    • How to find and choose a nearby driver efficiently.
  4. Real-time location tracking :
    • How drivers send location updates.
    • How the system stores/serves this for ETAs and maps.
  5. Scalability and partitioning :
    • How to scale by city/region or other keys.
    • How to handle hotspots during rush hour.
  6. Reliability and fault tolerance :
    • How to handle failures of individual services or data centers.
    • How to ensure payments and trip records are durable.
  7. Additional considerations (briefly):
    • Surge pricing approach.
    • Monitoring, logging, and key metrics you would track.

Solution

Show

Comments (0)

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Uber•More Software Engineer•Uber Software Engineer•Uber System Design•Software Engineer System Design
PracHub

Master your tech interviews with 7,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.