Studying for programming interviews can quickly turn into a full-time job. When I was studying for my interview at Google, I would wake up 3 hours before work every day just to squeeze in practice interview questions.
Having the correct tools to set you up for success is imperative to passing your programming job interviews. I have failed a few programming interviews in my day, and I've learned what works and what doesn't. So I put together a guide of the best coding interview books and resources. I categorized them as well so people can tailor the resources to their studying needs.
The first time I got invited to interview with Google was in 2015 and I didn't make it through the initial phone screening. I had little experience as a software engineer. (I had never even heard of the term dynamic programming before). I did not major in computer science and was really starting from ground zero. I studied for a whole year until I interviewed with Google again in 2016. I prioritized Cracking the Coding Interview and doing tons of Leetcode problems. These Leetcode practice problems are what I thought tech companies were going to ask during the FAANG interviews.
After failing my Google technical interview for the second time, I reevaluated the way I was approaching my coding interview. The typical advice just wasn't working for my whiteboarding interview questions.
I created a programming interview framework and changed my coding interview preparation based on what I had experienced first hand. A year later, I did another round of programming interviews with Facebook & Google. I received offers from both companies. I ended up choosing Facebook where I conducted coding interviews 3-4 times a week for 4 years.
I gathered a few of my top coding interview resources to help anyone who is currently studying for their technical interviews. My goal is to steer people in the right direction and help at least one person avoid taking the wrong approach to studying as I did in the beginning.
Best Book: Algorithm Design Manual
Starting with the best book for coding interviews - Algorithm Design Manual. I have a whole post dedicated to this book and how to use it. Be sure to check out so you know which sections to skip and which to go in-depth to ensure you fully understand and are ready to tackle the practice coding interview questions.
Since coding interviews are so much more than just solving a coding problem, we recommend this book to help you dive deep into the fundamentals. For each data structure you will the math behind it, learn its time complexity & space complexity, and most importantly, learn when it's ok to break and bend the rules.
This thick algorithm book is going to help you with the discussions during a tech interview and should be a part of every engineers coding interview prep that is targeting Top Tier tech companies. It is overall one of the best coding interview books and I strongly suggest working through it.
How to Use
When starting the Algorithm Design Manual, read and do the odd problems for the first half of the book. It's thorough and will teach you what you need to know to work through interview questions. The problems will increase in difficulty the more you work through the book, but keep in mind if this was easy everyone would be doing it.
Each time you get through another fundamental, you are one step closer to acing your coding interview. Data structures and algorithms can be oversimplified by most algorithm books, but Steven Skienna cuts no corners and will give you a strong foundation if you work through it.
Coding Interview Books I wouldn't recommend: Programming Interviews Exposed, Programming Pearls, Cracking the coding interview (see why here)
Best for Quick Coding Problems: Leetcode
Leetcode is an obvious resource when studying for programming interviews. There are over 2,300 interview questions to help you practice for your next coding interview. This includes detailed guides on dynamic programming, operating systems, advanced data structures (linked lists to heaps), and problems related to specific tech companies. This is one of the most popular coding interview resources and for good reason, there is a variety of topics and questions to choose from.
You can also use your preferred programming language to ensure you are getting the most hands-on experience.
How to Use
You should be doing Leetcode while preparing for programming job interviews but it is important to keep in mind that this should not be your only method of preparation. Doing frequent coding problems is great, but the actual technical interviews will be very abstract and lack a ton of detail.
It is also very easy when you get stuck doing Leetcode problems to give up, look at the solution, go "ah yes" and then move on. This is an easy habit to form that needs to be avoided the minute you start doing it. Make sure you really understand what went wrong and why. Think about it, take a second to write it down in your own words.
There will also be more soft skills required as it will be important to have a discussion around problem-solving instead of just a quick solution. More info on soft skills needed for whiteboard interview questions here.
It is not uncommon for people to brag about the amount of Leetcode problems they have done. We've seen tons of people join our discord server and act like solving tons of Leetcode is a flex. The sweet spot is 150-350 LC problems, any more than that and you probably aren't retaining the info you are studying. Think quality over quantity.
Best for Beginners: Hackerrank
Hackerrank is another good resource when it comes to preparing for your coding interviews, especially for beginners. This has a wide range of interview questions to practice all sorted by category and allows beginners to get down some basics before going straight into coding interview questions. The problems also build off of each other and introduce new concepts one at a time. It's a great resource for free questions on data structures, algorithms problems, databases, and more.
You can also get your skills certified and compete in computer science contests. This can really be tailored to your personal learning style and how you want to solve problems. These certifications don't really mean too much, but they are fun to have!
Hackerrank is especially helpful because it lays out a plan for you depending on how many months out you are from your technical interview. It can help you feel like you are staying on track with your goals.
How to Use
Take the time to work through the course as you prepare for your tech interviews. Keep in mind this style of problem-solving resource should be paired with the Algorithm Design Manual to ensure you are fully prepared for your coding interview. It's hard to cut corners when learning something complex like dynamic programming. Remember grinding coding problems is not a comprehensive study plan.
Best for Community: Hackpack
Hackpack is the most hyperactive community of engineers studying for programming interviews. If you are reading this article then you already know how isolating and frustrating the coding interview process is. This community was created as a place for engineers to vent, stay on track, and fight burnout. You submit daily check-ins on what you are studying, do mock interviews, and work through tough problems together.
Hackpack is a way to hold yourself accountable and make sure you are staying on the right path. It is a stressful period when all you are doing is studying interview questions for your coding interview and having a community to fall back on can ensure you stay on track.
How to Use
The more interactive you are with the community, the better you can get the full value out of it. Sign up for mock interviews, ask for a resume review, get help handling recruiters, and post your daily check-ins.
Keep up with the community and get to know your fellow big tech colleagues. Having support from the group will help push you to stay motivated and consistent.
Best for Mock Interviews: Pramp
Once you feel confident in your mastery of algorithm design principles and have done enough coding problems, you will be ready to do a few mock interviews. Pramp is a great resource that automatically matches you with other engineers based on your availability, practice needs, and programming language preferences.
You will then have a live 1-on-1 video session that will take place on the website. You will go over programming questions, practice soft skills, and behavioral questions.
Although efficiently writing code is important, being able to build that rapport during the whiteboard interview is going to be what will make or break your interview.
It is important for the interviewer to feel like you will be able to get along. This is their future fellow coworker that they are looking for. This is one of the key elements of programming interviews and should not be overlooked. If you want to do an excellent job in the interview, mastering soft skills are really important.
Check out my big tech interview framework to read more about the discussion you should be having with your interviewer.
How to Use
Mock interviews are super important. I would suggest using any mock interview service as much as possible before the coding interview. It will be tough and you will fail during these interviews, it's rare for someone to pass the first 5-10. But, mocks are critically important when you are preparing programming job interviews before the actual main event. It's better to get the failed mock coding interviews out of the way during practice.
When you enter the real programming interview, you should feel confident and be able to walk in there with a positive attitude knowing you are going to crush it.
Keep in mind, mock interviews can be very vulnerable. Try and keep character and get through the psychological roadblocks that come with these interview questions. You want to make sure you are getting honest feedback during these mock coding interviews so that you can learn and do better on the next one.
I have a whole article on how to prepare properly for the mock programming interview. This includes advice for interviewers & interviewees.
Best for Visual Learners: AlgoExpert
Similar to Leetcode, AlgoExpert has a range of coding interview questions for you to practice. Just like with other resources, you are still practicing algorithms, space complexity, and data structures but with AlgoExpert, you are getting a detailed visual solution after each problem.
This is important for all the visual learners out there who do not want to read lines and lines of explanation with multiple solutions. The videos attached are detailed solutions to each problem. There are also crash courses, certificates available, and solutions in all the different coding languages.
How to Use
Just like we mentioned when discussing Leetcode, it is important here to remember that just doing AlgoExpert questions is not going to get you the job as a software engineer at Google. it is important to do practice problems but these concepts will need to be applied to any random problem you might get thrown at you during the real interview. You have to be ready to get asked questions you've never seen before. Being able to think through a problem and apply a concept that you have learned to a brand new problem is going to really make you stand out.
Remember, this is not a memorization exam but a comprehensive coding interview.
Best for Abstract Problems: Grokking the Coding Interview
Grokking the Coding Interview is a course that gives you the ability to map a new problem to an already known problem. Throughout the course, you will learn 16 different patterns for coding questions, based on the similarities in the techniques needed to solve them. The idea behind this concept is that once you are familiar with one of the patterns, you'll be able to solve dozens of problems with it. This is helpful because, during the real technical interview, you will most definitely be getting a question you have never seen before. Being able to apply your knowledge and work through these abstract problems with little to no detail is what will get you through the coding interview. This resource is better than other books like programming interviews exposed and programming pearls because it gets right to the point. Grokking is a great resource for people just starting out.
How to Use
Go through this like a regular course, reading through each section and doing practice problems. Be sure to take your time and make sure you fully understand each section. There will be sections that take more time (system design or data structures and algorithms) but these are the most important. The same type of principles that you will be applying throughout this course will be the ones you are applying during the actual programming interview.
There is not one resource that is going to help you pass your technical interview. Having a comprehensive understanding here is key, and narrowing down the tools you use to learn these essential topics is what is going to get you to pass.