I’ve been seeing a few posts about people burning out on doing problems lately. As someone that just recently finished their own Leetcode grind I wanted to contribute some resources as well as insights gleaned from my experience. Good news first, there is a light at the end of the tunnel and it’s definitely possible to receive an offer from a FANG company if you’re able to solve easy to medium problems! I don’t consider myself particularly intelligent so given adequate preparation there’s no reason why anyone wouldn’t be able to do it. Additionally the number of posts on how frustrated or burned out people get working on these problems should give you an indicator that they are not easy. You shouldn’t berate yourself for thinking it’s hard, it is. Some logistics before getting into tips, I don’t have a background in computer science and I quit my job to focus on prepping full time. It took about 2 and half months to complete 330 questions. Keep in mind these tips are more for people starting at zero. They are probably less applicable if you are a Leetcode expert, interview veteran or already have an existing in-depth understanding of computer science.
Starting from the bottom
If you have a company in mind that you want to apply to it’s tempting to just go to the companies section for example Google or Facebook and start with those problems. The truth is that many of those problems are on the more difficult side of the spectrum and it is particularly hard to understand a complex backtracking problem if you don’t comprehend the basics of recursion. Leetcode has great sections on specific computer science topics like recursion, binary trees and heaps. Develop your knowledge on a given topic and complete a few problems associated with the topic before moving on.
Train how you fight
Taking a line from the marines here but the point still stands. Once you feel comfortable enough going through questions on your own try to simulate the interview environment as closely as possible. This means timing yourself and working out problems on an actual whiteboard while explaining each step of your problem solving process. It also means you should recognize your weaknesses and prepare the best way to compensate for them. If you find it difficult to do problems in the morning due to lack of sleep or you’re just not a morning person you should schedule some practice session in the morning to acclimate to the time. In all likelihood some of your interviews will be scheduled for the morning.
Don’t go it alone
As discussed the preparation process is difficult. However in all likelihood there are people in your city or community that are going through the very same process that you are. I have found it extremely helpful to set mock interviews in person or bounce ideas off those people. It will not only help your whiteboarding and communication skills but it will make you feel a little more sane and less isolated from doing problems by yourself. You can find these people on Blind, Leetcode or Pramp.
Not a numbers game or memorization game
I have seen many people have a specific number of problems they want to complete before attempting interviews but the number in and of itself isn’t too important. Equally true is the fact that you shouldn’t focus on memorizing the exact solution to problems. It’s much more important to understand the patterns and different strategies on how to solve a specific problem rather then rely on memorization. Most of the problems I saw were not on Leetcode but I had seen the concepts before. There usually are multiple ways to solve a given a problem, once you solve it go back and understand other solutions even if you already have the optimal solution, it may help you solve other ones down the line. This will be extremely helpful when interviewers ask follow up questions on a problem or ask for an alternative solution.
Pull the trigger
In all honesty you’ll never feel 100% ready to go in for the interview. It’s important to set a hard goal or deadline for yourself on when you will apply and start interviewing or you risk eternal interview prep. Once that’s completed you have to trust yourself and the fact that you’ve done all you could do to prepare, it’s time to put to work all that you’ve learned and execute. Whether or not you get the offer you should know that you’ve become a better engineer in the process and that there are opportunities out there for you.
I’ve included a comprehensive list of resources that I used in my preparation below, good luck everyone!
Courses
https://www.educative.io/courses/grokking-the-system-design-interview
https://www.educative.io/courses/grokking-dynamic-programming-patterns-for-coding-interviews
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/
Youtube Channels
https://www.youtube.com/channel/UCmJz2DV1a3yfgrR7GqRtUUA/playlists
https://www.youtube.com/user/tusharroy2525/playlists
https://www.youtube.com/user/mycodeschool/playlists
https://www.youtube.com/channel/UCn1XnDWhsLS5URXTi5wtFTA/playlists
https://www.youtube.com/channel/UCxX9wt5FWQUAAz4UrysqK9A/playlists
Books
https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/
https://www.amazon.com/Computer-Science-Distilled-Computational-Problems/dp/0997316020
Mock Interview
https://www.pramp.com
https://triplebyte.com
Blogs
https://medium.com/outco
https://medium.com/@liyin2015
https://medium.com/@sourabreddy
https://github.com/donnemartin/system-design-primer
https://www.geeksforgeeks.org/
https://github.com/sindresorhus/awesome
https://github.com/liyin2015/Algorithms-and-Coding-Interviews