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 distractions.| ### 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.|