

desertcart.com: Elements of Programming Interviews: The Insiders' Guide: 9781479274833: Adnan Aziz, Tsung-Hsien Lee, Amit Prakash: Books 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 | #129,568 in Books ( See Top 100 in Books ) #8 in Discrete Mathematics (Books) #29 in C++ Programming Language #263 in Computer Software (Books) |
| Customer Reviews | 4.6 4.6 out of 5 stars (998) |
| Dimensions | 6 x 1.21 x 9 inches |
| Edition | 2nd |
| ISBN-10 | 1479274836 |
| ISBN-13 | 978-1479274833 |
| Item Weight | 1.65 pounds |
| Language | English |
| Print length | 534 pages |
| Publication date | October 11, 2012 |
| Publisher | CreateSpace Independent Publishing Platform |
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.
B**O
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
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
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! 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
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.
ترست بايلوت
منذ شهرين
منذ شهر