No recommenddation given. 498 pages (of which >300 are answers to questions)
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
-
use of
#define
for constants -
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++. - no mention of exceptions
- no mention of C++11
- 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!