Acing the System Design Interview, Video Edition

Acing the System Design Interview, Video Edition

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 17h 03m | 2.80 GB

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.

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.

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.
search inside this book

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
Table of Contents

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

Homepage