Skip to content

Instantly share code, notes, and snippets.

@alexpaul
Last active September 2, 2024 01:21
Show Gist options
  • Save alexpaul/f415ab7a1872170d525cff0aea854bb5 to your computer and use it in GitHub Desktop.
Save alexpaul/f415ab7a1872170d525cff0aea854bb5 to your computer and use it in GitHub Desktop.
Rubric. Mock Interview. Technical Interview.

DSA Whiteboarding Rubric

 
// Summary of steps
/*
0. understand the prompt (question)
1. clarifying questions (ask at least 2 clarification questions)
2. pseudo code 
3. test your pseudo code 
4. ask the interviewer if you can start coding after testing your pseudocode
5. start coding and always communicate your process (less silence more engagement) 
6. after you are done with your solution test the function with a small test case 
7. know the runtime and space complexity
8. if time permits and you used a brute force solution, talk about ways your solution could be optimized
*/
  • Understanding the Prompt
  • Designing a Solution
  • Implementing a Solution
  • Presentation

For a fellow to pass the interview, they must get a score of "proficient" or higher on 14 of the 15 subcategories. Fellows who are not yet proficient will focus on their growth areas, and continue to interview.

Understanding the Prompt

Subcategory Exceptional Proficient Developing Not Demonstrated
a. Asks clarifying questions Resolves all misunderstandings about question/prompt Resolves all major conceptual misunderstandings; some minor misunderstandings may remain (e.g. formatting of output) Resolves some misunderstandings, but 1+ major misunderstandings remain Does not ask clarifying questions
b. Verifies assumptions Discusses all assumptions Discusses most assumptions; only 1 or 2 not discussed Discusses at least one assumption Does not verify any assumptions
c. Demonstrates understanding w/ example inputs & outputs (and/or a diagram) Shows an exhaustive list of example inputs/outputs, including all major and edge cases Shows multiple example inputs/outputs; covers major cases, but may leave out edge cases Shows example input/output for some, but not all major cases, and no edge cases Does not show any example inputs/outputs

Designing a Solution

Subcategory Exceptional Proficient Developing Not Demonstrated
a. Identifies multiple high-level approaches (e.g. brute force vs. more efficient solutions) Describes multiple complete, valid approaches and selects the most efficient approach Describes at least one complete, valid approach Attempts to describe one or more approaches, but they are incomplete or invalid No high-level approaches discussed prior to writing code
b. Determines time & space complexity of each high-level approach Uses both time and space complexity for each approach to guide selection Uses at least the time complexity of each approach to guide selection Describes at least the time complexity of their selected approach (not for other possible approaches) Unable to determine the time or space complexity of any approach to algorithm
c. Selects appropriate data structure(s) and/or programming approach (e.g. iterative vs. recursive) Selects the ideal data structure and/or approach, and compares/contrasts with alternatives Selects an appropriate data structure and/or approach and explains why it is appropriate Applies a relevant, if not ideal, data structure and/or programming approach Unable to select an appropriate data structure or programming approach to solve the problem
d. Plans out all steps of algorithm (in written words or pseudocode) before coding Lays out all logical steps of the algorithm in granular detail in writing before coding Lays out most of the steps (leaving out only 1-2) in granular detail of the algorithm in writing Lays out a couple high-level steps of what the algorithm will do, not in very specific detail, and/or only verbally Jumps straight into coding the problem without planning out the steps of the algorithm

Implementing a Solution

Subcategory Exceptional Proficient Developing Not Demonstrated
a. Writes valid, syntactically correct code for the full algorithm (unless the interviewer cuts them off early) Code is correct & complete for all steps of the algorithm Code contains only minor typos (e.g. missing semicolon) and is complete for all steps of the algorithm Code contains major syntax errors (e.g. invalid loop, missing return statement, etc.) and/or is unable to code all steps of the algorithm Cannot successfully write valid code for any steps of the algorithm
b. Uses proper indentation to make code readable Consistent use of indentation with no exceptions Consistent of indentation, with 1 or 2 exceptions Occasional use of indentation No use of indentation
c. Selects descriptive names for variables/functions that follow standard casing conventions Names are obvious & intuitive and follow standard casing conventions Only a few non-descriptive names used; standard casing conventions followed Less than half of names are descriptive and casing conventions are not consistently followed Names are unrelated to the purpose of the variable or function; casing conventions not followed
d. Manually tests code by verifying output for sample inputs Tests both common cases and all corner cases Tests common cases and at least one corner case Tests at least one common case; no corner cases Does not test code

Presentation

Subcategory Exceptional Proficient Developing Not Demonstrated
a. Verbalizes thought process throughout Consistently thinks out loud through entire interview Consistently thinks out loud, with only a few minor awkward pauses Occasionally thinks out loud, but spends significant amounts of time silent Little to no verbalization of thought process
b. Uses sufficient vocal volume Volume is sufficiently loud and clear throughout the entire interview to be heard and understood Volume is sufficiently loud and clear through at least 80% of interview to be heard and understood Volume is sufficiently loud and clear through less than half of the interview to be heard and understood Volume is too low or unclear for the interviewer to hear and understand
c. Maintains positive tone and body language throughout Maintains a confident tone, faces interviewer(s), makes good eye contact throughout interview Maintains a confident tone, faces interviewer(s), makes good eye contact for at least 80% of the interview Maintains a confident tone, faces interviewer(s), makes good eye contact for less than half of the interview Is self critical (e.g. “Oh, that’s way beyond me”) and/or just faces the whiteboard
d. Code is legible and utilizes all available whiteboard space* All code is written legibly, with little need to erase any valid code to make space Code is written legibly, only needing to erase a small amount of valid code to make space Code is only partly legible, and significant portions of valid code need to be erased to make space Whiteboarding is very unorganized forcing things to be jumbled or squished
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment