Wednesday, June 29, 2016

If you are preparing for Programming Job interviews and looking for some of the best books for programming questions then you have come to the right place. In this article, I am going to share a couple of good books to prepare coding, software design, and data structure algorithm questions, which are essential for any coding interviews. Though a programming interview also explores other areas of software development e.g. the programming language you would be mainly using in your project e.g. C++ or Java. The database and SQL based questions, the operating systems and UNIX related questions, some of the software design and object oriented design pattern questions and much more, but coding based questions forms the core of programming interviews.
This article solely contains book for coding interviews, but if you are interested to find good books on other topics e.g. concurrent programming or Java and other topics, then just look at those links and some more I have shared at the end of this article.

Books for Programming/Coding Interviews

This is the second article in the series of must-read books for preparing programming job interviews. In the first article, I have shared books especially for Java interviews but after receiving lots of good feedback and request about general programming interview books, I decided to write this article. I have also not included 10, 15, or 20 books in this list as it would be very difficult to consult or refer too many books, instead I always like to have a core group of 3 to 4 best books on a topic, hence I am only sharing 5 books on Programming/Coding interviews.

Programming Pearls
This is one of the best books to prepare for coding interviews. The Programming Pearls (2nd Edition) by Jon Bentley focus problem solving, algorithm design, correctness, and performance. The book is old but still worth reading and it will prepare you well for any type of programming interviews. Some of the questions discussed in this book are simply a great resource for programming interviews. Don't believe, you can decide yourself:

Find all sets of anagrams in the given dictionary.

How to sort 10 million unique non-negative integers, all of which are less than 107 in 1.25M memory?
The question doesn't end here, you have follow-ups like, What if we have only 1M (or less) memory available? What if our integers are not unique, but the number of occurrences of each value is limited?

One more similar questions is:

You have a file with 4 billion 32-bit integers. Find an integer which is not in the file.
with follow-ups like How would you do it if you have an ample amount of RAM? What about the case when you have only a few hundred bytes of RAM, but you are allowed to write temporary files?

This book also has a sequel called More Programming Pearls: Confessions of a Coder, but that's not really about programming interviews or algorithm design, nevertheless a good read for any programmer.

Elements of Programming Interviews
This is one of the advanced books on Programming interviews by Adnan Aziz, Tsung-Hsien Lee, Amit Prakash, who have already authored a couple of books like Algorithm for Interviews, aiming to prepare programmers for toughest programming job interviews with likes of Google, Microsoft, and Amazon. This is one of the best books to prepare for onsite, face-to-face coding interviews, which might require you to code on the whiteboard. It can also be used as a companion to Cracking the Coding interview book, which contains basic questions more suitable for telephonic and screening round of interviews.

The Algorithm Design Manual
This is another great book to prepare algorithm design. The Algorithm design manual is written by Steven S. Skiena and also one of the famous algorithm design books too. The only problem is it's hard to read and follow. If you are like many programmers who finds it hard to read books with a lot of theory then I recommend starting with interview questions and refer this book when encountering algorithmic concepts. This way you won't be bored by just reading theory and you will also learn the key algorithms.

Cracking the Coding Interview
This is your general purpose coding interview book. Gayle Laakmann McDowell has shared his insights on programming interviews and what tech companies like Google, Amazon, Microsoft, Facebook, Twitter or Apple looks on the candidate when they hire for Programmers. These books give essential basic knowledge by covering all important topics of programming interviews e.g. data structure, algorithms, SQL, Java, Networking, Database, Operating System and general guide of how to prepare code interview. This book is also a huge collection of common programming questions, which is the most important reason I recommend it.

Programming Interviews Exposed
This is the book I first read on the topic of a software engineer or IT interviews. It's so good that I can't refrain myself to recommending this one, the only problem is its basic for experienced programmers, but if you want to read your first programming interview book, this should be the one. It explains in detail how to solve a problem with pros and cons of different approaches and also covers essential topics for Programming job interviews e.g. puzzles, string, array, coding, algorithms, binary trees, networking, computer science etc.

That's all in this list of top 5 books for Coding or Programming interviews. All the books I have mentioned here are best of the best and you can further shortlist depending upon your goals and companies you are going to interviews. For example, if you are targeting Google then Elements of Programming Interviews and Algorithmic design manual is must read, but for most of the programming job interviews, Cracking the Coding interviews will do the job as it covers most popular questions.

3 comments
:

Anonymous
said...

No doubt "Programming Pearls" is a good book but "Algorithm Design Manual by Steven S. Skiena" is a gem, probably the best algorithm book you need for programming interviews. If you are preparing for Google, this is the must read book. My favorite part is "war stories" which is very interesting. The second part of the book also contains huge catelogue of algorithmic problems. Going through them will help you to find the pattern in actual interview. If you understand the art that a certain class or problems are best solved by certain data structure and algorithms, you are in very good shape for your interviews.