Context Gathering |
Candidate refuses to clarify the question or their thought process, and jumps right into coding |
Candidate fails to fully clarify the question or their thought process, leading to extensive modifications needing to be made throughout the interview |
Candidate is able to ask some questions to clarify the prompt, but requires hand holding from the Interviewer to fully grasp the right approach |
Candidate is able to clarify the question well, but needs to be prompted to discuss their thought process with the Interviewer before starting |
Candidate is able to proactively collaborate with the Interviewer to understand the problem and walk through their thought process before starting on their solution |
Code Complete |
Candidate is unable to make any progress on the question |
Candidate is able to complete most of the core portion of the question, but is unable to fully implement the solution |
Candidate is able to complete the core portions of the question, but fails to implement/get to all portions |
Candidate is able to complete all portions of the question, but fails to reach implementation of the optimal solution |
Candidate is able to complete all portions of the question in an optimal manner |
Code Style |
Candidate opts to keep everything in a single function, with little acknowledgement given to readability or maintainability of how they code |
Candidate breaks up their code or is able to descriptively name variables, but is inconsistent in doing so |
Candidate needs to be prompted to think about breaking up code into helper functions, and relies on some vague naming and organizational conventions that require time to explain to the Interviewer |
Candidate is able to demonstrate foundational knowledge in clean code, opting for any of: descriptive variable naming, clean logic flows, helper functions, and doc comments |
Candidate proactively considers how the code might be integrated into a larger codebase, with descriptive variable naming, clean logic flows, helper functions, and doc comments |
Ambiguity |
Candidate refuses or fails to adapt their solution to new requirements |
Candidate needs some hand holding to fully understand the new requirements, and struggles to ideate on solutions without guidance from the Interviewer |
Candidate needs some hand holding to fully understand the new requirements, but can discuss through their solution for tackling them |
Candidate needs some hand holding to fully understand the new requirements, and can fully implement new extensions on their solution to accommodate |
Candidate is able to rapidly and collaboratively work with the Interviewer to design and implement new extensions on their solution for new requirements |
Testing |
Candidate is unable to, or refuses to identify test cases for their solution that align with the question |
Candidate is able to discuss test cases that match the question, with prompting from the Interviewer, but fails to consider edge cases (zero inputs, malformed inputs, etc) |
Candidate is able to talk about potential test cases and potentially implement them, with prompting from the Interviewer |
Candidate is able to retroactively identify base and edge cases to test their solution that match the question being asked |
Candidate is able to proactively identify base and edge test cases before diving into their solution, and continually tests their code throughout the interview |
Space |
Candidate is unable to discuss the space complexity of their solution |
Candidate vaguely understands their solution’s space complexity, and with hand holding can reason their way to an accurate evaluation, and potentially discuss optimizations |
Candidate has some grasp on their solution’s space complexity, and can discuss optimizations when prompted, but is unable to implement proposed optimizations |
Candidate is able to comprehensively speak to their solution’s space complexity, and optimize on it when prompted |
Candidate is able to outline the space complexity of their solution during the planning phase, in order to proactively optimize their plan before diving in |
Time |
Candidate is unable to discuss the time complexity of their solution |
Candidate vaguely understands their solution’s time complexity, and with hand holding can reason their way to an accurate evaluation, and potentially discuss optimizations |
Candidate has some grasp on their solution’s time complexity, and can discuss optimizations when prompted, but is unable to implement proposed optimizations |
Candidate is able to comprehensively speak to their solution’s time complexity, and optimize on it when prompted |
Candidate is able to outline the time complexity of their solution during the planning phase, in order to proactively optimize their plan before diving in |