EightFold AI | LLD | Senior Software Engineer | Rant | Question Attached
Summary
I interviewed for a Senior Software Engineer position at EightFold AI. The interview consisted of a 90‑minute low‑level design and coding exercise to build a simplified Splitwise system, and I was ultimately rejected after running out of time.
Full Experience
Round: 90 mins Interviewer was ~4 year exp (also Senior Engineer) Intitially interviewer told its DSA+LLD , but interviewer said no to DSA completely and said only LLD. Result: Rejected ( Time finished before I could write testcases, otherwise completed the code. As mentioned later in post , naive guy , doesnt care about communication , approach , correctness , optimization , validations, nothing. Just run it run it somehow.) I have given LLD interview before , but not with a dumb guy like this who doesnt understand that there are many aspects to look in an interview,especially with now the presence of AI , the logic , knowledge, communication takes more weightage than completionof code Expectation - Code in any language of your own Not pseudocode, complete code. Tip: Dont care about validation and parsing and modularity and design pattern and all initially. Just write the main functional class and test cases. If then, time permits do the optimization. Also can ask what do they care about more , completion or logic. About interviewer - underconfident guy Only said "Okay" in the whole interview Almost felt like he was doing his own work and me doing mine. No question about why this design pattern or challenge the approach or point anything. Either I was coding like God , or he didn't himself had a clue , or was not interested. Problem- Splitwise - LLD + Coding Objective Design and implement a simplified version of Splitwise, an expense-sharing system. We are evaluating: Object-oriented design Clean abstractions Code structure and modularity Extensibility Ability to evolve the system under new requirements Communication clarity This is not a competitive programming problem. We care more about design quality and structure than speed. Core System 📌 Functional Requirements User Each user has: Unique ID Name Users can participate in expenses. Add Expense The system should support adding an expense with: paidBy → user who paid amount → total amount participants → list of users involved splitType splitDetails (if applicable) Supported Split Types A) Equal Split The total amount is divided equally among all participants. Example: Amount = 300 Users = A, B, C Each owes 100 B) Exact Split Each participant specifies the exact amount they owe. Constraint: Sum of split amounts must equal the total expense amount. Example: Amount = 300 A → 100 B → 150 C → 50 Balance Tracking The system must: Track who owes whom Update balances after every expense Maintain net balances Avoid showing zero balances Show Balances Support: Show all balances Show balances for a specific user Example Output: B owes A 100 C owes A 50 ⚙️ Technical Constraints Use in-memory data structures only Any programming language is allowed Focus on clean structure and readability Discuss your design before coding Part 2 was there too where – Extend Split Types ( let say percentage) - Have friends groups concepts and display things groupwise
Interview Questions (1)
Design and Implement Simplified Splitwise System
Objective: Design and implement a simplified version of Splitwise, an expense‑sharing system.
Evaluation Criteria:
- Object‑oriented design
- Clean abstractions
- Code structure and modularity
- Extensibility
- Ability to evolve the system under new requirements
- Communication clarity
Core System – Functional Requirements:
- User: each user has a unique ID and a name; users can participate in expenses.
- Add Expense: support adding an expense with the following fields:
paidBy– user who paidamount– total amountparticipants– list of users involvedsplitType– type of split (see below)splitDetails– additional details required by the split type
Supported Split Types:
- Equal Split: the total amount is divided equally among all participants.
Example: amount = 300, users = A, B, C → each owes 100.
- Exact Split: each participant specifies the exact amount they owe; the sum must equal the total expense.
Example: amount = 300, A → 100, B → 150, C → 50.
Balance Tracking:
- Track who owes whom.
- Update balances after every expense.
- Maintain net balances.
- Avoid showing zero balances.
Show Balances:
- Show all balances.
- Show balances for a specific user.
Example output:
B owes A 100
C owes A 50
Technical Constraints:
- Use in‑memory data structures only.
- Any programming language is allowed.
- Focus on clean structure and readability.
- Discuss design before coding.
Extension (Part 2):
- Extend split types (e.g., percentage‑based split).
- Introduce friend groups and display balances group‑wise.