- Paperback: 522 pages
- Publisher: CreateSpace Independent Publishing Platform; 2 edition (October 11, 2012)
- Language: English
- ISBN-10: 1479274836
- ISBN-13: 978-1479274833
- Product Dimensions: 6 x 1.2 x 9 inches
- Shipping Weight: 1.7 pounds (View shipping rates and policies)
- Average Customer Review: 303 customer reviews
- Amazon Best Sellers Rank: #16,696 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Other Sellers on Amazon
+ Free Shipping
+ $3.99 shipping
Elements of Programming Interviews: The Insiders' Guide Paperback – October 11, 2012
See the Best Books of 2018 So Far
Looking for something great to read? Browse our editors' picks for the best books of the year so far in fiction, nonfiction, mysteries, children's books, and much more.
Frequently bought together
Customers who bought this item also bought
"A practical, fun approach to computer science fundamentals, as seen through the lens of common programming interview questions."
Jeff Atwood / Co-founder, Stack Overflow and Discourse
"This book prepares the reader for contemporary software interviews, and also provides a window into how algorithmic techniques translate into the workplace. It emphasizes problems that stem from real-world applications and can be coded up in a reasonable time, and is a wonderful complement to a traditional computer science algorithms and data structures course."
Ashish Goel / Professor, Stanford University
"A wonderful resource for anyone preparing for a modern software engineering interview: work through the entire book, and you'll find the actual interview a breeze. More generally, for algorithms enthusiasts, EPI offers endless hours of entertainment while simultaneously learning neat coding tricks."
Vineet Gupta / Principal Engineer, Google
From the Author
Have you ever...
- Wanted to work at an exciting futuristic company?
- Struggled with an interview problem that could have been solved in 15 minutes?
- Wished you could study real-world computing problems?
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
Regarding the fact that it's a young person's game, this isn't entirely true. The brain of an adult is still malleable and can learn new patterns (see Peak by K Anders Ericsson). The only reason that an older person like myself is not in tune with this sort of thinking is that it hasn't been practised for years, since my day job doesn't require it. Most of the time I'm glueing APIs together to make something work or reading through log files to figure out what went wrong. All the fundamental data structures and algorithms I need have been written for me by others. As a result I don't get enough practice thinking about these sort of problems.
From a practical perspective the general trend in the industry is to interview using a whiteboard and present a candidate with a problem to solve. This is quite different from 20 years ago where hiring was based on experience which, statistically is one of the worst ways to predict employee performance (see Work Rules by Lazslo Bock). 20 to 10 years ago you could turn up for a role and have a chat with the hiring manager and say 'I used Java webservice to Maven API that worked using dynamic polymorphism with C++ templates. Communication over the network was done using Bash for the serialization/deserialization proceess.' And the hiring manager would say 'Sounds impressive! You're hired'. This just resulted in a lot of bullshitters infiltrating the industry and eventually working their way into positions that they shouldn't be in. I think this one of the reasons why, unfortunately, companies have shifted to this interview process, which is gruelling for candidates, but provides the company with a better signal since it roughly emulates a work sample test. So, if you want to change your jobs these days, having a long resume isn't going to be enough. All that says is, at worst, you've spent 10 or 30 years doing the same thing badly. You need the ability to be an engineer and this sort of book will improve that ability.
From a personal perspective I still like building things in software and want to be involved with the best in the industry at doing it. These companies, like MSFT, Google, Amazon etc... all have a similar hiring process involving testing candidates with problems like these. Preparing using this book will prepare you for interviews with multiple companies. It's like killing multiple birds with one stone.
How does it compare with Cracking the Coding Interview? CTCI is a great book and I think of these two books as roughly equivalent. However this book contains about twice the number of problems as CTCI and it is slightly more academic. If you're a C++ fan you'll probably appreciate this version more since all the examples are in C++. It also covers more dynamic programming problems and system design problems than CTCI. Its treatment of bit manipulation is more thorough.
Learning from this book requires you to understand the patterns behind the problem. Repeating solutions from memory isn't going to get you far in a interview or in a real world coding environment. My goal from working through this book is is to train my subconscious so that it can recognize and solve similar problems when presented.
I should mention I found a small error in the book and the authors were very responsive and I had a nice chat via Google Hangouts with one of them.
- Every problem solution is not just a solution, but an analysis of the problem just like what you are expected to do during an interview. Starting with a brute-force approach, the book guides you through why the brute-force solution is inefficient, and optimize on that.
- Every solution has detailed complexity analysis, which is often expected from your interviewer. The book also includes the deduction of the time complexity, rather than just throw you a big O notation and let you guess
- The code is of high quality, using meaningful variable names, the code itself is self-explanatory (which contains useful comments too)
- The study plan is a great structure to guide your learning if you are on a tight schedule (from 2 weeks to months, your journey is all planned out)
- There are also lots of tips on the non-programming part of the interview, which is just as important IMHO
Last but not least, this book made me fall in love with algorithms and I start to write better code at work. Whether you are preparing for a job interview, you should give this book a read.
To begin, ALL FOUR of the books in this review are 5 star "superstars" for IT interviews. The two problems are, my library customers want to know the top two, and our Amazon shoppers want to know if they can get away with one, two, three, or if they have to buy all four! Of course the answer depends both on the focus of your resume, and the overlap/focus in the four books.
First, the summary, by author, title/Amazon link, year published/edition, number of pages, trim and cost, problems included, main language(s) foci. These four are the most frequently purchased by the over 100,000 libraries (including corporate technical libraries and schools as well as private and public) in our database. (Note: page counts are via visual inspection at the time of this writing, not Amazon stats. Pages can vary with on-demand books.).
Aziz, Elements of Programming Interviews: 300 Questions and Solutions by Aziz, Adnan, Prakash, Amit, Lee, Tsung-Hsien 1st (first) Edition (10/11/2012), 2012, 481 pages, 6 x 9, $25, 300 problems (mostly C++, concurrency in Java, discrete math in formulas and English)
McDowell, Cracking the Coding Interview: 150 Programming Questions and Solutions, 2011 (5th edition), 500 pages, 6 x 9, $23, 150 problems, (mostly all Java except of course the C, C++ question sections!)
Mongan, Programming Interviews Exposed: Secrets to Landing Your Next Job, 2013 (ed. 3), 301 pages, 7.4 x 9, $18, 150+ problems (C, C++, C#, Java)
All four of these fine prep texts cover the usual suspects in Algorithms and Data structures, including a focus on "scalable" problems of most concern to the Amazons, Googles, Facebooks, etc. of the world. These include recursion, arrays, lists, hash tables, binary searches and trees, and other foundation coding subjects.
All also cover the usual tricks, brain teasers, presentation problems, prep, process, etc. issues, and in the case of Cracking, specifics on many different company processes.
The divergence is in the "extras." Aziz jumps into parallel computing and covers discrete math (in grad school joke terms, all the computer oriented math that has been taken out of high school courses). McDowell has an unusually well written probability section. Guiness is very up to date with cross platform apps and concurrent programming nightmares, and goes into both more depth and detail on individual topics like big O notation. Mongan is published by wrox, and has not only technical editors, but outstanding web resources. His database section is the most robust of the group.
Aziz and McDowell are print on demand, which usually means there are many more errors in early going, but much faster correction of them via almost weekly files to the printer. Guiness is Wiley and bulletproof. We've tested the code extensively in all four (my payroy sister programmers, not me!) and ALL of them are outstanding, with very few errors at this writing, which can only get better fast in the two PODs, and wasn't a problem to begin with via the technically edited wrox and wiley teams.
Surprisingly, there is NOT a lot of overlap in solutions in these four texts, just as there IS a lot of overlap in the questions (strings, arrays, binaries, hashes... structures are structures and algos are algos). The difference in ALL these books (as opposed to a Cormen) is that the algorithm examples are not academic--they give you many options to "cheat" - and most of the cheats are more real world than techniques given in the 1,300 page algo function texts.
McDowell is the industry standard, but she teaches very much to Google, as does Aziz, meaning web focus, and even a little forgiveness on php, but NO forgiveness on memory or scalability. If you're a library client and have to pick two, we advise one from the McDowell/ Aziz dyad and one from the Guiness/ Mongan dyad. If you're applying for a job with a specific language requirement, these self sort, although of course all are object oriented today.
For shoppers preparing for a real interview: buy all four. I mean, come on. This is your future! You can get all four for the price you'd pay for a larger (way less useful) algo + data structure or individual language text, and maybe less. Some points about interview technique are common, but all four offer different and important examples in approaches to solutions, even though they share common algorithmic and data structure challenges.
IRONY: The only programming area growing faster than data scientist today is at the other end of the big scale spectrum: embedded systems. I kid you not, specialize in embedded, and you're GUARANTEED a dream job, both due to the explosion of these systems, and the rarity of programmers here (but yes, you have to get into circuits!). Our sister Payroy group shows job stats, demand and salaries that are to die for if you go there-- way better than Google. NONE of these books cover it (because other than mobile and server embeds, embedded was traditionally automotive and industrial, but even "Google and Microsoft TV" type ventures are now hungering for it).
There is NO good interview book out on embedded yet, but these two are the best of breed in the field itself: 1. Samek (Practical UML Statecharts in C/C++: Event-Driven Programming for Embedded Systems) and 2. White (Making Embedded Systems: Design Patterns for Great Software). Why C and C++? Because that's where the majority of electronics still reside, and "object" programmers in the field often just use the C subset of ++ and don't really get into sexy classes/methods/parents/kids, etc.! 6 months brushing up on this, specializing, and going for an embedded job will be worth years of competing with the interviews in these texts!!!
Now, a simple tip. I was part of a team that interviewed for a high level, very high paying digital art programming position at shader joes dot com. One candidate stood out as really technically challenged--she even confused a call with a register in one of her answers! She called herself an "autodidact" - meaning, unlike Yahoo, we can't be recruiting only from the 18 top schools.
At the end of her interview, she asked us to check out a disc she'd brought. She had programmed her own video game with movie-real characters, explosions, storyline, etc. using Unity, Maya, blastcode, Python, Lua and C#, with web distributions in Java, HTML 5 and php. She proceeded to explain her entire process, from idea to distribution. She was hired before she could reach the elevator. In olden-days, old timer parlance, don't forget your "portfolio" if you have one! It can trump a LOT of the bureaucratic hurdles!
EMAILERS ANSWER: IF you are a manager, rusty at coding, a data scientist, etc. and are in an interview where you have to "understand" coding basics, but not necessarily code, see our review of Karumanchi (Coding Interview Questions).
Library Picks reviews only for the benefit of Amazon shoppers and has nothing to do with Amazon, the authors, manufacturers or publishers of the items we review. We always buy the items we review for the sake of objectivity, and although we search for gems, are not shy about trashing an item if it's a waste of time or money for Amazon shoppers. If the reviewer identifies herself, her job or her field, it is only as a point of reference to help you gauge the background and any biases.
Most recent customer reviews
From theoretical derivation and providing practical coding samples.Read more