How to use this book
This is not a book to read. Every prompt in it already appears inside a notebook, next to the passage that answers it, which is exactly why answering it there proves very little. You do not have a knowledge problem. You have a recall-under-pressure problem, and the only thing that fixes it is being asked cold.
Each prompt carries the notebook and section it came from, printed small beside its number, so a blank is never a dead end.
Of the 300 prompts, 97 came from an Interviewer asks block and have a written answer in the last part, under the same number. The rest are self-graded: the section named beside the prompt is the answer.
Part 01 · Large-Scale Data Ingestion
1Opening
Part 01 · Large-Scale Data Ingestion
2Framing the problem
Part 01 · Large-Scale Data Ingestion
3Ingestion, getting the bytes in
Part 01 · Large-Scale Data Ingestion
4The handoff
Part 01 · Large-Scale Data Ingestion
5The queue
Part 01 · Large-Scale Data Ingestion
6Processing
Part 01 · Large-Scale Data Ingestion
7State and visibility
Part 01 · Large-Scale Data Ingestion
8Senior concerns
Part 01 · Large-Scale Data Ingestion
9The interview itself
Part 01 · Large-Scale Data Ingestion
10Final review
Part 02 · Object Storage
11Opening
Part 02 · Object Storage
12The naive design, and the seven ways it dies
Part 02 · Object Storage
13Three kinds of storage
Part 02 · Object Storage
14Anatomy of an object
Part 02 · Object Storage
15Inside the system
Part 02 · Object Storage
16Getting the bytes in
Part 02 · Object Storage
17Large files
Part 02 · Object Storage
18Getting the bytes out
Part 02 · Object Storage
19Final review
Part 03 · Full-Stack Code Review
20Opening
Part 03 · Full-Stack Code Review
21How to review code out loud
Part 03 · Full-Stack Code Review
22The Node.js runtime
Part 03 · Full-Stack Code Review
23Express and the HTTP boundary
Part 03 · Full-Stack Code Review
24The client: React and Redux
Part 03 · Full-Stack Code Review
25PostgreSQL
Part 03 · Full-Stack Code Review
26MongoDB
Part 03 · Full-Stack Code Review
27Kafka
Part 03 · Full-Stack Code Review
28Twenty-four more drills
Part 03 · Full-Stack Code Review
29Delivery
Part 04 · Postgres
30Opening
Part 04 · Postgres
31Why a database at all
Part 04 · Postgres
32Types are the first constraint
Part 04 · Postgres
33Designing the schema
Part 04 · Postgres
34Querying for an API
Part 04 · Postgres
35Making it fast
Part 04 · Postgres
36Correctness under concurrency
Part 04 · Postgres
37Final review
Part 05 · Backend Security
38Opening
Part 05 · Backend Security
39Injection
Part 05 · Backend Security
40Authentication
Part 05 · Backend Security
42The browser is a boundary too
Part 05 · Backend Security
43Final review
Part 06 · Scaling and Performance
44What "fast" means
Part 06 · Scaling and Performance
45Finding the bottleneck
Part 06 · Scaling and Performance
46The database
Part 06 · Scaling and Performance
47Caching
Part 06 · Scaling and Performance
48More machines
Part 06 · Scaling and Performance
49The stateful part
Part 06 · Scaling and Performance
50Moving work in space and time
Part 06 · Scaling and Performance
51Architecture decisions
Part 06 · Scaling and Performance
52The interview
Part 06 · Scaling and Performance
53Final review
Part 07 · Real-Time Backends
54Opening
Part 07 · Real-Time Backends
55The client always spoke first
Part 07 · Real-Time Backends
56Server-sent events: the response that never ends
Part 07 · Real-Time Backends
57WebSocket: leaving HTTP behind
Part 07 · Real-Time Backends
58How many connections fit on one machine
Part 07 · Real-Time Backends
59The connection is state
Part 07 · Real-Time Backends
60Delivery: gaps, storms and fan-out
Part 07 · Real-Time Backends
61The parts the lecture left out
Part 07 · Real-Time Backends
62Final review
Part 08 · REST API Design
63Opening
Part 08 · REST API Design
64The standard exists so you do not have to negotiate
Part 08 · REST API Design
65Resources, and the URL that names them
Part 08 · REST API Design
66The method is a promise about repeating
Part 08 · REST API Design
67The response is the other half of the interface
Part 08 · REST API Design
68The list endpoint is where APIs go wrong
Part 08 · REST API Design
69When CRUD runs out
Part 08 · REST API Design
70Consistency is the whole product
Part 08 · REST API Design
71The interview itself
Part 08 · REST API Design
72Final review
Part 09 · Design Principles
73Opening
Part 09 · Design Principles
74The words that came before the acronym
Part 09 · Design Principles
75The five
Part 09 · Design Principles
76Using them without being used by them
Part 09 · Design Principles
77The interview itself
Part 10 · Caching
78Opening
Part 10 · Caching
79Caching is a bet about staleness
Part 10 · Caching
80Where caches live
Part 10 · Caching
81The strategies
Part 10 · Caching
82Invalidation
Part 10 · Caching
83The failure modes
Part 10 · Caching
84Telling someone else's cache what to do
Part 10 · Caching
85Redis in practice
Part 10 · Caching
86The interview itself
Part 10 · Caching