New! Java versions of all C++ programs in the book at http: //bit.ly/epi-programs Get a PDF sampler of EPI from http: //bit.ly/epi-sampler
Have you ever...
Wanted to work at an exciting futuristic company? Struggled with an interview problem that could have been solved in 15 minutes? Wished you could study real-world computing problems?
If so, you need to read Elements of Programming Interviews (EPI).
The core of EPI is a collection of 300 problems with detailed solutions, including over 100 figures and 250 tested programs. The problems are challenging, well-motivated, and accessible. They are representative of the questions asked at interviews at the most exciting companies.
The book begins with a summary of patterns for data structure, algorithms, and problem solving that will help you solve the most challenging interview problems. This is followed by chapters on basic and advanced data structures, algorithm design, concurrency, system design, probability and discrete mathematics. Each chapter starts with a brief review of key concepts and results followed by a deep and wide set of questions.
EPI concludes with a summary of the nontechnical aspects of interviewing, including common mistakes, strategies for a great interview, perspectives from across the table, negotiating the best offer, and much more.
"This book is the best compilation of programming related problems I have seen. It is a great resource for a diverse set of topics when preparing for technical interviews, as a quick refresher in a subject area or when you are just looking for a brain teaser to challenge yourself." Shashank Gupta / Scaligent, formerly Engineering Manager, Amazon.com, Senior Engineering Manager, Yahoo!, Manager of Software Development, Cisco Systems
This should become the de facto book on interviews. It is loaded with great problems and puzzles. The solutions are very comprehensive.
However, don't buy this book thinking that it will teach you about heaps or binary search trees. It merely contains a few paragraphs for each topic and then goes straight to the problems. You'll need another book to learn about the data structures and algorithms that go with them. I'd recommend CLRS (Intro to Algorithms) but many others will do (like Sedgewick or Skiena).
This book also contains a few chapters devoted to the interview process itself. These chapters are just as golden as the technical ones. Interviewing is more about just solving the problems. They want to see who you are as well.
Anyways, definitely check this book out if you wish to get extra practice for programming interviews.
I have pretty much read the whole book, I'm saying pretty much because there are waaaay too many questions and there's no way I try to solve all of them :P
If you genuinely solve all the questions in the book, I'd say you're pretty much set for a software engineering job. This is a bug in today's software engineering recruitment, it doesn't matter if you know good practices, design patterns, maintainability, readability, etc... Just pick a mainstream language and memorize/solve as many questions as possible :)
Back to book, explanations were not that clear and most importantly the code was incredibly hard to read. I think there's a new Java version now, so I'd say just go read that one because seriously WTF/minute ratio is way too high for C++ version.
tl; dr: Great selection of questions. Not so great execution on explanations and code quality (readability).
It's a good book and for a change it's in C++!!! Finally something not in Java It contains many good questions. There are though many questions that were silly or it didn't stress a concept that you need to learn.
Yes, this book is full of interview questions. However, the criteria the authors used to pick the questions is quite academic and may not be very pragmatic. It is hard to believe that any of today's interviewers would ask some of the questions in the book within the average interview session time span of 45 minutes. IMHO, more than 50% of the problems in the book fall into this category.
Furthermore, it lacks of short reviews in the chapters. Some short summary of the topics in discussion would be much more useful for the readers. Readers may find it difficult to jump right into the problems/solutions so quickly.
Also, the solutions are often too succinct. It would be more useful to give some guidance on the concepts/approaches than giving solutions directly. While "Cracking The Coding Interview" from CareerCup.com has been overdoing it, this book is in want of better hints/guides to help the readers to form their thought process.
Of, there are also errors and ambiguity in some of the questions.
Elements of Programming Interviews is the best collection of algorithmic puzzles and exercises that I have seen. Whether you are preparing for programming interviews or simply want to hone your algorithmic skills, this book is for you. With concise explanations, asymptotic analysis and optimised code, this book offers a great reference to the self learners. In a course for design and analysis of algorithms, the book can also complement the standard textbooks like CLRS, Dasgupta-Papdimitrou-Vazirani, Kleinberg-Tardos as assignment problems, as standard textbooks stop at pseudocode level, but knowing the nuances of implementations helps in practice. This book is most effective for self improvement of algorithmic thinking -- if you code the solutions yourself and compare with the analysis and solutions offered. Overall, a great book to have !
I am not a fan of textbook style representation. Thick textbooks require skimming skill which I personally find painful when reading technical materials - I either skip some important details, or stay on some trivial matter too long. EPI keeps it lean and clean, the book is by no mean for beginners but if you need a comprehensive yet succinct book to revise and enhance your Algorithm knowledge, this is what to get. Everything is to the point and sometimes too briefly explained that it takes a while to figure out, but that's a very enjoying process on its own. This is the best interview preparation book I've known, it simply out-performs the more popular Gayle's. Many problems are pretty practical. If you do have a few months to spare, grab this, your time won't be wasted.
Strictly better than Cracking the Coding Interview.
The strength of this book is the quality of problems. The authors have done a fantastic job curating ~10 problems per topic that are palpably more illuminating than the average lot on a site like leetcode. They have a distinctly mathematical rigor to them, too, that I struggled with initially but came to love.
If you get through this, you'll have a pretty strong foundation. Thus IMO it belongs at the beginning of an interview prep process. Then, a tool like leetcode is most useful towards the end of the process, playing a flashcard-like role: drilling on an unlimited bed of problems, each of which doesn't have it's category revealed.
(Thanks Ali for recommending this in Freshman year :)
This book contains a really good collection of interview questions. It's pretty comprehensive in its coverage. However the explanations were a bit terse at places, they could use more pictorial explanations.
This one really helped me go through tough times of interviews. Apart from the technical concepts the behavioral and the anatomy of interview sections gives a very nice idea about interview processes. For everyone giving or taking technical interviews.