PhonePe | SDE2 | Bangalore | ~5.5YOE
Anonymous User
2378

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:
  1. Create new tasks with a description and deadline.
  2. View a list of tasks assigned to the logged-in user.
  3. Update tasks, including changing the description, deadline and status.
  4. Delete tasks.
  5. 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

Comments (4)