Interview Checklist
The following interview checklist is meant to mirror the one found in [6] but recast in a more memorable way (i.e., using my own name, DANIEL). But all that really matters is that each step is remembered.
| Step | Meaning | Description |
|---|---|---|
| D | Discern | Discern what the actual problem is along with its constraints |
| Read the statement (twice) | ||
| Work through examples out loud | ||
| Ask clarifying questions (e.g., edge cases, input/output format, scale constraints, etc.) | ||
| A | Architect | Architect an algorithm(s) to solve the problem you've spent time discerning |
| Minimally sketch naive solution | ||
| Identify upper and lower bounds | ||
| Look for triggers | ||
| Employ boosters | ||
| N | Narrate | Narrate the solution you've architected by various illustrative means |
| Examples | ||
| Indented English | ||
| Name and justify | ||
| I | Inquire | Inquire whether or not you should code your narrated algorithm X, with time Y and space Z, or keep thinking |
I would like to use <X algorithm> with <Y time> and <Z space> to solve the problem. Should I code this now, or should I keep thinking? | ||
| E | Execute | Execute on all of the dialogue so far by actually working out a solution in code |
| Main logic | ||
| Helper functions | ||
| Stop if you get lost | ||
| L | Lint | Lint your solution to verify its accuracy and efficiency |
| Top-to-bottom pass | ||
| Tricky expressions | ||
| Run through with tiny input | ||
| Check edge cases | ||
| Verify analysis |