Background: Software
Experience: 2-5 years
LeetCode stats
Questions solved: 500+ (Easy/Medium/Hard ~ 150+/280+/70+)
Contest rating: 1900-2100
Mock interview rating: 8.5-9 (did ~100 on LeetCode)
Premium: Yes, very helpful in my opinion
I may sound like a broken record, but I want to truly thank LeetCode community being a gold mine of tips and information! There's no way I would have received any of these offers without this amazing platform. I didn't have any prior experience interviewing with FAANG-tier companies and was very intimidated going in.
Earlier in the year I decided to try and capitalize on being stuck at home and get in interviewing shape. I started by taking an online interview prep course (Udemy) to refresh my data structures & algo basics. Then I read through most CTCI chapters (without solving the actual questions). I was a beginner in terms of LeetCode-style interviewing, so I wanted to make sure my foundation was good before jumping into practicing questions.
After going over my basics I jumped into LeetCode. This was by far my main method of preparation. I started with Easy questions, and after a while moved up to Medium and then Medium + Hard. The monthly challenges made a huge difference for me as they gave me motivation to try and solve at least one problem per day. In parallel I went through the "Top Interview Questions" cards and did all those questions (Easy -> Medium -> Hard).
Once I finished those cards I decided to put my money where my mouth is and buy a premium subscription - this is where the real fun began! I dug into the company-specific cards and did >90% of those questions. I also completed a healthy amount of LeetCode mock interviews which I found greatly helped me become faster at coming up with solutions as well as coding them up. Another thing that helped me was the weekly contest - I was forced to solve questions I had never seen before under a time constraint. Perfect for interview prep if you ask me! I recommend aiming to solve 3-4 questions.
Aside from LC I also used another free platform for mock interviews (PR_MP). I got great feedback from these sessions and could tell that I was improving as an interviewee. Although the LC mocks were good for building up speed, they didn't properly emulate the actual interview experience - it's totally different when you're actually speaking with someone!
I won't discuss system design in much depth. I read through Gr__k_ng and watched a bunch of videos. It's tough to prepare for design questions as the interviewer can usually tell when they're speaking with someone who read up on these topics vs. someone who has actual hands-on experience building those systems. I think this is an area where actual experience is immensely valuable. I personally didn't have much experience building distributed systems, so I believe this was the weakest part of my interviews.
The entire prep process took me about 5-6 months while working full time. I prepared during evenings and weekends. To be honest I never felt like I was ready to jump into interviewing, but if I didn't give myself a hard deadline this could have went on forever.
Next I'll talk about my high-level experience with each of the companies. I won't go into the question contents at all due to NDAs, so I apoligize for the ambiguity.
My virtual onsites were scheduled within <2 weeks of each other as I wanted to have competing offers for negotiation purposes. Spoiler: this worked beautifully! If possible, I highly recommend scheduling your interviews close to one another. Not only can it help during negotiation if you receive multiple offers, but the interviews also act as practice and make you more comfortable during the upcoming sessions. As for negotiation, I was able to bring up my offer compensation by around 20% just by having competing offers.
I was contacted by a recruiter and scheduled an online assessment after the initial recruiter screening.
I won't go as far as saying Amazon was the easiest of the three, but I was most confident that I did well coming out of that interview. It felt more straightforward than the others. Once you're comfortable solving Medium LC questions you should be well prepared for this interview. The system design question was straight out of Gr__k_ng.
As others have said, make sure to know your Leadership Principles well - try to prepare at least 2 unique examples per LP if possible. I was asked about past experience during each round, and the questions were focused around at least one LP. I'm not sure if I got bonus points for doing this but I also mentioned some of the LPs when answering the questions.
Overall it was a surprisingly positive experience! I went in expecting to talk to a bunch of jerks, but everyone I spoke with was nice and respectful.
I was referred for a few positions and was contacted by a recruiter.
Nothing special to mention here - LC questions were around Easy/Medium level. The OOD questions were also fairly straightforward, and having done a good amount of design-style LC questions (ex. LRU cache) helped quite a bit. Overall also a positive experience, interviewers were all very nice.
I was referred for a few positions and was contacted by a recruiter. I skipped the phone screen due to the referral.
This felt by far like the toughest interview round. The questions seem like they have no end - they only get tougher and tougher to see how far you can go. They started around Easy/Medium and eventually worked up to Hard. I had seen maybe parts of some of the questions on LC, but it wasn't even close to having solved the entire question and just breezing through the interviews. This interview will truly test your fundamentals and how well you can actually solve these problems.
I felt like I did fairly well in at least three of the rounds, but wasn't confident at all for the other two. I came out of this interview thinking there was no way I'd get an offer. I believe the difference-maker here was my communication and overall positivity - I tried to make the experience as enjoyable as possible for the interviewers.
Again, this was a positive experience as everyone I spoke with had a great attitude and was respectful. What wasn't as positive was the beatdown I thought I took, but I guess everything worked out in the end!
In no particular order:
Stay consistent, prepare well, and results will come. Best of luck to everyone!