In the words of RealToughCandy, everyone wants a "one-stop shop" when it comes to learning.
She uses this term to describe Educative.io, but Educative.io costs $60 a month unless you choose to commit to its annual plan. So it's not a free resource, which means it's not available to everyone.
If money were not a factor, you might buy a copy of Cracking the Coding Interview, get a LeetCode Premium subscription, and sign up for access to Grokking the Coding Interview before scheduling some mock interviews.
Now, websites like LeetCode are interesting because they provide an excellent resource for free. A large percentage of LeetCode questions are free, the discussions section provides free solutions where the best code/explanations are voted to the top, and the platform itself can run hundreds of test cases in seconds.
Many people argue that LeetCode premium is not worth it, though writers like Yangshun Tay beg to differ. What interests me about LeetCode is not their premium option, but that they make so much of their service available without it.
All that being said, there are a number of quality free resources you can use to prepare for your coding interviews. Let's go through my favorites now.
Best Free Resources for Coding Interview Prep
Without further ado, here are the best free resources I have found for coding interview preparation:
The 30-minute guide to rocking your next coding interview is a free article available on FreeCodeCamp. Half the value here is in curated lists of LeetCode questions to match every major topic
Cracking the Coding Interview
Cracking the Coding Interview is still one of the best resources out there for interview prep, even in 2021. I have heard some people say that it is no longer sufficient, but I have had two coding interviews that were taken out of the book almost verbatim.
Unfortunately, this is not a free resource...but here is a LeetCode forum that maps every CTCI question to a LeetCode one.
The reason this is acceptable is that they are not perfect mappings. For example, the LeetCode String Compression problem is not exactly the same as its CTCI equivalent because it has an added constraint. It is actually harder than the CTCI version
If you do choose to purchase Cracking the Coding Interview, the solutions are all freely available on GitHub. They are in multiple programming languages, in case you are not a Java developer.
McDowell herself built the repository and committed the Java portion to it, so it is very unlikely the repository will removed due to copyright infringement.
BaseCS is a great collection of articles that explain computer science fundamentals, from hash tables to sorting algorithms, with custom illustrations, well-written analogies, and light-hearted explanations.
Best of all, every single article is free from the Medium paywall. Had they not been, Joshi probably could have pocketed hundreds, if not thousands of dollars from all her readers.
The Educative.io course on 14 coding patterns is not free, but a summary is available on HackerNoon and written by an Educative.io cofounder...presumably as either a gesture of goodwill, or a "free sample".
LeetCode questions sorted by programming pattern
Here is a public LeetCode post that maps all 14 coding patterns to respective lists of LeetCode problems.
InterviewNoodle – still in development
Arslan Ahmad is building a consolidated collection of interview preparation articles on Medium called InterviewNoodle. Just weeks ago, I would have written that this resource is very incomplete, but he has added so much content that I actually think he may now want to divide it into sections.
This, like Educative.io, is meant to be a “one-stop shop.” That Arslan Ahmad is the founder of Design Gurus increased my respect for him exponentially, since this means he is attempting to build a free version of an Educative course that makes him money.
Currently the Medium pages on this publication are not paywall blocked. This could be a coincidence, but for now it's a great resource.
The rest of this article will cover additional resources, though the ones above are my favorites.
Additional Coding Interview Prep Resources
An Interview Primer
If you don't know what to expect in a coding interview, the "30-minute guide" from freeCodeCamp linked above is a great "primer". Still, it is rather lengthy – even though it takes 30 minutes to just read through it, it would take much longer to actually review and go through its "General tips" section.
This might be just what you're looking for if you want to be really thorough. But what other options do you have?
"Confessions from a Big Tech Hiring Manager" is my single favorite video. It's by "Pragmatic Engineer," and is all about the interview process.
This video has useful and practical advice, but it also conveys the perfect attitude. He argues that you should think of every failed interview as a learning opportunity.
Other Interview Prep articles
"If software engineering is in demand, why is it so hard to get a software engineering job?" This is a tongue-in-cheek overview of the coding interview process.
If you read it, you should probably ignore the "string compression" story, which does not add much to the article.
The other side of the software engineer interview is a kind of sequel to the article above, summarizing and responding to Pragmatic Engineer's thoughts.
The Responses I Got From A Software Developer Candidate That Made Me Hire Him is an article that provides more insight on the interviewer's perspective, but unlike the two above it is behind Medium's paywall.
What's the Interview Process Like, In a Nutshell?
If I were asked to summarize all the resources above to you, here's what I would share:
- I would say that you typically get between 30 minutes to an hour to solve a coding question.
- Outside of the coding portion, they are free to ask you pretty much anything, from language-specific questions to favorite projects, but any interview with a coding portion tends to be dominated by it.
And here's some general advice to consider: you are going to be dealing with people who may be pretty tired of interviews. Smile if you can. Try to show enthusiasm. Have a conversation, and try to talk to the interviewer the way you might communicate if the two of you were pair programming, but they were more senior.
How to Start Your Interview Prep
I think that for most people starting out in this interview prep process, LeetCode is pretty hard. Here are two possible starting problems, though the best point of entry is admittedly Cracking the Coding Interview.
- FizzBuzz on LeetCode. I recommend it because it should not require any additional interview preparation, and will help you familiarize yourself with the LeetCode platform.
- Here's an article about FizzBuzz on InterviewNoodle so you can learn more what that's about.
- Jewels and Stones on LeetCode. If you are not able to solve this on your first try, then you will have to learn a technique that is useful in many coding interview problems.
Learn about hashmaps
There are many more data structures than just hashmaps, but I see these come up in coding interviews so often that I think they deserve their own section.
- Valid Anagram is another good LeetCode "starting point." It does not necessarily require a hashmap, but something that acts like a hashmap
- Here is Nick White solving Valid Anagram
- This is Alex Lee using hashmaps in Java. He does not explain the internals of how they actually work, but he provides practical advice on how to actually use them.
What to do after you cover the basics
After you get started preparing and are comfortable with the basics, I would refer back to the resources above.
The 30-Minute Guide and Cracking the Coding Interview (again, there are free LeetCode problem mappings if you do not own Cracking the Coding Interview) both cover computer science fundamentals. And 14 coding patterns goes a little bit further.
There is a lot more work to be done when it comes to coding interview preparation resources. It is relatively easy for me to simply point to good resources in an aggregate post, but actually providing comprehensive reviews or my own resource would require an order of magnitude more effort. I haven't gotten there yet.
So for now, there is certainly a gap. The most comprehensive content, in my opinion, can be found in Cracking the Coding Interview and this Educative.io course. And that's not to mention the plethora of resources someone with a lot of money could afford, from coaches, to coding interview bootcamps, to expensive mock interviews in which the interviewers provide detailed feedback.
That the people behind Educative.io and its "coding interview patterns" course have made efforts to provide free resources, like InterviewNoodle and a HackerNoon article, count for a lot to me.
I personally don't really use sites like GeeksforGeeks or interview resources on Github that are written exclusively in markdown. It would be very useful to build a platform with detailed blog-style explanations and embedded coding platforms, but at that point you would essentially be recreating Educative.io.
Medium provides an interesting case: Some of the best writers can be found here, but they are incentivized to put things behind a paywall. Anyone, in theory, can put up articles without a paywall on Medium the way BaseCS has. But few Medium writers seem to do this anymore.
We need more high-quality articles. We need practice problem lists that are continually updated. We need great YouTube content creators, like Nick White, to continue to provide clear problem explanations.
Efforts by BaseCS were largely successful, and my one wish is that it had continued to produce content...but this was all produced by a single person with a full-time job, a podcast, a YouTube channel, and apparently no compensation from Medium.
Not everyone has the same level of access to educational coding interview resources, so I admire the people who have done everything in their power to create free alternatives.