Joseph Pacheco is a software engineer who has conducted over 1,400 technical interviews for everything from back-end to mobile to low-level systems and beyond. He’s seen every quirk, hiccup, and one-of-a-kind strength you can think of and wants to share what he’s learned to help engineers grow.
Prep materials for technical interviews are in truly abundant supply. There's articles, videos, books, comprehensive courses, practice websites — some free, some paid. As such, it can be really hard to know what to focus on and when.
Many candidates pick one or two resources and hunker down until the interview — but this is a mistake. Different resource types and formats accommodate different learning styles and technical backgrounds. It's better to take a portfolio approach to identify the specific collection of resources that will maximize your success personally. To do this, you need to understand each type, and the kinds of value they offer.
(Note: Triplebyte has thrown together a “Way-Too-Long Interview Prep Guide” that incorporates most of the kinds of study materials described below. It’s totally worth checking out.)
Algorithms are a central focus of most software engineering interviews, and tend to at least make an appearance on nearly all the rest. It's therefore no surprise that you see hard-core academic texts get mentioned all over the internet. Books like Stephen Skiena’s Algorithm Design Manual, for example, are lengthy, authoritative bibles that cover the various topics in truly rich detail. Depending on your background, they may be really hard to digest if you're learning the content for the first time (particularly if you haven't yet grasped math speak). However, they are quite useful for checking whether you've covered a particular subject exhaustively, as they tend to cover every peripheral topic and implication that other resources might leave out. Use them as supplements to more accessible materials. It may be helpful to anchor your learning in easier-to-understand explanations, while referring back to see how the same concepts are explained in more academic language. Eventually, math speak will start to become second nature, which will help as some content in interviews are presented in this same style. And if you’ve always been good at algorithms and just need to brush up or deepen your knowledge, this type of text may be all you need to sharpen your CS fundamentals.
Comprehensive Guide Books
On the other hand, Cracking the Coding Interview by Gayle Laakmann McDowell is nearly a thousand pages of comprehensive technical interview prep. She covers it all: the interview process, what to expect at specific companies like Apple and Google, special situations like experienced candidates and getting hired via acquisition, soft skills, and even what to do after receiving the offer. This is in addition to covering all the important algorithm topics with 150+ example problems and solutions like the kinds you may find on interviews. Her explanations are much easier to grasp than those you’ll see in academic materials, and she even arranges the content in an unconventional way in order to make it clearer. For example, she introduces trees before graphs, even though a tree is a type of graph. Trees are a little less abstract and often a little simpler than graphs in general. That makes them easier to reason about which, in turn, provides a more stable foundation for learning the more abstract concepts later. This is an excellent resource that's very highly regarded among applicants. And since it's a book, it forces you to practice in a way that gets you used to white-boarding more than an interactive editor might. It's absolutely worth getting a copy, if only for its thoroughness.
Videos & Animations
Even though books like Cracking the Coding Interview are orders-of-magnitude more accessible than others, it may take an entirely different format for some content to sink-in. Step-by-step visuals or animations will often be the missing link for finally understanding topics like graph traversals or rotations. Just seeing the process in motion can be invaluable. There are many videos out there, some with professional graphics, others of tutors with a white board. The key is to find the videos that speak to your learning style (or styles) personally. Watch a few and experiment. I especially enjoy those on HackerRank’s YouTube Channel by none other than Gayle herself. In this one, she does a great job at explaining BFS in really simple terms with drawings that accompany each part of her explanation. Coderust is more text-based, but intermingles the explanations with code and its own kind of step-by-step animations. Find what works for you. Experiment with different videos. Look hard enough, and you might find an instructor that speaks to your learning style an order of magnitude more than anyone else you've seen yet. You will also find various forms of non-technical advice from those who have taken interviews or who have been mavens on the topic themselves — also worth a watch.
If you’ve Googled interview prep, you’ve no doubt come across LeetCode. It’s a huge repository of hundreds of practice questions grouped by difficulty, with the biggest section focused on algorithms. There are competitors worth checking out like HackerRank, but these are particularly the kinds of questions you’ll find on interviews, some of which you may even encounter in a real interview. You can even buy a subscription where the questions are sorted by company (e.g. Apple or Google). Each is presented concisely and directly with an editor for you to run your code for instant feedback.
Sites like LeetCode are all about practice, rather than studying concepts directly. The questions are small enough in scope that you can do one or two a day to steadily increase your skill and speed. Do not let their difficulty discourage you. Even the “easy” questions can take an hour or more as you’re starting your journey, but you’ll be surprised by how quickly that time drops to half or less as you complete more problems. Time yourself and track your progress. A hundred questions is a great start; two hundred is a solid foundation. With every additional question, you build the muscle memory needed to think quickly under pressure and solve the kinds of challenges that you see more in interviews than on the job. If you find you are stuck, utilize the other resources to help you internalize one concept or another. This is also a great opportunity to familiarize yourself with math speak, not to mention refresh yourself on some general math concepts that can sometimes sneak their way into interviews (e.g. median vs mode). It’s a very powerful resource and one which can be transformational.
Structured Courses & Bootcamps
There’s also a variety of online courses and bootcamps that mix and match various elements of the above into all-inclusive packages. For example, this bootcamp from Udemy has over six hours of video, text-based articles, and supplementary downloadable content. It covers a nice sampling of technical content as well as some general (and company-specific) interview advice.
Free University Lectures
If you don’t have a computer science degree and are curious about academic CS as it’s really practiced, universities across the U.S. (including MIT) have made their actual courses available online to watch. How much they will help you learn the material depends on the course, but they will at least allow you to get an insider view into your peers’ experience in school. Quite often, professors at universities (especially some of the prestigious ones) are notoriously bad at teaching the fundamentals. You read that right. They are such experts on the subject that they just can’t help but gloss over details when focusing on the basics. They do this stuff in their sleep and fail to mention nuances they consider obvious because their minds are on much more advanced problems most of the time. It’s not intentional, but it’s not great for learning either. There are of course exceptions, but this category can be very hit or miss.
Forums & Blogs
Formal guides and interactive products are great for a million reasons, but you should not ignore one-off articles or blogs and discussions on forums like Reddit and Stack Overflow. These sources tend to fill the gaps left by other resources, often addressing more niche topics that are left out by the comprehensive guides. If you're taking a domain-specific interview like Machine Learning or iOS, it's worth looking for articles and discussions that might speak to those kinds of interviews specifically. They can have a different structure than more general software engineering interviews and require a slightly different prep philosophies. Even if you are taking a more standard software engineering interview, you may find articles about specific companies outside the biggest names that could really give you an edge, not to mention updates on interview questions or processes that haven't yet made their way into the larger books and websites. There may also be content that speaks directly to your background as a bootcamp grad or a member of a group that's traditionally underrepresented in software engineering. So don't hesitate to get specific when doing your research.
Putting It All Together
The best way to prepare for technical interviews is to take a portfolio approach. That is, do your homework to find the unique collection of resources that speaks to your individual background both technically and personally — especially those which accommodate (rather than fight) your most effective styles of learning. Usually this means that you will use a selection of the widely-known resources along with more niche materials to supplement those resources. You'll need to experiment. Sign up for trials. Read through full explanations of topics and watch videos until completion. Sometimes you'll find that not only is a certain medium (like video) more effective for you, but a particular instructor might just have a way of explaining it that finally clicks. Balance resources that help you both learn the material from scratch and practice to reinforce the concepts. Don't be afraid to pay for value if you can. Some paid resources are truly phenomenal because the creators were afforded the time to make them great through the support of their customers. There's so much material out there that can help you get the jobs you want. If you choose strategically, there's absolutely nothing stopping you.