Leetcode Prep - FAANG

Hello, I recently completed interviews at two FAANG companies and received an offer from one. I found it helpful to read through different preparation journeys as I prepared, so I figured I'd add my experience to the stockpile of stories/guides as well.

I am a recent master comp science graduate from a global T30 school, but since it's not in the USA, most of the USA wouldn't know it. Despite this, I could not get a single interview with any company. I had put in ~1k applications and received a total of 3 OAs. two of which I converted to interviews. For transparency, I had already completed 200 problems on leetcode (130 easy and rest medium) before I began preparing for the FAANG interviews which were mostly copied from the solutions. I think 200 sounds impressive but I could not answer any question independently yet at that stage. I solved easies maybe 50% of the time and could not solve mediums at all. To be fair I was good enough to pass 2 FAANG OAs, but that may have been luck because they contained mostly leetcode easier that even I was familiar with at that time.

From the day I received interview invite to interview date I had roughly 5 weeks of study time, in which I brought my problems solved up to 142 easy, 269 medium, 20 hard (431 total). With all that out of the way, let me explain my process through the resources I found most helpful!

Neetcode:

The first week I would pick 2 topics each day from neetcode all map and try to get through 6-8 problems in each topic. As many others have mentioned, neetcode is an amazing free source, and I noticed improvement through the week, but I continued to be frustrated by how similar problems needed to be in order for me to solve a medium. And while the point of neetcode (and especially the 150 map) it to expose you to many of the patterns, I found it incredibly difficult to see the connection from one problem to the next even when they are in the same group which doesn't build confidence. I think this helps point to the fact that no one resource is guaranteed to work for you personally. Even though I liked neetcode I simply wasn't improving at the pace I would expect for how many problems I was doing everyday. And just to clarify, I spent anywhere from 30 to an hour on each problem, and copied many problems into a notebook to review, so it's not as if I was rushing through it.

TakeUForward (Striver)

The next 3 weeks I switched over to TakeUForward (Striver) and I fell in love with that man. I was surprised that I haven't heard many people recommend him. His enthusiasm is a bit funny but it really helps you stay engaged. I found his roadmap to be very intuitive and I noticed a lot of progress in that time. He also utilizes other leetcode style sites for easier problems to help introduce you to a concept or algorithm. This makes it so much more obvious what minor aspects need to be adapted from the core concept/algorithm. After that I was able to complete many more mediums of all the topics independently or with minor hints from ChatGPT. You could probably make the argument that many people experience this with neetcode, and you'd probably be right, but I personally found striver to be much more intuitive.

Of all the resources, I truly think that striver alone could make you FAANG prepared by following his entire 400+ problem set.

Leetcode contests

I also did the leetcode contest(s) each week, and was able to do 6 in total before the interviews. It was nice to practice the pressure and randomness of problems/topics. I think it was worth it overall to do contests, but honestly many of the problems (bit/math) asked during those weeks seemed far less important to what I wanted more practice in. I did some bit and math problems but only the main ones from neetcode 150.

I reached a rating of 1729.

ChatGPT

I learned a lot by having ChatGPT explain the intuition behind hard-to-understand code and give visual examples. I would also have it rate my solutions. Even if you get to the optimal algorithm and code a correct answer, this may still not be enough for FAANG. I would copy my code, explain how long it took me, any hints I had (which I also used ChatGPT to give me hints the way an interviewer would), and input all that into ChatGPT to give me a rundown on my performance and how it would reflect in the real interview. This is super helpful to improve your codes style, and see if your pacing or need for hints is in an acceptable range. Its actual rating of (hire, lean hire, lean no hire) is kinda useless, but the rest of the review is worth reading.

Grokking

Grokking was a nice resource for me. It's super nice for getting an incredibly broken down list of patterns and problems to solve for them, but I generally think there are not enough problems in some patterns, and they tend to be too easy compared to the questions you would expect to receive in a FAANG interview in this day and age. Still worth it overall when introducing yourself to a pattern or for reviewing old patterns. I used this resource the least

Other comments

You must be comfortable explaining your code and thinking out loud. If you can get mock interviews or practice with friends, that would be ideal. I did 2 mock interviews, which helped me get feedback on how to structure my answer to the interview, things to mention, etc.

Handling interview pressure/nerves is important. This was my first tech interview, so while its true your nerves go down with more experience, that doesn't help you for the beginning. I didn't feel much pressure in the interviews, which I attribute to 2 things, which take with a grain of salt:

  1. place yourself in situations where you face pressure, and you will grow accustomed to it. This is the same advice as when people say you'll get better at coding interviews with more practice. There is no reason to limit your learning experience to coding interviews when this could be accomplished with anything.

I played sports, and I believe facing pressure situations there has helped me feel comfortable to perform in new scenarios.

  1. stop caring what people think about you. Realize that nobody cares about you, and accept that is actually a very beautiful thing. If you crash and burn so be it, stop caring about what they think of you and you'll find yourself perform better. I would recommend reading The Subtle Art of Not Giving a F*ck; lot of good messages in there. At the end of the day you perform your best when you are loose and relaxed. Laying your ego aside and not being afraid to fail will do wonders for this.

Lastly, I was only able to do this intensive study because I didn't have a job and could dedicate every single day of those 5 weeks to practicing. I would study from 10am-2am everyday with breaks for dinner and a workout 1-2x a week. Burn out happened about halfway through, so I took the evening off of studying and came back strong the next day and thereafter. You can be your own judge if you think this is healthy or not. If something is truly important though, you can make yourself do far more than you thought possible. Beat your mind into submission if you have to. I have my own little trick where I have minorish OCD that I refuse to treat because it's amazing for forcing me to continue studying even when I'm tired. Obviously, this doesn't apply to everyone so you need your own method of continuing the grind when energy is low. Also, I understand that this is not a healthy habit, but it can be useful to be capable of doing it in the short term.

That wraps up my prep guide, I hope it provides another perspective on leetcode interview preparation.