• ISBN13: 9780470121672
  • Condition: NEW
  • Notes: Brand New from Publisher. No Remainder Mark.

Product Description
Programming Interviews Exposed
2nd Edition

The pressure is on during the interview process but with the right preparation, you can walk away with your dream job. This classic book uncovers what interviews are really like at America’s top software and computer companies and provides you with the tools to succeed in any situation. The authors take you step-by-step through new problems and complex brainteasers they were asked during recent technic… More >>

Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition

5 thoughts on “Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition”

  1. 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.
    Rating: 4 / 5

  2. 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.
    Rating: 4 / 5

  3. 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.
    Rating: 3 / 5

  4. I just had an interview appointment at Microsoft campus just this morning. I was applying a tech job as a software tester thru Volt Services. Volt (or any technology hiring services) would give some interview tips and prep for applicants vying for vacant positions.

    The Microsoft interviewer asked me brain teasers like how many hamburgers have been consumed this year in the US alone. And he asked me how did I arrive with my conclusions by writing it on the whiteboard. (After the interview, he told me that he was not interested whether my answer was accurate or not, but he was more interested no how I arrived with my conclusion by writing it on a whiteboard).

    After the brain teaser, he asked about network troubleshooting and remote file searching accross the network and that was easy. And then the interviewer began to ask about programming algorithms and how these algorithms be tested against predefined testing procedures. One of the questions given to me was similar in this book! The question was to create an algorithm of a string, “This is a string” to display on a screen written in a reversed order. And test the result of the algorithm against the methodical procedures applied to software testing.

    Microsoft and other tech companies out there asked questions of many kind. And they may or may not be in any book available. But having and reading this book can increase your chances of a better interview results. I hope this review helps.
    Rating: 4 / 5

  5. Buy this book if you are interviewing with MSFT anytime soon. I have two brothers and both work for MSFT. They both think this book is a very good prep. Moreover, my eldest bro is an interviewer at MSFT and he uses this book! So does the other 4 interviewers he knows at MSFT.

    1) This book has sample interview questions for you to solve and several approaches for each question.

    2) The book then tells you which approach is the best and why. VERY VERY NICE!

    3) This book also tells you how to approach problems, how to make sure you are not stuck, how to brainstorm and get the best answer.

    4) There are puzzle/riddle type questions too.

    5) How to write resumes and cover letters as well.

    6)Finally, the book also has very nice simple tutorials of all the important/basic concepts of OOP.

    Very comprehensive book. A MUST buy!
    Rating: 5 / 5

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.