I was shared this google sheet and this was the question
What happened during the interview ?
I Wrote the code in intelli j , Java
15 minutes : We discussed question and my doubts
90 - 100 Min : i coded out the solution
last 15 - 30 min : discussed the solution
I submitted my solution to him on mail by sending the complete folder
Online Test Proctoring System
Problem Statement:
Allen Digital is developing an online test proctoring system to monitor students during remote examinations. As part of the development team, you need to implement the core monitoring and alert system.
Expectations and Guidelines:
● Time Allotted: 90 minutes
● Internet Usage: You may use the internet only for syntax references.
● Programming Language: You may use any language of your choice.
● External Libraries: Do not use any external libraries. All code should be written by you.
● Make sure that you have working and demonstrable code for all requirements.
● Use of proper abstraction, separation of concerns is required.
● Code should easily accommodate new requirements with minimal changes.
● Proper exception handling is required.
● Code should be modular, readable and unit-testable.
Important Notes:
● Do not use any database store, use in-memory data structure.
● Do not create any UI for the application.
● Do not build a Command line interface. Executing test cases or a simple Main function should be sufficient.
● Do not make any assumptions; please ask if clarification is needed.
Evaluation Metrics:
Your code will be evaluated based on:
● Functional Correctness
● Completeness
● Exception Handling
● Design Pattern Implementation
Platform Capabilities:
// Register Students
RegisterStudent("ST001", "Vikram Singh", "vikram@example.com") RegisterStudent("ST002", "Anjali Desai", "anjali@example.com")
// Create Tests
CreateTest("TEST001", "JEE Advanced Physics", 180, 1723116023) CreateTest("TEST002", "NEET Biology", 120, 1723126023)
// Register Students for Tests
EnrollStudentInTest("ST001", "TEST001")
EnrollStudentInTest("ST002", "TEST001")
EnrollStudentInTest("ST002", "TEST002")
// Start Tests
StartTest("ST001", "TEST001", 1723116023)
StartTest("ST002", "TEST001", 1723116023)
// Record Activities
RecordActivity("ST001", "TEST001", "TAB_SWITCH", 1723116100) RecordActivity("ST001", "TEST001", "FOCUS_LOSS", 1723116200, 3) // 3 seconds
RecordActivity("ST001", "TEST001", "FOCUS_LOSS", 1723116300, 10) // 10 seconds
RecordActivity("ST002", "TEST001", "MULTIPLE_FACES", 1723116400)
// Get Student Violations
GetViolations("ST001", "TEST001")
// Expected: 2 violations (1 LOW, 1 MEDIUM)
// Check Test Status
GetTestStatus("ST001", "TEST001")
// Expected: ACTIVE with warnings
GetTestStatus("ST002", "TEST001")
// Expected: PAUSED (due to HIGH severity violation)
// Generate Proctor Report
GenerateProctorReport("TEST001")
// Should list all violations by all students in the test