Acing the System Design Interview, Video Edition

Video description

In Video Editions the narrator reads the book while the content, figures, code listings, diagrams, and text appear on the screen. Like an audiobook that you can also watch as a video.

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.

About the Technology
The 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 Book
Acing 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 Inside
  • Insights 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 Reader
For software engineers, software architects, and engineering managers looking to advance their careers.

About the Author
Zhiyong 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.

Quotes
Deconstructs the system design interview and presents each component in an accessible manner for new job seekers as well as seasoned engineers. The attention to detail makes this book a must have.
- Mohammad Shafkat Amin, Meta

Comprehensively covers the most common topics, along with helpful tips and advice. It gives you all the tools you need to ace your next system design interview.
- Rajesh Kumar, Google

The practical advice and real world examples in this book will help you master the art of system design and succeed in your next interview.
- Kevin Goh, PayPal

Table of contents

  1. Part 1.
  2. Chapter 1. A walkthrough of system design concepts
  3. Chapter 1. Should you read this book?
  4. Chapter 1. Overview of this book
  5. Chapter 1. Prelude: A brief discussion of scaling the various services of a system
  6. Chapter 1. Summary
  7. Chapter 2. A typical system design interview flow
  8. Chapter 2. Draft the API specification
  9. Chapter 2. Connections and processing between users and data
  10. Chapter 2. Design the data model
  11. Chapter 2. Logging, monitoring, and alerting
  12. Chapter 2. Search bar
  13. Chapter 2. Other discussions
  14. Chapter 2. Post-interview reflection and assessment
  15. Chapter 2. Interviewing the company
  16. Chapter 2. Summary
  17. Chapter 3. Non-functional requirements
  18. Chapter 3. Availability
  19. Chapter 3. Fault-tolerance
  20. Chapter 3. Performance/latency and throughput
  21. Chapter 3. Consistency
  22. Chapter 3. Accuracy
  23. Chapter 3. Complexity and maintainability
  24. Chapter 3. Cost
  25. Chapter 3. Security
  26. Chapter 3. Privacy
  27. Chapter 3. Cloud native
  28. Chapter 3. Further reading
  29. Chapter 3. Summary
  30. Chapter 4. Scaling databases
  31. Chapter 4. When to use vs. avoid databases
  32. Chapter 4. Replication
  33. Chapter 4. Scaling storage capacity with sharded databases
  34. Chapter 4. Aggregating events
  35. Chapter 4. Batch and streaming ETL
  36. Chapter 4. Denormalization
  37. Chapter 4. Caching
  38. Chapter 4. Caching as a separate service
  39. Chapter 4. Examples of different kinds of data to cache and how to cache them
  40. Chapter 4. Cache invalidation
  41. Chapter 4. Cache warming
  42. Chapter 4. Further reading
  43. Chapter 4. Summary
  44. Chapter 5. Distributed transactions
  45. Chapter 5. Event sourcing
  46. Chapter 5. Change Data Capture (CDC)
  47. Chapter 5. Comparison of event sourcing and CDC
  48. Chapter 5. Transaction supervisor
  49. Chapter 5. Saga
  50. Chapter 5. Other transaction types
  51. Chapter 5. Further reading
  52. Chapter 5. Summary
  53. Chapter 6. Common services for functional partitioning
  54. Chapter 6. Service mesh/sidecar pattern
  55. Chapter 6. Metadata service
  56. Chapter 6. Service discovery
  57. Chapter 6. Functional partitioning and various frameworks
  58. Chapter 6. Library vs. service
  59. Chapter 6. Common API paradigms
  60. Chapter 6. Summary
  61. Part 2.
  62. Chapter 7. Design Craigslist
  63. Chapter 7. API
  64. Chapter 7. SQL database schema
  65. Chapter 7. Initial high-level architecture
  66. Chapter 7. A monolith architecture
  67. Chapter 7. Using an SQL database and object store
  68. Chapter 7. Migrations are troublesome
  69. Chapter 7. Writing and reading posts
  70. Chapter 7. Functional partitioning
  71. Chapter 7. Caching
  72. Chapter 7. CDN
  73. Chapter 7. Scaling reads with a SQL cluster
  74. Chapter 7. Scaling write throughput
  75. Chapter 7. Email service
  76. Chapter 7. Search
  77. Chapter 7. Removing old posts
  78. Chapter 7. Monitoring and alerting
  79. Chapter 7. Summary of our architecture discussion so far
  80. Chapter 7. Other possible discussion topics
  81. Chapter 7. Summary
  82. Chapter 8. Design a rate-limiting service
  83. Chapter 8. When not to do rate limiting
  84. Chapter 8. Functional requirements
  85. Chapter 8. Non-functional requirements
  86. Chapter 8. Discuss user stories and required service components
  87. Chapter 8. High-level architecture
  88. Chapter 8. Stateful approach/sharding
  89. Chapter 8. Storing all counts in every host
  90. Chapter 8. Rate-limiting algorithms
  91. Chapter 8. Employing a sidecar pattern
  92. Chapter 8. Logging, monitoring, and alerting
  93. Chapter 8. Providing functionality in a client library
  94. Chapter 8. Further reading
  95. Chapter 8. Summary
  96. Chapter 9. Design a notification/alerting service
  97. Chapter 9. Non-functional requirements
  98. Chapter 9. Initial high-level architecture
  99. Chapter 9. Object store: Configuring and sending notifications
  100. Chapter 9. Notification templates
  101. Chapter 9. Scheduled notifications
  102. Chapter 9. Notification addressee groups
  103. Chapter 9. Unsubscribe requests
  104. Chapter 9. Handling failed deliveries
  105. Chapter 9. Client-side considerations regarding duplicate notifications
  106. Chapter 9. Priority
  107. Chapter 9. Search
  108. Chapter 9. Monitoring and alerting
  109. Chapter 9. Availability monitoring and alerting on the notification/alerting service
  110. Chapter 9. Other possible discussion topics
  111. Chapter 9. Final notes
  112. Chapter 9. Summary
  113. Chapter 10. Design a database batch auditing service
  114. Chapter 10. Defining a validation with a conditional statement on a SQL query’s result
  115. Chapter 10. A simple SQL batch auditing service
  116. Chapter 10. Requirements
  117. Chapter 10. High-level architecture
  118. Chapter 10. Constraints on database queries
  119. Chapter 10. Prevent too many simultaneous queries
  120. Chapter 10. Other users of database schema metadata
  121. Chapter 10. Auditing a data pipeline
  122. Chapter 10. Logging, monitoring, and alerting
  123. Chapter 10. Other possible types of audits
  124. Chapter 10. Other possible discussion topics
  125. Chapter 10. References
  126. Chapter 10. Summary
  127. Chapter 11. Autocomplete/typeahead
  128. Chapter 11. Search vs. autocomplete
  129. Chapter 11. Functional requirements
  130. Chapter 11. Non-functional requirements
  131. Chapter 11. Planning the high-level architecture
  132. Chapter 11. Weighted trie approach and initial high-level architecture
  133. Chapter 11. Detailed implementation
  134. Chapter 11. Sampling approach
  135. Chapter 11. Handling storage requirements
  136. Chapter 11. Handling phrases instead of single words
  137. Chapter 11. Logging, monitoring, and alerting
  138. Chapter 11. Other considerations and further discussion
  139. Chapter 11. Summary
  140. Chapter 12. Design Flickr
  141. Chapter 12. Non-functional requirements
  142. Chapter 12. High-level architecture
  143. Chapter 12. SQL schema
  144. Chapter 12. Organizing directories and files on the CDN
  145. Chapter 12. Uploading a photo
  146. Chapter 12. Downloading images and data
  147. Chapter 12. Monitoring and alerting
  148. Chapter 12. Some other services
  149. Chapter 12. Other possible discussion topics
  150. Chapter 12. Summary
  151. Chapter 13. Design a Content Distribution Network
  152. Chapter 13. Requirements
  153. Chapter 13. CDN authentication and authorization
  154. Chapter 13. High-level architecture
  155. Chapter 13. Storage service
  156. Chapter 13. Common operations
  157. Chapter 13. Cache invalidation
  158. Chapter 13. Logging, monitoring, and alerting
  159. Chapter 13. Other possible discussions on downloading media files
  160. Chapter 13. Summary
  161. Chapter 14. Design a text messaging app
  162. Chapter 14. Initial thoughts
  163. Chapter 14. Initial high-level design
  164. Chapter 14. Connection service
  165. Chapter 14. Sender service
  166. Chapter 14. Message service
  167. Chapter 14. Message-sending service
  168. Chapter 14. Search
  169. Chapter 14. Logging, monitoring, and alerting
  170. Chapter 14. Other possible discussion topics
  171. Chapter 14. Summary
  172. Chapter 15. Design Airbnb
  173. Chapter 15. Design decisions
  174. Chapter 15. High-level architecture
  175. Chapter 15. Functional partitioning
  176. Chapter 15. Create or update a listing
  177. Chapter 15. Approval service
  178. Chapter 15. Booking service
  179. Chapter 15. Availability service
  180. Chapter 15. Logging, monitoring, and alerting
  181. Chapter 15. Other possible discussion topics
  182. Chapter 15. Summary
  183. Chapter 16. Design a news feed
  184. Chapter 16. High-level architecture
  185. Chapter 16. Prepare feed in advance
  186. Chapter 16. Validation and content moderation
  187. Chapter 16. Logging, monitoring, and alerting
  188. Chapter 16. Other possible discussion topics
  189. Chapter 16. Summary
  190. Chapter 17. Design a dashboard of top 10 products on Amazon by sales volume
  191. Chapter 17. Initial thoughts
  192. Chapter 17. Initial high-level architecture
  193. Chapter 17. Aggregation service
  194. Chapter 17. Batch pipeline
  195. Chapter 17. Streaming pipeline
  196. Chapter 17. Approximation
  197. Chapter 17. Dashboard with Lambda architecture
  198. Chapter 17. Kappa architecture approach
  199. Chapter 17. Logging, monitoring, and alerting
  200. Chapter 17. Other possible discussion topics
  201. Chapter 17. References
  202. Chapter 17. Summary
  203. Appendix A. Monoliths vs. microservices
  204. Appendix A. Disadvantages of monoliths
  205. Appendix A. Advantages of services
  206. Appendix A. Disadvantages of services
  207. Appendix A. References
  208. Appendix B. OAuth 2.0 authorization and OpenID Connect authentication
  209. Appendix B. Prelude: Simple login, cookie-based authentication
  210. Appendix B. Single sign-on
  211. Appendix B. Disadvantages of simple login
  212. Appendix B. OAuth 2.0 flow
  213. Appendix B. Other OAuth 2.0 flows
  214. Appendix B. OpenID Connect authentication
  215. Appendix C. C4 Model
  216. Appendix D. Two-phase commit (2PC)

Product information

  • Title: Acing the System Design Interview, Video Edition
  • Author(s): zhiyong tan
  • Release date: January 2024
  • Publisher(s): Manning Publications
  • ISBN: None