ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Google+ ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1918 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Cracking the Coding Interview
Gayle Laakmann McDowell
CareerCup, LLC (2012)
Nomen Nescio
Appeared in:

Reviewed: March 2014

I bought this book the last time that I was looking to change jobs. In the event, I changed jobs before I had time to read it. Now I’m on the other side of the interviewing table and I thought that it might be a source of ideas.

Overall, I found the general advice to be sound. Prepare yourself, know your target company and some background on large US-based multinationals like Google, Apple, Microsoft and Yahoo.

The technical questions and answers were, I felt, rather unexceptional. Mostly the code is Java, with the aim of being easy to understand. In particular in the Bit Manipulation chapter I kept on saying to myself “that won’t work reliably in C or C++”. In the chapter dedicated to C and C++ (which is almost entirely C++), several things shocked me

  1. use of #define for constants
  2. use of raw pointers and even malloc/free (though somewhat predictably, the pointers segue into virtual functions); I would expect candidates to show a better understanding of the use of the heap and the stack and for me systematic overuse of new is java++ – C++ written in a Java dialect rather than idiomatic C++.
  3. no mention of exceptions
  4. no mention of C++11
  5. question as to why derived class destructors need to be virtual.

One last sin, it’s all a bit computer science-y (as Press et al. might say). There’s a lot on algorithms, recursion and even databases, but when it comes to a tiny bit of numerical analysis, I have the impression that the author is lost at sea. The example in question is oriented towards data structures used to evaluate a “mathematical expression ...Ax^a + Bx^b ...”. I suspect that a polynomial is intended, but the text does state that the exponents are of type double. No mention of the requirements for rapid and accurate evaluation of the expression. Who cares if the answer is NaN when the inputs are wrapped in a nice class!