Most Helpful Customer Reviews
|
|
137 of 144 people found the following review helpful:
4.0 out of 5 stars
Useful if studied correctly - one of the few helpful books you'll find on programming interviews, April 22, 2006
I just finished rereading this book, and read the earlier Amazon interviews. Though I agree with many of the observations in the other reviews, their judgments are mostly too extreme. This book is definitely of value, but reading it won't unlock the keys to any secret kingdom of guaranteed job-landing success.
I've been interviewing and hiring software developers for almost 15 years, and I know one thing you can be sure about software interview processes: their inconsistency. Interviewing and hiring practices for software development are all over the map. As a matter of fact, all software development practices are all over the map, and how you are judged a success or failure once you land a job are at least as subjective and error-prone as how you are evaluated in interviews.
Landing a particular software development job and being successful at it once you get it require a lot of learning about the particular mix of priorities and practices on each particular team, and fitting into that mix. You could be interviewing with a sixty-year-old toy manufacturing veteran doing tiny embedded systems, and any mention of object-oriented technology could be immediate grounds for a religious no-hire. On the other hand, you could be interviewing with a young hotshot at a new Silicon Valley startup. In this case you'd not only better be fluent with every aspect of object-oriented technology, best practices, and the latest open-source frameworks, but you'd better not make too much of space optimizations or "the overhead of a subroutine call" or you'll be branded as hopelessly old fashioned.
Consequently, the advice in this book is quite valuable about communicating throughout the interview, telling the interviewer the thoughts behind what you are doing and asking clarifying questions as you go. No book by itself can help you with any interview you might encounter. However, with all its flaws, this book does a better job than any other available book in discussing programming questions, how to approach them, and possible answers. The idea that only "recent grads" are ever asked general programming questions like this is hogwash. I hire veteran developers for high-end product development jobs almost exclusively, and I ask programming questions like the ones in this book all the time, and so do most of the good interviewers I know. I've found over the years that programming questions give me among the most direct and accurate assessments of a developer's skills. Asking programming questions is enough of a best practice that you should be suspicious of a technology company that doesn't include them in its interview process. (Hey, I said that development practices were all over the map, but I didn't say that most of them were any good. How else could the software industry achieve its miserable 40% success rate?)
As far as the books weaknesses, probably the biggest is that almost all the questions, answers, and discussion are in straight procedural C. It's hard to reason why this book shows such a lack of emphasis on object-oriented technology considering it had been the state of the art for 10 years when this book was published in 2000. So, though there are a few small examples of OO class designs thrown in, discussion is missing of important topics like inheritance, composition, encapsulation, and structured exception handling. Even when you are programming in an OO language, however, the logic inside the methods you write for these kinds of general exercises is mostly the same as you would write in a procedural language. So most of this book is relevant, but you must translate to OO on your own.
A more subtle and perhaps more important weakness of this book is that topics such as performance, scalability, error handling, and public vs. internal interface design are haphazardly covered and sometimes skipped. Because of the inconsistency of development practices, there is usually no ultimate "right" answer to any of these questions. Some of the recommended "best" answers in this book have some glaring failure cases that are not covered, and covering these cases will obliterate the simplicity and performance characteristics of the "best" answer. So you always need to probe your interviewers for your constraints, such as invalid inputs, what if memory allocation fails, who are your users, etc...
Ultimately, this is a useful book. You will probably do better on a software development job interview if you read this book. Stay away from the superficial treatment most people give books such as this of just trying to memorize the questions and answers. If you read this book thoughtfully, coding and testing your own answers to the exercises as you go, and evaluating the strengths and weaknesses of what's in the book, you'll definitely do better on any interview where you are asked direct coding questions. It is like learning one more person's point of view on relevant development practices, and the more you do that, the more rounded you will be and better you will do overall at both interviews and once on the job. Best of luck and I hope you find a programming job that fits you well.
Help other customers find the most helpful reviews
Was this review helpful to you?
|
|
|
|
|
|
38 of 43 people found the following review helpful:
4.0 out of 5 stars
excellent advice.., December 23, 2001
By A Customer
There are many types and levels of programming jobs. This book is useful advice for people aiming for system level or hardcore type jobs e.g. embedded systems, networks and operating systems etc. For example, this book would be highly useful for you if you go for a developer's job interview in Cisco systems, IBM, Microsoft, Sun or Lucent etc. This is not too useful for application programming stuff, as one of the reviewers mentioned about Sybase etc. I have been giving programming interviews for many years and believe me, I have come across a surprising number of questions right from this book. The other good books for these type of interviews are "Expert C Programming" by Van der Linden, "Programming Pearls" and " C interfaces and Implementations" by Hansen. The interviews in companies I have mentioned do indeed last full working days, or at least five to six hours, involving lunch. The interviewers include three to four people from the engineering team, one from Human Resources and one senior level person e.g. director or head of the group type person to finish it off. The engineering team asks you to write significant code involving commonly used data structures, linked lists and trees etc. and also code that would require certain tricks of the trade that only veteran or seasoned programmers would know. So in my opinion, this is a timely arrival and gives lots of useful information to build the required confidence and thinking pattern to ace such interviews. The techniques described are all familiar and used frequently by most engineers and computer scientists in the field, but being able to answer promptly in an interview is a different ball game and I have suffered because of the lack of confidence in interviews. So, in my opinion, it deserves at least four stars.
Help other customers find the most helpful reviews
Was this review helpful to you?
|
|
|
|
|
|
13 of 14 people found the following review helpful:
3.0 out of 5 stars
Not a silver bullet, January 21, 2009
The bulk (90%) of this book focuses on basic C.S. algorithms. A few pages at the end are dedicated to the "soft questions", or non-technical stuff.
Really, this book is a direct result of the "Interview 2.0" concept that came out in the late 90s and still persists. I feel that a lot of tech companies (except perhaps a select few, such as Google and MS) have realized that interviews based exclusively on basic C.S. algorithm knowledge isn't the way to pick the best candidate.
There is a *ton* of material in this book. If you focus on it, you may end up shooting yourself in the foot. So make sure your target company is going to be focused on algorithm questions before you put the time into doing the problems here. Or avoid those companies. Honestly, you're wasting your life relearning this stuff, as interesting as it is, unless you're going to be designing algorithmic libraries.
Also, don't forget the soft questions (your past experience is really important!).
Update, 2009-02-23:
Looking back at this review, I may have been a bit too harsh. This is an excellent book in a lot of ways. It is a great review of some of the more famous algorithm problems in computer science (although I'd recommend picking up Bentley's Programming Pearls if you want a real glance into famous algorithmic problems). It also has some general good advice on soft questions, although I wish it had spent more time on this area - as I learned the hard way in one of my first interviews looking for a new job. And hence why I rated this 3 stars at the time.
Regardless, I still flip through it every time before an interview... So if I could, I would revise my rating up to 4 stars.
Help other customers find the most helpful reviews
Was this review helpful to you?
|
|
|
|
|
|
Most Recent Customer Reviews
|