Status: 4.5 yoe at mid-sized company
Position: SDE2 @ Amazon
Location: Los Angeles
Date: August 2020
Interview format:
- Phone Screen: Amazon OA
- On-site: 3 coding/behavioral, 1 system design
Not revealing any questions due to NDA, but my prep was as follows:
- 400 Solved Leetcode questions over 4 months, ~20 unsolved
- System Design Primer and G r o k k i n g
- ~50 Mock interviews on the two popular mock interview websites
Do I think I over-prepared?
- Yes. But that is because I am stuck in the Los Angeles area. And my choices are limited. So I prefer to over-prepare. I had the freedom of time, though.
Technical Interview Advice:
- When practicing on this site.... Check. Your. Code. Before. Running. It. Most interviewers will not make you compile code. In a real interview you are thinking of a test case and running it manually. Practice this BEFORE interviewing. If you are practicing on leetcode, consider every code RUN/SUBMIT to be the very last step. Just to validate your work. CARE about your successful submit percentage. I tried keeping mine consistently above 65%. Forcing myself to really think of every edge case prior to submitting.
- Practice talking while coding. I have interviewed (and mock interviewed) a lot of people - I get bored instantly when people don't talk. Interviewers don't like to be bored.
- Get comfortable with hard level questions - they can show up. Until you get there, you are basically gambling.
- Technical interviewing is a game of High luck and High Skill: The more you practice, the less the luck matters. But luck is always a factor.
- Algorithm questions should be your life. Break from work? Do a coding question. Going out with friends? Do a coding question instead. Just finished a coding question? Do another one. Tired? Headache? Do a coding question (because you might be tired and have a headache during your interview).
Other thoughts:
- If you are interviewing at a mid-size company, leetcode matters a lot less (or might not even matter), I was asked everything from SQL questions to questions about Java frameworks. Ask the recruiters for details.
- For big N interviews, its almost entirely leetcode/system design + behavioral.
- After the inevitable rejects. Politely ask for feedback from recruiters. You'd be surprised how often they give it.
- Get used to failing interviews - it helps with the stress.
- Speaking of stress - practice stress relief/control (breathing excersizes, etc...).
- An interview is like a date, some interviewers you will click with, others you wont, and some are just total jerks. Something you prepared for months might end up going down the drain just because you end up with the wrong interviewer. For example one of my FB interviewers was extremely rude, and cut me off while talking - telling me I do not need to talk while coding. 5 minutes pass and he complained he could not follow my code. I was hearing noises in the background, it sounded like he was playing Candy Crush. It was my first interview on the on-site, and I knew I was toast at that point so it just went downhill from there. Understand that this shit happens. Set your expectations low up until you get an offer - and try your best.
- Smile and thank your interviewers. This is something I learned late, but I honestly felt like the whole process became less stressful and more fun that way. An interviewer that likes you wants you to pass, and is more likely to remember the good parts of the interview when discussing your performance. Don't be a emotionless robot.
I might add behavioral later if anyone is interested - I'm gonna go get a drink now.
Good luck.