How AWS interviews — the principled engineer
1. The shape of an AWS loop
AWS runs the most demanding distributed-systems interview in the industry. The brand for it is principled engineer. It means what it sounds like: the loop is graded on whether you reason about systems from first principles, not whether you recognize the right answer.
A standard onsite is five to six rounds. Two are coding. One or two are system design. One is a behavioral round graded against the Amazon Leadership Principles (same ones the retail side uses; AWS doesn't get a softer version). And one is the round nobody else in the industry runs quite the same way: a written design exercise.
The written round is the AWS tell. You're given a one-page prompt, sixty to ninety minutes alone, and you write a design doc with diagrams. Then a panel of two or three principal engineers reads it cold and discusses it with you. They don't help you draw. They don't prompt you with hints. They read what you wrote and ask the same questions they'd ask of a doc landing in their inbox at work.
That's the bar. AWS engineers ship by writing docs that survive review by other principal engineers. The interview is the same thing under a clock.
2. What AWS grades you on
For a system design round, the panel is reading for three signals at almost equal weight:
- Failure model. What happens when a node dies. When an AZ goes dark. When a region partitions. When the network has 10x latency for an hour. If you can't articulate a failure model for every component you draw, you're not at the bar.
- Consistency model. Strong, eventual, causal, read-your-writes. AWS interviewers will not let you say "consistent" without naming which one. The follow-up is always "and what does the client see during the partition?"
- Multi-tenancy at scale. AWS services serve every company on earth. Per-tenant isolation, noisy-neighbor mitigation, fairness under contention. You can't design an AWS service for one customer. You design for ten million.
Leadership Principles are graded the same way as on the retail side. The behavioral round is real. Bar raiser is real. A weak LP round can sink a strong technical loop. Engineers preparing only for the tech side learn this the hard way.
3. What's different here
- The failure model is the design. Most companies treat failure modes as a section near the end of the interview. AWS treats them as the framing of every decision. You don't say "and then we add replication for durability" late. You say "the primary design decision here is what we're durable against, which is one AZ loss for this tier and one region loss for that tier." That sentence shape, repeated, signals the bar.
- You're not designing a product. You're designing a primitive. AWS services are platforms. Other engineers build on them. That means the API has to be coherent, the SLAs have to be machine-checkable, and the operational story has to work at the bottom of someone else's stack. "What does my customer's pager look like when this service is degraded?" is a fair interview question.
- Multi-region is on the table. Cross-region replication, regional isolation, control-plane vs data-plane separation. AWS has been bitten by every multi-region failure mode in the book and the bar reflects that. Naming the control plane / data plane split unprompted is a senior signal.
- The written component changes the prep. If you can talk fluently but write slowly, you'll struggle. Practice writing one-page design docs under a clock. That's the actual skill.
- No magic words. Other companies hand out points for vocabulary (Paxos, Raft, Lamport). AWS gives points for defending a choice. Saying "we'd use Raft" and stopping is worth nothing. Saying "we'd use a single-leader system with synchronous replication to two followers; the leader handles writes and the followers serve reads with bounded staleness; on leader loss we run a follower-vote election with a 10-second leader lease" is what the bar looks like.
4. The level bar
How the bar shifts:
- SDE2 (mid) — design at the competent IC level. You can scope. You can name primitives by their AWS-shaped names (DynamoDB, S3, SQS, Lambda). One deep dive defended. Failure modes named for the most important component.
- SDE3 (senior) — design at the systems engineer level. Every component has a stated failure model. Consistency model named on the data tier. At least one deep dive survives three pushes. Tradeoff sentences expected on every major choice.
- Principal (L7) — design at the primitive owner level. You're not designing a system, you're designing what other teams build on. Multi-tenancy explicit. Control plane separated from data plane. The operational story is in the doc, not promised for "the future."
- Senior Principal (L8) — design at the cross-org level. You can articulate which sister services your design depends on and which it competes with. The doc reads like a Principal Engineering Community PR-FAQ.
In this chapter, units target L6 (SDE3 / Principal) by default. The take-home is L6.
5. The AWS-flavored mistakes
Watch for:
- Saying "consistent" without qualifying. Strong, eventual, causal, or read-your-writes. Pick one. AWS interviewers will not let it slide.
- Treating S3 as a database. S3 is an object store with eleven nines of durability and a specific consistency model. It is not a transactional store. Candidates who use it as one in a design get pushed three times and don't survive.
- Ignoring the control plane. Every AWS service has a control plane (configuration, scaling, lifecycle) and a data plane (the actual request path). They have different SLAs, different blast radii, different rate limits. Talking only about the data plane signals you've never operated a real service.
- Underestimating multi-tenant contention. "And we'd auto-scale" without per-tenant quotas, fair-share scheduling, or noisy-neighbor isolation reads as junior. AWS has 10M+ customers. A single bad actor cannot be allowed to degrade the rest.
- Designing for one region. Cross-region replication, regional failover, and the cost of consistency across regions are expected at L6+. If you scope "single region" without acknowledging it, you signal you don't see the whole problem.
- Treating durability as eventual. AWS sells 11 nines of durability on S3. That's a number you defend by counting copies, accounting for correlated AZ failure, and arguing about erasure coding overhead. "We'd replicate" is not enough.
6. The eight scenarios in this chapter
Each unit dissects one question end to end. The chapter covers:
- 20.1 S3 object storage at scale — eleven nines of durability, immutability, the consistency-model shift in 2020, cross-region replication. The platform question.
- 20.2 DynamoDB partitioned KV — hash + sort keys, hot-partition pathology, eventual vs strongly consistent reads, auto-scaling tradeoffs.
- 20.3 SQS distributed queues — at-least-once, visibility timeout, FIFO option, dead-letter queues, consumer-side idempotency.
- 20.4 Lambda FaaS cold start — Firecracker microVMs, SnapStart snapshot-restore, provisioned concurrency, per-tenant isolation.
- 20.5 ELB load balancer that survives failure — ALB vs NLB, multi-AZ distribution, health checks, surviving AZ failure with DNS-level reroute.
- 20.6 EBS block storage at scale — network-attached block volumes, snapshots to S3, the AZ-failure window, the gp3 / io2 family.
- 20.7 Take-home: leader-elected job scheduler — code task. Build, test, ship.
7. The next page
The first scenario: design S3. The deepest storage primitive in the industry, and the most-asked AWS system-design question of the last decade.