Before you buy this book, please first head over to our sample page - elementsofprogramminginterviews.com/sampleThe sampler should give you a very good idea of the quality and style of our book. In particular, be sure you are comfortable with the level and with our Java coding style.Complete programs are available at epibook.github.io.Since different candidates have different time constraints, EPI includes a study guide with several scenarios, ranging from weekend Hackathon to semester long preparation with a recommended a subset of problems for each scenario. All problems are classified in terms of their difficulty level and include many variants to help you apply what you have learned more widely.All problems includes hints for readers who get stuck. This simulates what you will face in the real interview.The version being sold by Amazon itself is always current. Some resellers may have older versions, especially if they sell used copies. "A practical, fun approach to computer science fundamentals, as seen through the lens of common programming interview questions." Jeff Atwood / Co-founder of 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 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 150 figures and 300 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 includes 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. The inside story All three of us successfully made it through the Google interview process, and went on to work at Google , where, among other things, we interviewed candidates for our teams. We have complementary backgrounds (large company, startup, academia) and have held multiple roles (tech lead, CTO, consultant, professor), that gives us unparalleled insight into the job market. In addition to Google, some of the other places we have worked at include Facebook , Uber, Microsoft , IBM , and Qualcomm . About the authors We co-developed algorithms and systems that are used by over one billion people everyday . We have extensive experience with interviewing candidates, making hiring decisions, and being interviewed. Adnan Aziz is a Research Scientist at Facebook . Previously, he was 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 PhD from The University of California at Berkeley ; his undergraduate degree is from the Indian Institute of Technology at Kanpur . Tsung-Hsien Lee is a Staff Software Engineer at Toyota Research Institute . Previously, he worked at Facebook, Google, and Uber . He received both his MS 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.He takes special pride in helping to organize Google Code Jam 2014 and Google Code Jam 2015 . Amit Prakash is a co-founder and CTO of ThoughtSpot , 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 we