

Buy anything from 5,000+ international stores. One checkout price. No surprise fees. Join 2M+ shoppers on Desertcart.
Desertcart purchases this item on your behalf and handles shipping, customs, and support to Nicaragua.
This is the C++ version of our book. See the website for links to the Java version, as well as to a version that uses larger fonts . 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 ? If so, you need to read Elements of Programming Interviews (EPI). EPI is your comprehensive guide to interviewing for software development roles. The core of EPI is a collection of over 250 problems with detailed solutions. The problems are representative of interview questions asked at leading software companies. The problems are illustrated with 200 figures, 300 tested programs, and 150 additional variants. The book begins with a summary of the nontechnical aspects of interviewing, such as strategies for a great interview, common mistakes, perspectives from the other side of the table, tips on negotiating the best offer, and a guide to the best ways to use EPI. We also provide a summary of data structures, algorithms, and problem solving patterns. Coding problems are presented through a series of chapters on basic and advanced data structures, searching, sorting, algorithm design principles, and concurrency. Each chapter stars with a brief introduction, a case study, top tips, and a review of the most important library methods. This is followed by a broad and thought-provoking set of problems. 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 Review: Great book to keep around even not for interviews - I bought this book recently to prepare for an interview at one of the top tech companies. I have a PhD in CS and have been working in the industry for over 5 years. I did not get an offer, but hear me out why I would still give this book 5 stars. I have a few other technical interview prep books. The other decent one is Cracking the Code Interviews. Don't waste your time on the rest. In comparison, Cracking the Code Interview has easier problems and less coverage. As of this writing (July 2015) I would rank this book #1 among them all. There are a few reasons why this book stands out. Breadth This book is organized into chapters each focusing on a specific area of algorithms and data structures. It has great coverage on practically all areas which may be asked in an interview. Each chapter starts with some review materials, while short, they are to the point and often contains tips and key insights for that particular area. I recommend reading them thoroughly even if you are already familiar to the material. Depth What I like is the depth of the problems. When I first pick up this book, I could only solve two to three problems in a day. But as time goes by and with practice, the pace gets faster. The problems are challenging, especially ones in the dynamic programming and later chapters. While the problems are challenging, the actual implementations are generally not long, usually with 20-30 lines of code. Each of the questions are accompanied with clear explanations and complete source code, often with multiple solutions. The pros and cons of each solution is discussed. Other Features Each problem is often given with a short paragraph of explanation that provides a context relevant to the question and with each question, the page number of the solution is also listed. I especially like the tips feature of this book. It's clear that the authors really thought about the actual interview situation. It's close to what an actual interview is like, when the interviewee is stuck, the interviewer usually provides a tip. I recommend the readers to take advantage of this feature before looking for the solutions. For a book of this kind of breadth and depth, it has surprisingly few errors. The book companion web site is also active with questions and answers. I posted some questions and one of the author Tsung-Hsien Lee replied to my questions very quickly. Each person's interview preparation is different because everyone has their strength and weaknesses. This book was part of my preparation, but looking back I probably didn't put enough weight into practice the problems in this book. That's why I would not blame the book for my failed interview. While I succeeded in defining the algorithm, I failed at finishing the code in time, clearly due to lack of coding practice. Indeed, if one prepared an interview with this book and solve the problems to their full extend (from algorithm to coding and to analysis), it's hard to imagine not to succeed in any technical interview of reasonable length (i.e. 1 hour per interviewer). In fact, comparing the actual interview questions I faced, they are surprisingly easy compared to those in the book. The key to use this book properly is practice solving the problems with writing actual code. Even now after my interviews, I feel this book is still very valuable to keep around. Often we don't solve enough variety of problems in our actual day to day work. It's good practice to solve some of the problems in the book once in a while to refresh the mind. While many interview problems have little practical use, they do exercise our mind in an unconventional way and allow us to see problems from different angles. For my next interview, I'm confident that I'll be much better prepared because of this book. I highly recommend this book to anyone who's truly interested in computer science. Review: Exhaustive coverage - Updated review My old review was based on version 1.1 of this book. I am writing an updated review based on version 1.4 and keeping the old review for historical purposes. What I liked in version 1.4 over version 1.1: * 1.4 is better organized with Table Of Contents listing all the questions. * Interview preparation strategies is moved to the front of the book. * There is a section for hints. This is useful as it gives an incentive to think more before looking at the answer. * Java source code for solutions available online for those who prefer Java over C++. (The code is organized and can be found at book's site) * Array and Strings are broken down into 2 chapters and adds to better organization. What this book provides: This book provides an exhaustive question bank covering different types of question which could be potentially asked in an interview. This is what differentiates this book from other programming interview books. More questions we practice, more better we get at recognizing patterns in problems and in selecting the optimal data structure and algorithmic approach. Interview tips and strategies provided in this book are also very useful. A game plan is given with which all problems to practice for certain scenarios starting from 3 day hackathon to 4 month term project. In my personal opinion, 4 month term project would be the best use of this book especially when it's been a while since you interviewed and are problem solving skills are a bit rusty. So start preparing early :) Also there are some difficult problems called 'Ninja problems' which wouldn't be usually asked in interviews as it'd take more time to solve but would be a good practice for online programming challenges. I've seen some companies especially startups taking that route to screen candidates. What this book does not provide: This book does not aim to give step by step explanation for solutions. Some other programming interview books like the classic Programming Interviews Exposed: Secrets to Landing Your Next Job provides more detailed explanations for the solutions. But that is not the problem this book tries to solve in the first place. I am not saying not providing detailed explanations for solution is a con but just saying that this book does not intend to do that nor does it intend to be substitute for an algorithms textbook. if you are really rusty, read the PIE book first and this come to this and you'll find this book more valuable. Diving straight into this book when being rusty would be a bit overwhelming. Cons: Though this book was largely useful, I did find one thing a little annoying. Reading the solutions sometimes made me wonder if they were trying to play code golf while writing the solutions. I don't remember the exact question numbers but for many questions I felt brevity took precedence to clarity. Doing many stuff in a single line of code by chaining statements is 'cool' but a bit frustrating when we are trying to understand a solution in a time crunch. I would have given this book 4.5/5 for this but I'm giving this book 5/5 since desertcart does not allow fractional rating. And maybe I'll add in the 0.5 for the authors who were took the feedback from my previous review seriously and were responsive to my communications. :) Bottom line: Most exhaustive question collection. Great strategies and game plan section. Very useful interview prep book. ____________________________________________________________________________________________________________________________________ Old review This book should be named Elements of "C++ 11" Interviews. The questions are great(+1 star) but the solutions are specific to C++ 11. Any book which claims to be about algorithms should try to be multi-lingual or language agnostic so as to cater to a larger audience. C++ is not my first language and that doesn't mean I don't know to program. The authors seem to make an assumption that C++ == programming. I found Java source code in the author's Github but that was unorganized. Would have been better if the code was organized chapter wise. I will have to search through the whole dump of source code for what I want. As others have commented, unnecessarily the book is math heavy at times. Seems to be aimed at new grads from MIT or Stanford and not for the common programmer(Oh well, if they are from MIT why do they need this book anyways). -4 stars for this. The chapters on 'Getting Ready' and 'Strategies for a Great Interview' are useful. +1 star for this. In total 3 starts. Keep away from this book unless you are a C++ 11 expert.
| Best Sellers Rank | #1,161,512 in Books ( See Top 100 in Books ) #174 in Discrete Mathematics (Books) #243 in C++ Programming Language #3,760 in Computer Software (Books) |
| Customer Reviews | 4.6 out of 5 stars 1,004 Reviews |
L**S
Great book to keep around even not for interviews
I bought this book recently to prepare for an interview at one of the top tech companies. I have a PhD in CS and have been working in the industry for over 5 years. I did not get an offer, but hear me out why I would still give this book 5 stars. I have a few other technical interview prep books. The other decent one is Cracking the Code Interviews. Don't waste your time on the rest. In comparison, Cracking the Code Interview has easier problems and less coverage. As of this writing (July 2015) I would rank this book #1 among them all. There are a few reasons why this book stands out. Breadth This book is organized into chapters each focusing on a specific area of algorithms and data structures. It has great coverage on practically all areas which may be asked in an interview. Each chapter starts with some review materials, while short, they are to the point and often contains tips and key insights for that particular area. I recommend reading them thoroughly even if you are already familiar to the material. Depth What I like is the depth of the problems. When I first pick up this book, I could only solve two to three problems in a day. But as time goes by and with practice, the pace gets faster. The problems are challenging, especially ones in the dynamic programming and later chapters. While the problems are challenging, the actual implementations are generally not long, usually with 20-30 lines of code. Each of the questions are accompanied with clear explanations and complete source code, often with multiple solutions. The pros and cons of each solution is discussed. Other Features Each problem is often given with a short paragraph of explanation that provides a context relevant to the question and with each question, the page number of the solution is also listed. I especially like the tips feature of this book. It's clear that the authors really thought about the actual interview situation. It's close to what an actual interview is like, when the interviewee is stuck, the interviewer usually provides a tip. I recommend the readers to take advantage of this feature before looking for the solutions. For a book of this kind of breadth and depth, it has surprisingly few errors. The book companion web site is also active with questions and answers. I posted some questions and one of the author Tsung-Hsien Lee replied to my questions very quickly. Each person's interview preparation is different because everyone has their strength and weaknesses. This book was part of my preparation, but looking back I probably didn't put enough weight into practice the problems in this book. That's why I would not blame the book for my failed interview. While I succeeded in defining the algorithm, I failed at finishing the code in time, clearly due to lack of coding practice. Indeed, if one prepared an interview with this book and solve the problems to their full extend (from algorithm to coding and to analysis), it's hard to imagine not to succeed in any technical interview of reasonable length (i.e. 1 hour per interviewer). In fact, comparing the actual interview questions I faced, they are surprisingly easy compared to those in the book. The key to use this book properly is practice solving the problems with writing actual code. Even now after my interviews, I feel this book is still very valuable to keep around. Often we don't solve enough variety of problems in our actual day to day work. It's good practice to solve some of the problems in the book once in a while to refresh the mind. While many interview problems have little practical use, they do exercise our mind in an unconventional way and allow us to see problems from different angles. For my next interview, I'm confident that I'll be much better prepared because of this book. I highly recommend this book to anyone who's truly interested in computer science.
R**K
Exhaustive coverage
Updated review My old review was based on version 1.1 of this book. I am writing an updated review based on version 1.4 and keeping the old review for historical purposes. What I liked in version 1.4 over version 1.1: * 1.4 is better organized with Table Of Contents listing all the questions. * Interview preparation strategies is moved to the front of the book. * There is a section for hints. This is useful as it gives an incentive to think more before looking at the answer. * Java source code for solutions available online for those who prefer Java over C++. (The code is organized and can be found at book's site) * Array and Strings are broken down into 2 chapters and adds to better organization. What this book provides: This book provides an exhaustive question bank covering different types of question which could be potentially asked in an interview. This is what differentiates this book from other programming interview books. More questions we practice, more better we get at recognizing patterns in problems and in selecting the optimal data structure and algorithmic approach. Interview tips and strategies provided in this book are also very useful. A game plan is given with which all problems to practice for certain scenarios starting from 3 day hackathon to 4 month term project. In my personal opinion, 4 month term project would be the best use of this book especially when it's been a while since you interviewed and are problem solving skills are a bit rusty. So start preparing early :) Also there are some difficult problems called 'Ninja problems' which wouldn't be usually asked in interviews as it'd take more time to solve but would be a good practice for online programming challenges. I've seen some companies especially startups taking that route to screen candidates. What this book does not provide: This book does not aim to give step by step explanation for solutions. Some other programming interview books like the classic Programming Interviews Exposed: Secrets to Landing Your Next Job provides more detailed explanations for the solutions. But that is not the problem this book tries to solve in the first place. I am not saying not providing detailed explanations for solution is a con but just saying that this book does not intend to do that nor does it intend to be substitute for an algorithms textbook. if you are really rusty, read the PIE book first and this come to this and you'll find this book more valuable. Diving straight into this book when being rusty would be a bit overwhelming. Cons: Though this book was largely useful, I did find one thing a little annoying. Reading the solutions sometimes made me wonder if they were trying to play code golf while writing the solutions. I don't remember the exact question numbers but for many questions I felt brevity took precedence to clarity. Doing many stuff in a single line of code by chaining statements is 'cool' but a bit frustrating when we are trying to understand a solution in a time crunch. I would have given this book 4.5/5 for this but I'm giving this book 5/5 since Amazon does not allow fractional rating. And maybe I'll add in the 0.5 for the authors who were took the feedback from my previous review seriously and were responsive to my communications. :) Bottom line: Most exhaustive question collection. Great strategies and game plan section. Very useful interview prep book. ____________________________________________________________________________________________________________________________________ Old review This book should be named Elements of "C++ 11" Interviews. The questions are great(+1 star) but the solutions are specific to C++ 11. Any book which claims to be about algorithms should try to be multi-lingual or language agnostic so as to cater to a larger audience. C++ is not my first language and that doesn't mean I don't know to program. The authors seem to make an assumption that C++ == programming. I found Java source code in the author's Github but that was unorganized. Would have been better if the code was organized chapter wise. I will have to search through the whole dump of source code for what I want. As others have commented, unnecessarily the book is math heavy at times. Seems to be aimed at new grads from MIT or Stanford and not for the common programmer(Oh well, if they are from MIT why do they need this book anyways). -4 stars for this. The chapters on 'Getting Ready' and 'Strategies for a Great Interview' are useful. +1 star for this. In total 3 starts. Keep away from this book unless you are a C++ 11 expert.
A**R
Superb self-study reference! Interviewing at a top firm? Get this book.
This is a great book. Rather than repeat what others have already said, I'll summarize what makes the book stand out: First, the book is well organized, well indexed, and professionally typeset using LaTeX. That last point is important: it means that the math in the book is readable and done right. (And when you buy a book like this one, you *want* authors who care enough about the math to do it right.) Second, the book goes deep. Top firms ask harder, deeper questions. This book has the depth to prepare you for them. It starts out with easy problems, slowly increases the difficultly level, and then keeps on going. Where other books stop, this one has plenty more to go, taking you into grad-school territory. Third, the advice offered about interviewing and negotiating -- subjects that many candidates find worrying -- is clear, easy to follow, and consistent with the best advice I've ever heard. Solid gold. Fourth, the book distills a massive amount of knowledge into a small number of pages without being rushed, patchy, or confusing. Even without the wonderful problem sets, each chapter is a gem of compressed knowledge, a self-contained micro-course on an important subject area. Finally, it's more than an interview-prep book. It's a great reference. You can use it as a refresher course, a comp-sci boot camp, or a library of code samples. It's fun to just flip to a random problem, solve it, and then see how the authors solved it. I learned a lot that way. Again: This is a great book. If you care enough about your algorithmic problem-solving skills to have read my review this far, you're probably the kind of person who would love this book. (Just get it already.)
N**N
Best Book That's Out There!
This is it. If you've read Cracking The Coding Interview, Programming Interviews Exposed, et al and felt the sting of dissatisfaction bordering on betrayal as you wonder why the phone interview seemed like a cakewalk but the on-site threw you a curve ball, then you should know you're missing something: and it's this book! You've got to buy this book to let it speak for itself! I fell in love with version 1.3.1 and I now have the latest 1.4 which is arguably many times better! Here's why this book stands out: It's succinct: the no-nonsense to-the-point approach of the book is refreshingly pleasant and stimulating: not only because it comes as a relief after reading verbose solutions to the classical problems that sometimes help but often times beat around the bush, but also because the laconic approach used here will help you think clearly in a purely logical manner. The mathematical notation helps in keeping short the arguments behind the various approaches to solving a problem. It's essentially a rich assortment of problems: My point is that sooner or later we all become familiar with the classical questions, the check BST property in a binary tree, find the maximum sum subarray, search for the longest common subsequence etc : and if you don't, then there's always Introduction To Algorithms and abundant sources on the Internet which are hard to miss should you ever find yourself preparing for a technical software engineering/programming interview! But to save you all the trouble of finding NEW tricky problems that make you think or go "aha" when you look at the solutions: the authors have done a brilliant job at that here. Compact Code: Kernighan and Ritchie gave one of the best pieces of advice when they said in their book on C that the most effective way to improve your coding abilities is to look at other people's code! Follow that advice when you read this book and you'll find yourself learning a great deal and enriching yourself with many techniques and insights on how to write compact code. I program in Java, and though this book has solutions in C++, I must mention I have learned a lot nevertheless! And the good news is that all solutions in Java are now available on the website. Brilliant organization, no BS writing style, and a logical hierarchical way of coming up with a solution, this is undeniably the best book currently out there. To cut the long story short: this is a must have if you're genuinely trying to learn the tricks of the trade when it comes to coding interviews. From the very casual and high-level to the detailed and challenging Google-like interviews, buy this if you wanna get somewhere!
T**O
A must have, but not the ultimate go-to source
I bought 3 books to prepare for my interview: Cracking the Coding Interview, Programming Interviews Exposed, and Elements of Programming Interviews. All three books are a must have for coding interviews. EPI (Elements of Programming Interviews) is great in that it has a ton of problems to solve at all different difficulties. Unfortunately I hate the format where they put the hint and answer right below the question - I absolutely do not want to see the hint or answer right after reading the problem and not having a chance to solve it first. I have to be ultra careful to cover the hint and the answer and close the book immediately after reading the problem. EPI also reads a little more like a text book and is less engaging than the other two. Programming Interviews Exposed has the same format with less questions and more friendly and engaging for someone new to coding questions. Cracking the Coding interview has the problems in the front, and the problems restated + answers in the back which is what I prefer and is my first choice and favorite. Ultimately getting all three would be a good idea. With EPI all you are getting an extensive list of problems and their solutions, which comes in handy when you complete the other two books.
P**Z
GETTING THE DREAM JOB... Comparing the Top 4 IT Interview Books
I worked with the data science association on their new standards for "Data Scientist" interviews (entry salary of $125,000), and both real questions and after interview polls were included for the biggest names in data today, from the web to corporate and government IT. "Data Scientist" is one of the hottest new jobs out there today, and some companies are even forming CDSO jobs--Chief Data Science Officer! 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!) Guiness, Ace the Programming Interview: 160 Questions and Answers for Success , 2013, 419 pages, 6 x 9, $20, 160 problems, (mostly Java and C# but some unusual JavaScript, SQL, Ruby and Perl examples too) 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.
B**E
Unquestionably the best book for software engineering interview problems.
The book is definitely the better of the three popular books on programming interviews which includes Cracking the Coding Interview, Programming Interviews Exposed and this book. Though I didn't get an offer from Google, with this book and pretty casual preparation (1hr a day for about a month) I was able to easily pass the phone interviews and get to the on-site stage. I later received offers from other companies, and this book definitely contributed to that. However, this book is hardly perfect, rather it's just superior to the other books. My issues with the books are: 1. Most college and universities no longer teach C, meaning most people who probably need this book the most are not fluent in the code this book presents, which is fine, I suppose you could just learn C specifically to read this book, but nevertheless this is one advantage that Cracking the Coding Interview has over this book. Java code is just significantly easier to read. They are making a Java version of this book so this issue will soon be irrelevant. 2. The naming of variables isuninformative. I know this is done probably for space reasons, but still, the way many of the variables are named makes it more difficult to read as you have to go back to remind yourself of what representative value that variable actually holds. Moving to two or three character variable names, with comments showing what they do before the solution will make the code easier to understand, and consequently, the book more useful. 3. Though I really enjoyed the fact that this book had a lot of questions, it would be more useful to have more detailed explanations and less questions, honestly. Given that an average person isn't going to complete (nor do they need to in order to get an offer at a big company) all of the questions, having more detailed explanations and less self referencing to other solutions will make the book more useful. Each solution should be as decoupled as possible from other solutions. In the case that this is unavoidable, those questions should be presented in sequential order. There are a few more issues I have with the book which are relatively minor, so I won't discuss them, but I do think this book is one of the better ones. For those reading, I did not go to a school which frequently sends people to Google/Facebook/Microsoft, so I hope that puts how much this book helped me into perspective. Finally, some advice on the best way to use this book: 1. I have found doing a single question per day and having complete mastery/understanding of the question and all variants of the problem to be far more useful than the schedule(s) they provided near the beginning of the book. Mainly because there are two scenarios for readers using this book: if they are in school they do not have time to follow the schedule presented, lest they reduce sleep, studying, etc. For working professionals, doing the schedule presented in the book (the semester long) will result in not enough question coverage. 2. When you do work on a question, I found it most effective to not go on to the next question until you have complete understanding of the solution and after a single day you should be able to reproduce the solution after reading the problem in less than 30 minutes. However it's also important that you not just memorize the solution (though, to be honest, if you were capable of memorizing all of the solutions and questions of this book you probably able to get offers from any company that you choose trivially). Anyway, that's it for my review, please leave comments if you have questions.
K**S
Must buy for those who are planning to do coding interviews with software firms
I am a full time software engineer and have interviewed with big software companies in the past. I am not planning to switch to another job at this time but bought this book just for intellectual curiosity and found it interesting and useful. It's interesting because problems are nicely categorized in topics and range in various difficulty levels. Those problems are likely to be asked during phone or onsite interviews therefore it's important to work on your own solutions first without peeking at provided ones. That way you can later compare your solutions against authors' solutions and see where yours differ from optimal ones. Being able to bridge that gap is one of the key skills for acing interviews because you will constantly be asked to improve your solutions (in terms of space and time) by interviewers. Jumping right ahead to provided solutions and trying to memorize them will not help you grow that skill, and you might not do well during the actual interviews. The book is useful because you can get a sense of what coding questions will be asked within a relatively short period time. If you had unlimited preparation time then you could go through, say, all the TopCoder problems and be a master of problem solving, but that would be unrealistic. Whenever looking for a job, whether fresh from school or considering switching from a current job, you will be bound to do some time management between interview prep and day-to-day work. Then this book is right for you; because the book has a reasonable collection of coding questions once you work it though then you will be able to get a "common denominator" + extra coverage of more advanced problems under your belt. I feel that going through one book is more time efficient rather than randomly picking interview questions on the web and trying to be prepared on your own. I highly recommend this book to those who are planning to interview with software firms where interview process involves some type of coding questions. It's also helpful to read chapters on other aspects of interview process besides coding questions. I believe that the book increases your chance of getting a job that you want.
B**O
Got me into Microsoft
This book is what got me into Microsoft. A must have for software engineers looking to join a Big Tech company. I surely can also help you join smaller companies as well, and sharpen your basic algorithmic skills!
C**S
Worth every penny
When apply to one of the big four companies, this was an invaluable resource. There are others, one in particlar, but the format in this is more consumable to me. Also you can have one that focuses on C++ or Python solutions instead of Java, which is more approriate to some people and companies. This is no 'light read' or walk in the park. After some brief intro chapters its basically a compendium of puzzles in different topics, plus solutions. The text is quite small too but you get more in the book that way. Compared to a certain other book, I prefer the way this one explains the solution and has it in the same place, instead of in an appendix at the back. You shouldn't just go straight to the solution though so read the Q, go code and compare the result to theirs. Then figure out why theirs is better :-). If you are applying for a job at one of the big techs, you shouldn't be worried about spending dosh on books like this - good investment and I prefer the real hard copy... Good luck with you interview.
A**R
Muy práctico
La estructura de este libro es sencilla y hace muy fácil que el lector se "lance" a la práctica estructurando todo el contenido por temas, como pueden ser arrays, listas, árboles binarios, diversos tipos de algoritmos, etc. cada uno en su propio capítulo. Estamos, antes de nada, ante un libro de problemas con solucionario incluído. El lenguaje de programación elegido es C++ (incorporando las adiciones del estándar C++11). Se asume que el lector tiene una cierta formación previa en estructuras de datos y algoritmos. A grandes rasgos: - Primeramente hay una serie de capítulos introductorios, sobre las entrevistas típicas para los puestos de trabajo relacionados con el diseño e implementación de software, consejos de índole general, formas de plantear los problemas a alto nivel y algunas sugerencias no ya para entrevistados, sino para entrevistadores. En particular, se aconseja sobre temas como qué tipo de preguntas plantear de forma que se pueda distinguir a los mejores candidatos y no al que tiene la "idea feliz" respecto a un enreversado problema, examinar al entrevistado en distintos campos y evitar que haya un único punto de fallo en la prueba de selección (un mal día lo puede tener cualquiera) - En el capítulo 4, se exponen una serie de estrategias de resolución de problemas, separadas entre aquellas referentes con las estructuras de datos, algortimos y análisis abstracto de problemas, además de una breve reseña sobre análisis de complejidad. Este capítulo sirve como una presentación del resto del libro, puesto que cada estructura de datos o algoritmo mencionado en general tendrá su correspondiente selección de problemas. A partir de aquí llegamos al plato fuerte: los problemas. Éstos tienen una dificultad variada, siendo algunos de ellos categorizados como difíciles (ninja) o muy difíciles (black ninja) por medio de un icono. - Los siguientes capítulos se centran en distintos tipos de estructuras de datos: arrays, listas, pilas, colas, árboles de búsqueda, heaps, tablas hash. Se proponen numerosos problemas relacionados con el diseño y uso de estas estructuras de datos, para cumplir un determinado cometido, o para soportar alguna operación adicional de forma eficiente, etc. - Además se intercalan capítulos dedicados específicamente al desarrollo de cierto tipo de algoritmos, de especial importancia, sobre estas estructuras, como puede ser la búsqueda en arrays o la ordenación en base a distintos criterios de estructuras de datos. Todos los problemas vienen acompaados de su correspondiente solución. De hecho, excluyendo al índice, la sección de soluciones representa más del 60% del total del libro. Además, en los capítulos introductorios se sugiere una estrategia de estudio, en base al tiempo disponible: 3 días, 7 días, 1 mes o 4 meses, consistente en una selección de problemas a resolver con exactitud (escribiendo y probando código) y otro conjunto de problemas sobre los cuales escribir un pseudocódigo. También puede seguirse esta tabla como una estrategia de progreso incremental, resolviendo los problemas "líder" de cada capítulo para así refrescar la memoria sobre todos los contenidos tratados en el libro, para después profundizar iterativamente con unos cuantos problemas más en cada sección. La amplitud de contenidos, y el estilo directo y eminentemente práctico de este libro, además del hecho de contener soluciones para todos los problemas lo hace muy recomendable tanto para todas aquellas personas que deseen consolidar sus conocimientos sobre la materia tratada como para preparar una entrevista de trabajo en puestos de trabajo relacionados con el diseño e implementación de software. Con un libro así, no hay excusa para no practicar.
B**U
I love this book very much!
I love this book very much! It helped me to keep confidence in my interview and pushed my programming skill to the next level. If you are a C++ developer and looking for a Google or Amazon position, read this book! It is the best C++ interview book you must have! And if you are a Java developer, I highly recommend you to read another book Elements of Programming Interviews in Java: The Insiders' Guide! Almost the same content, but executed by Java plus three new chapters: Language Questions, Object-Oriented Design and Common Tools. The last thing I have to point it out: the C++ edition it is easy to carry like a handbook and the Java edition it is comfortable to read like a textbook! Good luck!
S**E
Everything you need to know
I have prepared technical interviews (both as interviewer and interviewee) using this incredible book. I have to admit it is extremely fluent! You can immediately take effective advice from the very first pages and then find later on plenty of examples of programming questions with solution. I personally appreciated the intention of letting the reader discover the solution: not simply explain the path to a correct answer but most importantly concentrate on how make your brain move across different topics that you potentially ignore. All solutions are sprouting with take aways and brilliant hints that are fixing in your memory new ways to approach coding challenges. I strongly recommend this book to both recruiters and candidates: not only you will find modern coding challenges of nowadays interviews but also a great book to learn and grow.
Trustpilot
2 weeks ago
2 weeks ago