We just compiled every problem (and solution) in the book and made them available for free. There are ~230 problems in total. Some of them are classics like n-queens, but almost all are new and not found in the original CTCI.
You can read through the problems and solutions, or you work them with our AI Interviewer, which is also free. I'd recommend doing AI Interviewer before you read the solutions, but you can do it in whichever order you like. (When you first get into AI Interviewer, you can configure which topics you want problems on, and at what difficulty level, and you can add topics and change difficulty levels as you go.)
Here's the link: https://start.interviewing.io/beyond-ctci/all-problems/techn... (You'll have to create an account if you don't already have one, but there's nothing else you need to do to access all the things.)
I’m currently preparing for interviews myself, so having access to high-quality, free resources like this is incredibly helpful. The AI interviewer feature, in particular, looks like it will be very useful for me. Thanks again to the author for making these resources available!
But I did have one job working on an AI graph compiler which used fancy algorithms all over the place. In practice though I found the space between "use the standard library" and "it's NP-complete; use heuristics" where the answer is "you can use this neat dynamic programming trick" is basically nonexistent.
Actors for sure with auditions and maybe maybe chefs, male pornstars.
Not that I agree with absurd interview process of software development but they often see themselves more akin to attorneys than tradesmen. The difference being attorneys have to pass a bar exam and even trades have journeyman cards to provide credibility.
Software development has none of that. Real engineering has PE licenses but how do you achieve that in such a broadly scoped field of software development?
We either play the interview game or find a way around it.
Maybe this varies country to country. I have seen this in India and UK atleast.
In UK atleast there are trades like roofing, landscaping, exterior building cleaning, masonry, tree surgeon etc which I have seen them are mostly family based.
staging [1] is very much a thing for kitchen staff
The whole thing is broken.
They could cheat on the take-home but it isn't meant to be difficult and you hopefully figured out at the in-person that they're someone who wouldn't need to bother cheating.
I more understand the emphasis on leetcode problems for juniors but a timed session without an observer (perhaps with browser tracking) to solve those problems makes a lot more sense than bringing in the anxiety of the observer, as you’ve noted. It sucks having to spend mental energy wondering how your problem-solving looks to whoever’s watching and seems actively detrimental to assessing talent for an IC role.
I had some interviews, not at the principal level, we had a couple of candidates who were very good during the informal interviews, they could hold a conversation about technology, but they couldn’t code the simplest of problems. I know folks don’t like it, but this could happen in my humble opinion at all levels.
1) We want people to read the book (To wit, we've also made 9 chapters of the book free: http://bctci.co/free-chapters)
2) We want people to use interviewing.io
In my career, I've written a lot of stuff about hiring, and I've shared a lot of interview-related materials (e.g., full length interview replays). I hate paywalls for content, and you probably do too... and I have never regretted making it free. In my experience, putting good stuff out there is the best way to market to an eng audience.
My name is Aline, and I'm the founder of interviewing.io. Thanks so much for your interest. It looks like you’re not in a country where we’re open for business yet, so we can’t create your account, but we’ll add you to our waitlist.
Usually low level engineers don't have a say on what projects they get to work. They show impact by completing whatever projects were handed to them and hope/pray those projects take off and become visible to upper management and/or tied directly to revenue.
The grind aspect is real though. 99% of FAANG engineers aren't building the next google maps or LLM, they are doing Enterprise CRUD + ELT + jira tickets. Companies like Meta and Amazon have enormous workloads and thus a grinder is preferable.
After a few years of experience, CRUD and ETL can be done while sleepwalking so the only missing component is someone willing to grind, e.g. someone who will spend 100 consecutive days doing leetcode
The writing is on the wall for Leetcode-style interviewing. The signal-to-noise ratio is diminishing in the age of AI (cheating). These sorts of puzzle challenges might no longer play a meaningful role going forward.
What is hopefully dying is companies asking verbatim LeetCode questions and candidates having to memorize a bunch of questions. We wrote this book largely because we wanted to teach people how to think. I knowing how to think is only going to get more valuable.
It’s FAR easier for companies to stick with the interview process they’ve used for decades—just mandate in-person interviews again—than to reinvent the wheel with some new, unproven format. Sure, there’s a growing need to assess more than just DS&A in initial screenings, but let’s be honest: those interviews aren’t going anywhere.
The REAL reason to make these resources free? Because it’s not a competitive advantage to offer problems to practice. There are already tons of free problems online. The real value isn’t in giving people a place to do problems—that already exists. The value is in the book. If you already know enough to do well on problems without the book, then you shouldn't have to pay to practice it.
I bet the genuine answer to your question is that she knows it's a resource that could help tons of people (at a time when tons of people need that help) and paywalling it means that it won't serve that same purpose.
We built it this way on purpose, though... the intent is to mimic an interview and gently force you to talk through your thought process, not to have yet another LeetCode clone.
Today, CS student's idea of an industry interview has turned into an extortion racket cottage industry, with people not only selling ritual prep books, but now also selling mock interview rituals with techbros who got into the best-paying companies.
Youse has a lovely career potential; its would be a shame if somethings was ta happen to your job interview.
What more does it take to realize this is very time-consuming and expensive theatre, and terrible metric for hiring good software engineers.
And if you're an employer who doesn't care that students spend many hundreds of hours rehearsing for the interview theatre, to the exclusion of getting more experience building things, and that your interviews aren't actually selecting for software engineer aptitude, what happens when the hire takes that same misaligned hoops-jumping mindset to their work.
Am I the only one that interviewed people with lengthy resumes full of programming experience and when I asked them to do a simple programming exercise they fell flat on their face? I've seen experience in C, gave them take home two hour exam and they couldn't even get anything to compile. What he meant was he took a class a few years back.
You see it in other domains with extensive Excel experience and the guy gets hired and never heard of a vlookup.
I think some of the stuff is overkill but you need to select for people that know how to program.
I for one am glad they exist because I don't have a CS degree but learned on my own. I lucked into this profession through an online leetcode style screener and your book helped me immensely,so thank you
You don't need Leetcode style tests to weed those out. Much simpler problems will do it.
(Maybe I am just bitter because I have more than once bombed a leet-code interview myself)
I interview a lot of people and my go-to coding question is actually a pretty simple question that might be found in a 2-year coding course. What I am looking for is production ready code, good error handling, tidy design, and understandable code. All things that leet-coding specifically discourages.
1. Raw mental horsepower
2. The ability to just repeatedly do focused learning, aka just grinding
And sure, it probably does favor #2 these days - but that is a critically important skill. You can trade one for the other, but everybody has some amount of both, and these questions figure out, roughly, your computed aggregate score of these.
They have a very high false negative rate, but an exceptionally low false positive rate for a 60 minute interview, so it works very well in companies with large interview candidate pipelines.
Maybe we have different things in mind when we say "leet-code questions".
I don't know why leet-code style interviews would discourage the things you mentioned.
Sure, some interviews are pretty hard and some algorithms/data structures are not as common on the job. But given a complex enough system, you'll run into lots of situations where having this foundation will pay off. I mean, it's just computer science.
That's the thing about software engineering. You can get a lot done without knowing the foundational stuff. But then you're just a blunt instrument. Everything looks like a nail to a hammer.
How we got to this point : as average candidates train more in interview-coding, the interviewers pick harder and harder questions. It's got to the point where the only way to reliably pass is to have pre-canned memorized solutions to hundreds of existing questions. It's an arms race divorced from the reality of the job, which is done with real world tasks, privacy, little time pressure, and access to reference materials.
Comments should get more thoughtful and substantive, not less, as a topic gets more divisive.
Please don't fulminate.
Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith.
Eschew flamebait. Avoid generic tangents. Omit internet tropes.
Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.
The idea all tech companies require you to know niche data structures is kind of a meme honestly. I'm sure some do but not the ones I've interviewed at at least.
What is the point of all of this. No other industry has this.
I'm not necessarily arguing that software engineering should have some gatekeeping organization that you need to prove yourself to, but you take the good with the bad. In other engineering disciplines, a third party organization takes the responsibility of filtering out the unqualified people. In software, the hiring companies have to do it, so you end up with the first interview (at least) being spent just proving you're not lying about every single thing on your resume.
They also tend to pay less
Preparing for interviews is a small price to pay
So the PRO is that anyone can become a SW engineer, but the CON is that when anyone can become a SW engineer you're competing with soo many people on an even playing field that weeding out the wheat from the chaff is tricky and no company had the perfect solution because it doesn't exist.
What other engineering profession things change so fast that tools from ~20 years ago (C, PHP, Perl, etc) are not useful on the job market anymore? What other engineering profession gets hundreds/thousands of applicants per open position? What other engineering profession has such a lack of standardization that every company works completely different, with different tools and different processes to ultimately do the same thing?
In most other traditional engineering disciplines it's not just the university degree or credential that matters to getting in, but a lot of critical knowledge can only be gained from mentoring and learning at the job from graybeards of the industry, knowledge you'll never get if you try to teach yourself, even if technically all the relevant courses and information is freely available online. Not to mention that in a lot of engineering professions the tooling is specialized, non-FOSS and very $$$, so your only chance of touching it is at university or a company who will pay you to get certified in that tooling.
Having a process which only exist for the 1% of least likely candidates is absurd. Even if you wanted to give these people w chance, obviously you don't need to subject the 99% of people to the same process. What is the point of asking a CS graduate with 5 years industry experience some brain teaser questions? There is literally no point, it tells you exactly zero about the candidate.
Also, you can self teach everything in most engineering disciplines. What part of Electrical engineering or mechanical engineering requires a substantial financial investment or has things you could only learn in a university?