Experience: 5.5 yoe
Education: NIT
Past Experience: Product Based MNCs (Including one of MAANG)
Round 1: Machine Coding
Develop a Task Management System that allows users to manage their daily tasks. The system should enabled users to create, delete, update, view tasks, subtasks and stories within a project. Each task, subtask (tasks can have multiple subtasks) and a story(can have multiple tasks) can have a description, deadline, and assigned user.
Mandatory Functionality:
- Registration and login: Users can register and login to the system.
- Task Management:
- Create new tasks with a description and deadline.
- View a list of tasks assigned to the logged-in user.
- Update tasks, including changing the description, deadline and status.
- Delete tasks.
- Allow tasks, subtasks and stories to be moved across the project hierarchy, including their dependent items.
- Get the current workload of a user: No of tasks in different states like assigned, pending, etc.
Offline assignement at a designated time.
Time given: 3 Hours.
Followup discussion: 30-45 Mins :
Walkthrough of the code, improvements that can be done, code should be able to run the stated scenarios, questions around scaling, which design patterns were used.
Round 2: System design (HLD+LLD)
Discussion Board
Features
- Boards and Management
- Any User can create a board
- Users can subscribe to any number of boards and follow any number of users.
- User and create a discussion in a board that one is subscribed to.
- Admin can block any number of users and can revoke the same at any time.
- Block types:
- Temporary (VIEW, UPDATE, CREATE)
- Permanent (VIEW, UPDATE, CREATE)
- Activities on a discussion:
- Upvote, Downvote
- Comments (Can be nested comments and Upvotes/Downvotes per comment are also allowed)
- Need to show summary view of any post, say number of view, comments, upvotes, downvotes and so on.
- Feed for the user:
- Basis on the boards he/she subscribed to and user he/she follows:
- Sort by popularity (most activity in last X day)
- Sort by highest (highest activity of all time)
Spent most of the time in HLD discussion, couldnt time it properly and hence LLD aspects couldnt be covered a lot.
Major questions regarding scalability, How to handle Viral Posts, DB design, Which microservices will be created.
Verdict: Rejected