PhonePe | SDE2 | Machine Coding Round
Summary
My machine coding round for the SDE2 role at PhonePe required designing a complaint resolution system to manage unsuccessful transactions, outlining features for customers, agents, and admins, along with detailed system and implementation requirements.
Full Experience
The task is to design a complaint resolution system to manage unsuccessful transactions. Key features include:
Customers can log issues for failed or pending transactions by providing details like issue type, subject, description, and email.
Customer Service Agents:
- Handle only one issue at a time.
- Can search issues by ID or customer email.
- Can resolve issues and receive new ones.
Admins:
- Can onboard agents with specific expertise (issue types).
- Can view the work history of agents.
System Requirements:
- Assign issues to free agents using an assignment strategy.
- Track and filter issues.
- Maintain resolution history.
Implementation requirements: createIssue(transactionId, issueType, subject, description, email) addAgent(agentEmail, agentName ,List) assignIssue(issueId) // -> Issue can be assigned to the agents based on different strategies. For now, assign to any one of the free agents. getIssues(filter) // -> issues against the provided filter, e.g.: getIssue({"email": "testUser2@test.com"}); updateIssue(issueId, status, resolution) resolveIssue(issueId, resolution) viewAgentsWorkHistory() // -> a list of issue which agents worked on
Interview Questions (1)
Design a complaint resolution system to manage unsuccessful transactions. Key features include:
Customers can log issues for failed or pending transactions by providing details like issue type, subject, description, and email.
Customer Service Agents:
- Handle only one issue at a time.
- Can search issues by ID or customer email.
- Can resolve issues and receive new ones.
Admins:
- Can onboard agents with specific expertise (issue types).
- Can view the work history of agents.
System Requirements:
- Assign issues to free agents using an assignment strategy.
- Track and filter issues.
- Maintain resolution history.
Implementation requirements: createIssue(transactionId, issueType, subject, description, email) addAgent(agentEmail, agentName ,List) assignIssue(issueId) // -> Issue can be assigned to the agents based on different strategies. For now, assign to any one of the free agents. getIssues(filter) // -> issues against the provided filter, e.g.: getIssue({"email": "testUser2@test.com"}); updateIssue(issueId, status, resolution) resolveIssue(issueId, resolution) viewAgentsWorkHistory() // -> a list of issue which agents worked on