Skip to content

Book review: Programming Interviews Exposed

The first thing that amused me about the book "Programming Interviews Exposed - Secrets to Landing Your Next Job" were two sentences from the beginning of the third paragraph of the preface:

At this point you may be wondering who we are and what gives us the authority to write this book. We're both recent graduates who've been through a lot of interviews in the past few years.

Are people who went through a lot of job interviews actually qualified to write a book about acing job interviews? On the other hand a guy who only needed a single job interview to get his dream job is probably not qualified either. I guess only people who actually sat on both sides of the table can really write good books about job interviews. If you want to have an example of what I'm talking about check out Steve Yegge. He writes amusing blog posts about job interviews once in a while (old site - new site).

The roughly 250 pages of the book are divided into 11 chapters. The order of the chapters is a bit weird. It all starts with a very short 8-pages chapter called "The Job Application Process". The shortness of the chapter alone wouldn't be much of a problem. After all the book is about job interviews, not job applications. There is however an appendix of more than 20 pages about writing proper resumes. In my opinion the chapter and the appendix clearly belong together and shouldn't have been divided. Another weirdness is the order of the later chapters. The chapters 2 to 7 deal with programming topics (see below), the chapters 8 and 9 are about puzzle questions, chapter 10 is about programming again, chapter 11 is once again about non-technical questions.

Even though it's not always reflected in the order of the chapters, the book is roughly divided into two parts. Two-thirds of the book are about technical questions, the other third is about non-technical questions. The chapters about technical questions are themselves divided into two parts again. The first half of a technical chapter introduces a concept (like linked lists), the second half walks the reader through a few problems which are supposed to be typical for job interviews. The chapters about non-technical problems or questions are not divided. They include only the questions and how you are supposed to answer them.

The technical chapters 2 to 7 are named "Approaches to Programming Problems", "Linked Lists", "Trees and Graphs", "Arrays and Strings", "Recursion", and "Other Programming Topics".

The chapter "Approaches to Programming Problems" could have been the most valuable chapter for me. It explains how to approach programming problems, how to structure solutions, and what to do when you're stuck. Unfortunately it's a bit short (7 pages). I bet you can write entire books about that topic (structured problem solving) alone. If anybody has any suggestions about books about problem solving I'd like to hear them.

As the chapter titles imply, the next three chapters of the first technical block are about common data structures. Linked lists (singly linked, doubly linked, circular), trees (binary trees, binary search trees, heaps), graphs, arrays, and strings. The concepts are explained and then some common operations like tree traversals or removing specified characters from strings are implemented in C, Java, or Perl. I'm not sure why Perl was chosen as a third language but I've never gotten the impression that Perl was chosen for any other reason than to show fancy one-liners. Perl was basically not used when fancy one-liners weren't enough. Java example code is very rare too. I guess that 80% - 90% of the code examples in the book were written in straight C.

Chapter 4 is titled "Trees and Graphs". That's a bit of a misnomer. In the entire chapter there's not even a whole page about graphs. On roughly three quarters of a page the authors quickly introduce the concept of directed and undirected graphs and tell the reader that graph problems are unlikely to show up in job interviews because graphs are too complex. Needless to say that none of the sample problems deal with graphs either. I'm not sure why graphs were added to the book.

Chapter 7, "Other Programming Topics", is a pretty useless chapter. It's completely without any direction. The authors hastily introduce four new programming topics, Graphics, Bit Operators, SQL, and Concurrency. Each of these four topics is explained on two or three pages. That's just significantly too few pages to introduce any of these topics. Even if you have only a few hours of experience about this stuff you already know more than the book can teach you. If you have less experience the book isn't going to help you through a job interview about these topics either. One of the two sample questions for SQL is to insert Montreal 1976 into a table with the structure Olympics(city CHAR(16), year INT(4)). If you don't know how to do that without the help of the book you should probably remove SQL knowledge from your resume.

The chapters 8 ("Counting, Measuring, and Ordering Puzzles") and 9 ("Graphical and Spatial Puzzles") are about nine short non-technical problems. These chapters are better than the technical chapters in my opinion. The authors explain their thought processes well. Each problem is discussed on several pages, most solutions include diagrams.

Chapter 10 ("Knowledge-Based questions") is another technical chapter featuring answers to questions like "What is the difference between a class and a struct in C++?" or "Discuss garbage collection and explain the different ways it was implemented in Perl and Java". Considering that there are thousands of knowledge-based questions an interviewer might ask you the value of this chapter is obviously very hit-or-miss.

The last chapter ("Non-Technical Questions") is comparable to the 10th chapter but instead of answers to technical questions it tells you how to answer non-technical questions. Examples include "What are your career goals?" or "What is your salary history?".

If you wanted a recommendation for a book about job interviews I'd tell you to read "How would you move Mount Fuji?". If you've already read that and you want another book about the technical aspects of job interviews you could check out "Programming Interviews Exposed - Secrets to Landing Your Next Job". At $16.49 and only 250 pages it's cheap and it doesn't take a lot of time to read. One last piece of advice: There's going to be a 2nd edition out in a few months. Wait for that.

Related links:

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
Form options

Submitted comments will be subject to moderation before being displayed.