Uber SDE-II LLD Round - Design a Premium Cab Hailing Service (with multithreading)
Anonymous User
402

Got this in an Uber L4 in-person LLD round. Unlike system design, this was about clean, RUNNING code - not boxes and arrows.

The problem: Design Uber Black. Focus on cab allocation logic — register drivers, request rides, allocate the nearest available cab matching the type, handle concurrent requests without double-booking a driver.

What made it interesting:

  • Concurrency was the real test. Multiple riders requesting simultaneously can't get assigned the same driver. Needed proper locking on driver state transitions (available → assigned).
  • Extensibility mattered. Allocation strategy (nearest, highest-rated) should be swappable → Strategy pattern.
  • Trip lifecycle → State pattern.

Key learning from the candidate: MASTER ONE LANGUAGE for LLD rounds. The interviewer let them check syntax but it caused context switches that cost time.

Full question with requirements, design patterns, and follow-ups (surge pricing, driver rejection, 100K driver scale):
https://beyondleet.dev/questions/design-cab-hailing-service-lld

Full Uber 5-round experience (first 3 were in-person):
https://beyondleet.dev/experiences/uber-sde2-bangalore-2026

For the concurrency part - would you use synchronized blocks, a concurrent map, or optimistic locking for driver assignment? Curious what others prefer.

Comments (1)