Interview Cheatsheet
==
This is a straight-to-the-point distilled list of technical interview Do's and Don'ts. Some of these may apply to only phone screens on whiteboard interviews but most will apply to both. I revise this list before each of my interviews to remind myself of them and eventually internalized all of them to the point I do not have to rely on it anymore.
For a detailed walkthrough of interview preparation, refer to the ["Preparing for a Coding Interview" ](./ ) section.
### 1. Before Interview
|| Things |
|-|-|
|✅|Prepare pen, paper and earphones/headphones.|
|✅|Find a quiet environment with good Internet connection.|
|✅|Ensure webcam and audio are working. There were times I had to restart Chrome to get Hangouts to work again.|
|✅|Stay calm and composed.|
|✅|Familiarize yourself with the coding environment (CoderPad/CodePen). Set up the coding shortcuts, turn on autocompletion, tab spacing, etc.|
|✅|Request for the option to interview over Hangouts/Skype instead of a phone call; it is easier to send links or text across.|
|✅|Dress comfortably. Usually you do not need to wear smart clothes, casual should be fine. T-shirts and jeans are acceptable at most places.|
|⚠️|Turn off the webcam if possible. Most remote interviews will not require video chat and leaving it on only serves as a distraction.|
### 2. Introduction
|| Things |
|-|-|
|✅|Introduce yourself in a few sentences under a minute or two.|
|✅|Mention interesting points that are relevant to the role you are applying for.|
|✅|Sound enthusiastic! Speak with a smile and you will naturally sound more engaging.|
|❌|Spend too long introducing yourself. The more time you spend talk the less time you have to code.|
### 3. Upon Getting the Question
|| Things |
|-|-|
|✅|Repeat the question back at the interviewer.|
|✅|Clarify input format and range. Ask whether input can be assumed to be well-formed and non-null.|
|✅|Work through a small example to ensure you understood the question.|
|✅|Explain a high level approach even if it is a brute force one.|
|✅|Improve upon the approach and optimize. Reduce duplicated work and cache repeated computations.|
|✅|Think carefully, then state and explain the time and space complexity of your approaches.|
|✅|If stuck, think about related problems you have seen before and how they were solved. Check out the [tips ](../algorithms ) in this section.|
|❌|Ignore information given to you. Every piece is important.|
|❌|Jump into coding straightaway.|
|❌|Start coding without interviewer's green light.|
|❌|Appear too unsure about your approach or analysis.|
### 4. During Coding
|| Things |
|-|-|
|✅|Explain what you are coding/typing to the interviewer, what you are trying to achieve.|
|✅|Practice good coding style. Clear variable names, consistent operator spacing, proper indentation, etc.|
|✅|Type/write at a reasonable speed.|
|✅|Write in a modular fashion. Extract out chunks of repeated code into functions.|
|✅|Use the hints given by the interviewer.|
|✅|Demonstrate mastery of your chosen programming language.|
|✅|Demonstrate technical knowledge in data structures and algorithms.|
|✅|Practice whiteboard space-management skills.|
|⚠️|Reasonable defensive coding. Check for nulls, empty collections, etc. Can omit if input validity has been clarified with the interviewer.|
|❌|Remain quiet the whole time.|
|❌|Spend too much time writing comments.|
|❌|Use extremely verbose variable names.|
|❌|Copy and paste code without checking.|
|❌|Interrupt your interviewer when they are talking. Usually if they speak, they are trying to give you hints or steer you in the right direction.|
|❌|Write too big (takes up too much space) or too small (illegible) if on a whiteboard.|
### 5. After Coding
|| Things |
|-|-|
|✅|Scan through your code for mistakes as if it was your first time seeing code written by someone else.|
|✅|Check for off-by-one errors.|
|✅|Come up with more test cases. Try extreme test cases.|
|✅|Step through your code with those test cases.|
|✅|Look out for places where you can refactor.|
|✅|Reiterate the time and space complexity of your code.|
|✅|Explain trade-offs and how the code/approach can be improved if given more time.|
|❌|Immediately announce that you are done coding.|
|❌|Argue with the interviewer.|
### 6. Wrap Up
|| Things |
|-|-|
|✅|Ask questions. More importantly, ask good and engaging questions that are tailored to the company! Pick some questions from [this list ](../non-technical/questions-to-ask.md ).|
|✅|Thank the interviewer.|
|❌|End the interview without asking any questions.|
|❌|Ask about your interview performance. It can get awkward.|