Elements of Programming Interviews: The Insiders' Guide (Anglais) Broché – 11 octobre 2012
|Neuf à partir de||Occasion à partir de|
Produits fréquemment achetés ensemble
Les clients ayant acheté cet article ont également acheté
Descriptions du produit
Présentation de l'éditeur
Get a PDF sampler of EPI from http://bit.ly/epi-sampler
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).
The core of EPI is a collection of 300 problems with detailed solutions, including over 100 figures and 250 tested programs. The problems are challenging, well-motivated, and accessible. They are representative of the questions asked at interviews at the most exciting companies.
The book begins with a summary of patterns for data structure, algorithms, and problem solving that will help you solve the most challenging interview problems. This is followed by chapters on basic and advanced data structures, algorithm design, concurrency, system design, probability and discrete mathematics. Each chapter starts with a brief review of key concepts and results followed by a deep and wide set of questions.
EPI concludes with a summary of the nontechnical aspects of interviewing, including common mistakes, strategies for a great interview, perspectives from across the table, negotiating the best offer, and much more.
"This book is the best compilation of programming related problems I have seen. It is a great resource for a diverse set of topics when preparing for technical interviews, as a quick refresher in a subject area or when you are just looking for a brain teaser to challenge yourself."
Shashank Gupta / Scaligent, formerly Engineering Manager, Amazon.com, Senior Engineering Manager, Yahoo!, Manager of Software Development, Cisco Systems
Biographie de l'auteur
Adnan Aziz is a professor at the Department of Electrical and Computer Engineering at The University of Texas at Austin, where he conducts research and teaches classes in applied algorithms. He received his Ph.D. from The University of California at Berkeley; his undergraduate degree is from Indian Institutes of Technology Kanpur.Amit Prakash is a founder of Scaligent, a Silicon Valley startup. Previously, he was a Member of the Technical Staff at Google, where he worked primarily on machine learning problems that arise in the context of online advertising. Before that he worked at Microsoft in the web search team. He received his Ph.D. from The University of Texas at Austin; his undergraduate degree is from Indian Institutes of Technology Kanpur. Tsung-Hsien Lee is a Software Engineer at Google. Previously, he worked as a Software Engineer Intern at Facebook. He received both his M.S. and undergraduate degrees from National Tsing Hua University. He has a passion for designing and implementing algorithms. He likes to apply algorithms on every aspect of his life.
Aucun appareil Kindle n'est requis. Téléchargez l'une des applis Kindle gratuites et commencez à lire les livres Kindle sur votre smartphone, tablette ou ordinateur.
Pour obtenir l'appli gratuite, saisissez votre adresse e-mail ou numéro de téléphone mobile.
Détails sur le produit
En savoir plus sur les auteursDécouvrez des livres, informez-vous sur les écrivains, lisez des blogs d'auteurs et bien plus encore.
Dans ce livre(En savoir plus)
Quels sont les autres articles que les clients achètent après avoir regardé cet article?
Commentaires en ligne
Meilleurs commentaires des clients
Commentaires client les plus utiles sur Amazon.com (beta)
This book has extensive interview problems with detailed solutions. It covers basic to advanced algorithm solving techniques. The book is very comprehensive and detailed - it is by far the largest collections of such problems that I know of. I really liked the fact that most problems have detailed programs which I could download complete versions of. The figures were also very helpful for me to understand some of the harder concepts.
Materials in later chapters which contain dynamic programming and graph algorithms make this book stands out among other interview books. These materials especially help readers to think critically when facing difficult programming problems with efficiency constraints.
I also purchased "Cracking the Coding Interview" for preparing for my interviews. Compared to that book, I found Elements of Programming Interviews to be better preparation for the questions I was asked at the on-site interviews. Cracking the Coding Interview had more basic questions, the kind I was asked in phone screening and on-campus interviews.
I am very fond of algorithms, and, just like Keith wrote in his review, Elements of Programming Interviews nicely supplements traditional algorithm textbooks which lack of practical examples.
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.
Basically this book contains a set of programming problems to warm you up for a job interview. There are many other job hunting books too, so what makes this one special?
I would say it has the following advantages:
0. Smart algorithms and solutions. Better than many other resources you could find.
1. Challenging problems, making it useful for preparing top companies interviews.
2. Source code website. We can actually run the code and compare it with ours. Often, I first write my own program and test it with their driver program.
3. High quality C++11 code with very few bugs. It helped me to refine my coding skills and styles.
4. Study guide. Very helpful for iterative studying.
5. Book chapter organization. It is both detailed and close to complete.
6. Good coverage of recent algorithms.
Let me elaborate a bit.
Taking item 0, Smart algorithm and solutions as an example:
If you have prepared for job interviews just a bit, you may know there is a frequent question for "designing a Stack with Max/Min operations". I solved the problem by myself and after comparing my solution with other resources, I thought mine is optimal - until I saw the solution from this book. It is more space efficient by storing the frequency information.
Another example is the "Permutation Problem". Before I read the book, I already had a decent solution. But the "swap based" solution in this book is simply more elegant and more flexible for solving other problems.
This kind of "Ah-ah" moments comes quite often when I read the book.
Taking item 6, Good coverage of recent algorithms as another example:
If you read the the Hashing chapter of the book, You will notice that it covers the "Min-hash" algorithm. This is quite surprising to me as it is a new algorithm in the document/image search area. I know it because I did my research on the topic. I'd never expect it to appear in an interview book.
To summarize, this is a well organized and supported book for learning CS problem solving. The high quality solutions presented in this book will definitely help us to impress interviewers. I think it is the most useful resource for preparing job interviews.
Other than interview preparation, we can learn a lot other practical skills/knowledge from the book too.
Finally, here is my personal advice about how to use the book: the book's study guide is your good friend. Because the book contains some quite hard problems, following the guide will make your learning more efficient.
These problems would help you understand what is asked at interviews. Although the questions at the interview may not be exactly from the book, the book questions are very similar to those I have seen. I believe reading the book helps me stay calm and solve those questions because it helps me get used to thinking of challenging problems. I really like how the book teaches me to apply the same basic problem solving patterns again and again to conquer problems. If your goal is to work at a prestigious company, you should definitely read these examples before interview. In my experience, without the right preparation it is very hard to even know how to start answering their questions.
Almost each solution includes source code. This code has saved me lots of time. As Knuth said "It has often been said that a person does not really understand something until he teaches it to someone else. Actually a person does not really understand something until after teaching it to a computer." You cannot persuade interviewers that you really understand it unless you could code it correctly. Especially if your first question is data structure problem, you should code a correct and efficient solution quickly and elegantly. It's a pity if you know how to solve a problem but cannot code it when interviewing at your dream company.
I am passionate about programming and the book stimulated my mind a great deal. I like how the authors explain algorithms, and this made me want to keep reading. It was never a burden to work through the book.
I think this book would help lots of people who want to be a software engineer at the best companies and highly recommend you to buy one.
Bought this book after my sister told me about it. The first four chapters looked pretty broad yet informative but somehow I wasn't impressed in the beginning. It was towards the end of the 5th chapter that things got super interesting and I got glued to the book. I consider myself a fairly experienced developer but after working on some of the questions and especially after looking at the solutions, I realized that there are much smarter ways to solve problems. I was looking at geeksforgeeks and careercup questions earlier but was never confident that I had covered all the topics. But after going through the book and after solving the problems I got this immense confidence that I now am better equipped with solving any complicated interview question (yet to be tested : ) but I am definitely a lot more confident than I was before).
Each question is very well thought out and definitely the solutions are one of the smartest ways to code/solve. I was blown away by some of the elegant solutions in the book. I would recommend trying to solve the questions on your own first without looking at the solution at all and then spend time comparing the approach. I specifically like the way the complexity of the topics grows gradually across chapters and also within each chapter.
Also, the book covers almost all sorts of problems that a typical company like google/facebook would ask - ranging from primary data structures to applications of bsts(I didnt know such complex problems could be solved just with bsts) , basic and indepth problems on greedy and dynamic programming and entire set of chapters dedicated to graphs/P vs NP and probability/discrete math. The authors have done an excellent job of making sure that you don't get lost in reading the theory(like in Cormen or other similar books). But instead they focussed primarly on problem solving as such.
I haven't come across any other book on the market that is so comprehensive and most importantly provides a base reference in terms of problems/solutions and the approach to various types of subtle problems. I seriously cannot think of any negatives in the book at all. This book truly does more than 100% justice to its title!