Uber System Design Interview: Messenger-Style Chat at Uber Scale
Based on questions reported for Uber interviews
The interviewer opens
Hi, and thanks for joining me today. Welcome to your interview for the software engineer role at Uber. We'll design a system together, and you can sketch on the whiteboard on the right of your screen as you talk. If you need to step out or take a break, the Pause button at the top right will pause the interview at any time.
The problem is a Messenger-style chat service, and it's up in the Problem tab now. Please read through the requirements and ask me anything you'd like clarified before you start drawing.
The problem
Design a chat service like Messenger where users exchange text messages one-to-one and in groups, receive messages sent while they were offline, see delivered and read receipts, and scroll back through their conversation history.
Must do
- Send and receive text messages in one-to-one conversations
- Send and receive text messages in group conversations
- Deliver messages sent while the recipient was offline once they reconnect
- Show delivered and read receipts to the sender
- Load and scroll back through a conversation's message history
Must hold
- No accepted message is ever lost, and each conversation shows messages in a consistent order
- Messages to online recipients feel instant