High-Level Design (system design) rounds at Uber lean toward real, ride-hailing-and-marketplace-adjacent problems — expense settlement, location-based recommendations, and real-time geospatial pipelines — rather than generic textbook prompts. Interviewers reward a structured approach: requirements first, then data model, core algorithmic pieces (like debt simplification or geohashing), and scaling considerations, in that order.
Design a bill-splitting and expense-settlement system (like Splitwise) for groups of users, and reason about how it scales to a large number of concurrent group-expense entries.
Requirements to clarify first
- Is debt tracked per group only, or can two users also owe each other across groups (which decides whether simplification runs per group or per user pair)?
- How is an expense split — equal, exact amounts, percentages, shares — and can a split be edited or deleted after the fact?
- Must a member's balance be exactly right immediately after an expense is added, or is a few seconds of lag acceptable if the expense itself is never lost?

