Manning Publications, 2024. — 472 p. — (Final Release). – ISBN 978-1633439108.
The system design interview is one of the hardest challenges you’ll face in the software engineering hiring process. This practical book gives you the insights, the skills, and the hands-on practice you need to ace the toughest system design interview questions and land the job and salary you want.
In Acing the System Design Interview you will master a structured and organized approach to present system design ideas like:Scaling applications to support heavy traffic
Distributed transactions techniques to ensure data consistency
Services for functional partitioning such as API gateway and service mesh
Common API paradigms including REST, RPC, and GraphQL
Caching strategies, including their tradeoffs
Logging, monitoring, and alerting concepts that are critical in any system design
Communication skills that demonstrate your engineering maturity
Don’t be daunted by the complex, open-ended nature of system design interviews! In this in-depth guide, author Zhiyong Tan shares what he’s learned on both sides of the interview table. You’ll dive deep into the common technical topics that arise during interviews and learn how to apply them to mentally perfect different kinds of systems.
Purchase of the print book includes a free eBook in PDF and EPUB formats from Manning Publications.
Foreword by Anthony Asta, Michael D. Elder.
About the technologyThe system design interview is daunting even for seasoned software engineers. Fortunately, with a little careful prep work you can turn those open-ended questions and whiteboard sessions into your competitive advantage! In this powerful book, Zhiyong Tan reveals practical interview techniques and insights about system design that have earned developers job offers from Amazon, Apple, ByteDance, PayPal, and Uber.
About the bookAcing the System Design Interview is a masterclass in how to confidently nail your next interview. Following these easy-to-remember techniques, you’ll learn to quickly assess a question, identify an advantageous approach, and then communicate your ideas clearly to an interviewer. As you work through this book, you’ll gain not only the skills to successfully interview, but also to do the actual work of great system design.
What's insideInsights on scaling, transactions, logging, and more
Practice questions for core system design concepts
How to demonstrate your engineering maturity
Great questions to ask your interviewer
About the readerFor software engineers, software architects, and engineering managers looking to advance their careers.
About the authorZhiyong Tan is a manager at PayPal. He has worked at Uber, Teradata, and at small startups. Over the years, he has been in many system design interviews, on both sides of the table.
The technical editor on this book was Mohit Kumar.
Table of ContentsPart 1A walkthrough of system design concepts
A typical system design interview flow
Non-functional requirements
Scaling databases
Distributed transactions
Common services for functional partitioning
Part 2Design Craigslist
Design a rate-limiting service
Design a notification/alerting service
Design a database batch auditing service
Autocomplete/typeahead
Design Flickr
Design a Content Distribution Network (CDN)
Design a text messaging app
Design Airbnb
Design a news feed
Design a dashboard of top 10 products on Amazon by sales volume
Appendix A Monoliths vs. microservices
Appendix B OAuth 2.0 authorization and OpenID Connect authentication
Appendix C C4 Model
Appendix D Two-phase commit (2PC)