Design an Uber Eats Cart Service
Company: Uber
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design the shopping cart service for a food delivery platform similar to Uber Eats.
The service should allow customers to add, update, and remove menu items from a cart before checkout. A cart is associated with one customer and typically one merchant or restaurant. The design should cover:
- Core user flows: create cart, add item, update quantity, remove item, view cart, and submit cart to checkout.
- Handling menu item options, modifiers, prices, taxes, fees, promotions, and availability.
- Data model and APIs.
- Consistency requirements between cart, menu, pricing, inventory or availability, and checkout.
- Scalability, reliability, and failure handling.
- Edge cases such as restaurant closing, price changes, unavailable items, multiple devices, and abandoned carts.
Quick Answer: This question evaluates a candidate's ability to design a shopping cart service for a food‑delivery platform, focusing on competencies in data modeling, API design, state and consistency management across cart, menu and pricing, handling item options and availability, and designing for scalability, reliability, and failure handling.