Meta System Design Interview: Food Delivery Orders and Dispatch
Based on questions reported for Meta interviews
The interviewer opens
Hi, and thanks for joining. Welcome to your interview for the software engineer role at Meta. We'll design a system together, with you sketching on the whiteboard on the right of your screen as you talk. If you need to step out or take a break, you can pause the interview anytime with the Pause button at the top right.
The problem is in the Problem tab: it's a food delivery system, where orders flow between customers, restaurants and couriers. Please read through the requirements and ask me anything you'd like clarified before you start drawing.
The problem
Design a food delivery app like DoorDash: customers browse nearby restaurants and place orders, restaurants accept and prepare them, a courier is assigned to pick up and deliver, and the customer follows the order live until it arrives.
Must do
- Customers browse nearby restaurants and menus and place an order
- Restaurants receive orders, accept or reject them, and mark them ready
- A courier is assigned to each order, picks it up and delivers it
- Customer, restaurant and courier all see the order's current status as it changes
Must hold
- Status changes must reach all three parties within seconds
- An order must never be lost, double-assigned, or stuck in a wrong state