I write this review purely for the purpose of helping future readers to make a correct decision.
Note: Although I only own the C++ version of the book, I believe my review (at least the general idea) also applies to this Java version.
Background: I am CS graduate warming up for Job hunting, with 10+ years of programming experience.
I was so excited when I first saw the book (title) several weeks ago. Now I have finished several chapters and I should say it is not as great as it appears.
Let's cut to the meat directly.
1) Nice chapter organizations. It helps you to know what are the major topics you should work on to warm up for a coding interview.
2) Each chapter has a general introduction to the basic concepts.
3) Each chapter has a set of problems, with some decent analysis and solutions.
1) False advertisement. 700 puzzles? Come on. You do not have that many puzzles! Let's look at an example in the linked list chapter.
Problem #2: Find the nth node from the end of the list (give the puzzle, with a solution that guarantee you to be rejected by any interviewer).
Problem #3: Can we improve the solution of #2? (you will still be rejected if you present a solution like this)
Problem #4: Can we solve the same problem without hash table? (Here starts with the solution that make some sense)
Problem #5: Can we solve #2 in one scan? (finally here gives a good solution)
Many of the problems in the book are like this: different solutions to the SAME puzzle, You can do it, sure. But it is called an analytical process or algorithmic design process to one single problem. They are not different puzzles! Furthermore, the first 2 solutions are usually very naive, which can barely be counted as solutions. Sometimes, even the final version is not efficient enough.
2) Presentation mistakes, solution errors, typos.
For example, the presentation of XOR linked list in the linked list chapter is just wrong. You can not traverse 2 directions using just one node address.
For example, The solutions to problem 15 and problem 30 in the list chapter are wrong. The solution errors are actually more frequent because of cons #1.
For example, the usage of the term "hash table" is abusive and misleading. Why not follow the conventional usage? Not every table is a hash table.
3) Not many insightful ideas or analysis to a topic. Even there are multiple solutions to the same problem, the book does not show the underlining analytical process.
So to understand a topic or a problem well, you must read other data structure or algorithms books.
Suggestions to readers:
I used to read more than 5 algorithm/data structures on the same topic at the same time, which is in general a good approach to study a topic. This approach will
be especially useful when you read this book due to the reasons presented above. Remember to check out other online resources for coding problems too.
1) Buy the book. It is helpful.
2) Read it with your own discretion.
3) Read other books and online resources on the same content at the same time.
Suggestions to authors (Why AUTHORS? Because I am almost 100% sure that some content was written by students):
1) Fix your false advertisement. Combine your "problems" together in to real puzzles. Do not present very dumb solutions just for the advertised numbers. Readers are fine without them. Let's respect our limited resource on the earth.
2) Add more problems to your book. I have seen about 80% problems elsewhere.
3) Fix your mistakes, errors and typos. Especially the presentation mistakes are not acceptable. Understand a topic before you add it into your book.