Design Ride Requests, Driver Matching, and Trip State
Company: Meta
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a ride-sharing system. Explain the core flow from requesting a ride through matching, pickup, completion, and recording the trip's outcome.
### Constraints
Geographic scope, traffic, matching objective, pricing, payment, and service guarantees are unspecified. State a bounded baseline and clarify which features are required. Any concrete location-update interval, radius, or dispatch policy is an explicit assumption.
### Clarifying Questions
- What geographic area and rider/driver volume must be supported?
- Is matching based on distance, estimated pickup time, fairness, or another objective?
- Can drivers receive several offers, and how long is an offer valid?
- What are the rules for cancellation, stale locations, and lost connectivity?
```hint Make assignment a state transition
Finding nearby drivers is different from ensuring that two riders cannot both acquire the same available driver.
```
### What a Strong Answer Covers
- Rider, driver, location, request, offer, and trip state models.
- Candidate search, coordinated assignment, location freshness, and notification delivery.
- Failure recovery, idempotency, geographic partitioning, and observable service behavior.
### Follow-up Questions
- What if a driver accepts after an offer has expired?
- How would you handle requests near the boundary between geographic partitions?
Overview: Design a ride-sharing backend with fresh locations, candidate search, conflict-free assignment, idempotent trip transitions, and failure recovery.
Read the full Meta Software Engineer interview experience this question came from