Cracking the Coding Interview, Fourth Edition: 150 Programming Interview Questions and Solutions was a surprisingly good book in a sea of mediocre examples in the same genre. The book opens with some brief case studies (more like crude overviews) of how interviews work at several tech companies. It then progresses into some basic problem-solving advice and interview etiquette, and then spends the remainder of the book going through various types of interview problems (with solutions provided).
The meat of the book are the interview questions. I worked through most of them in code, using C++ instead of the book’s leaning towards Java. I didn’t feel at all disadvantaged via this this result. Tthe book is a little Java-heavy (though it does have a specific chapter on both Java and C++ to help) in its mindset and approach to problems, but I don’t think anybody’s going to blow a C++ interview because they worked through this book instead of something more C++-focused.
The questions range from relatively easy to moderately difficult, with a few that really are probably a little large in scope for a tech interview. The solutions are generally sufficient and optimal, though little effort is given to explore the intermediate approaches in most cases — providing the optimal solution is good, but figuring out how to get there and building something that works in an interview is as important a skill as finding the gem answer.
This is probably the best collection of coding interview questions I’ve stumbled through, and I think it’s an important reference if not just for the interviewed, but the interviewee — this does a good job of setting some basic benchmarks on what makes a good interview question, or at least what might be a reasonable interview question to attempt during a technical code-writing interview.
The book doesn’t aim to be an end-all of how to interview and succeed in an onsite; it’s really just setting out to explore the coding interview. As a result, I find the first part of the book a bit superfluous, and the real value to be in the exercises. The treatment of some topics like C++ is a bit silly; a few questions in this and the low-level area border on trivia, with answers dumped straight from Wikipedia. Similarly, exploration of things like OS/threading concepts is cursory at best; while there are some coding problems, mostly it’s a copy and paste of some basic boilerplate (e.g. “what’s the difference between a process and a thread?”). Still, most of the sections are reasonable and worthwhile.
It’s not perfect. When it tries to accomplish more than it really sets out to, it’s a little rough. The chapters that don’t really involve coding might as well be dropped for succinctness. But, for where the author sets out to satisfy her stated purpose, it’s the best coding interview question and answer book I’ve come across thus far. Worth a read. 8/10.