Design Splitwise.
MediumImagine you're building a simplified version of Splitwise, a popular app for tracking shared expenses among friends. The core problem revolves around managing users, groups, and expenses, ensuring fair distribution of costs, and displaying settlement amounts to equalize debts. This isn't just about storing data; it's about designing a system that handles complex relationships between users, groups, and transactions, and does so in a way that's easy to understand, maintain, and extend.
This coding problem focuses on the core logic of splitting expenses and calculating who owes whom. We will focus on in-memory calculations for simplicity, rather than persistence.
Requirements
Think like an Architect
Before revealing the requirements, imagine you're in the interview right now."How would you clarify the scope with your interviewer?"