Practice

Mock Interviews & Scorecards


Use these packets for solo practice or interviewer/candidate pairs. The interviewer should reveal failure injects only at the specified time. The candidate should think aloud, state assumptions, and accept steering without abandoning structure.

Roles

Candidate

  • Drive requirements and choose a scope.
  • Keep a visible assumptions/risks list.
  • Use numbers to make decisions.
  • Trace state and failure, not only draw components.
  • Close with decisions and residual risks.

Interviewer

  • Answer requirement questions consistently; invent reasonable details when absent.
  • Reward prioritization rather than exhaustive feature collection.
  • Ask for precision when the candidate uses terms such as strong, available, exactly once, real time, or scalable.
  • Use one failure and one evolution inject. Do not stack trivia questions.
  • Record evidence in the rubric, not an impression alone.

30-minute focused deep dive

MinuteCandidate taskInterviewer action
0–3Restate scope and invariantCorrect only material misunderstanding
3–7Estimate and define contractChallenge one assumption
7–15Draw normal pathAsk where success is acknowledged
15–23Deep-dive one hard componentInject timeout, skew, or partition
23–28Reliability/metrics/migrationAsk how correctness is proved
28–30SummarizeCapture strongest decision and largest gap

45-minute standard interview

MinuteCandidate taskInterviewer prompt
0–6Requirements, non-goals, invariants“Which requirement changes the architecture most?”
6–11Peak estimates and bottleneck hypothesis“What happens after the largest failure?”
11–16API/events and data model“What does a timeout mean?”
16–27High-level write/read paths“Which copy is authoritative?”
27–36Deep diveUse failure inject A
36–42Operability/security/migrationUse evolution inject B
42–45Summary“What evidence would change your main choice?”

60-minute senior interview

Use the framework document’s full pacing. At minute 30, force one protocol/state-machine trace. At minute 45, remove a failure domain or impose a migration/cost constraint. The candidate should preserve invariants while changing architecture incrementally.

Packet A Order fulfillment

Prompt: Design order fulfillment after checkout: reserve inventory, charge payment, route to warehouse, create shipment, and notify the customer.

Candidate-visible requirements

  • Checkout has already collected a cart and shipping address.
  • Some inventory is scarce; payment processors have ambiguous timeouts.
  • Warehouse and carrier systems are external and asynchronous.
  • Users need a coherent order status and cancellation/refund behavior.
Show interviewer-only material

Interviewer-only inject at minute 28: payment capture times out after possibly succeeding while the inventory reservation expires.

Evolution inject at minute 38: add a second region that must continue accepting orders during regional isolation.

Expected senior themes: order state machine, idempotency key, inventory reservation, ledger/payment reconciliation, outbox/events, per-step retry/compensation, authority of order status, queue backlog/expiry, multi-region invariant choice, audit and operator repair.

Packet B Flash-sale catalog and checkout edge

Prompt: Design product/catalog reads and checkout admission for a five-minute flash sale.

Candidate-visible requirements

  • Product pages and images are global and mostly static.
  • Inventory and price at purchase must be correct.
  • Ten million users may arrive within one minute.
  • Bots and one hot product dominate traffic.
Show interviewer-only material

Failure inject: the cache cluster loses half its nodes and CDN hit ratio falls from 99% to 85%.

Evolution inject: merchants can now change price during the sale with global effect in 10 seconds.

Expected senior themes: immutable catalog versions, CDN/cache key/invalidation, origin shielding, admission/waiting room, authoritative inventory/price transaction, hot-key strategy, fail-safe price version, abuse/fairness, cache-miss multiplication and capacity.

Packet C Real-time collaboration

Prompt: Design collaborative editing for documents with WebSockets and offline clients.

Candidate-visible requirements

  • Users expect sub-200 ms update propagation.
  • Documents have history, comments, and access control.
  • Mobile clients may be offline for days.
  • Most documents have fewer than ten editors; a few have thousands.
Show interviewer-only material

Failure inject: two regions become isolated and both retain connected editors for the same document.

Evolution inject: add end-to-end encryption that prevents the server from reading operations.

Expected senior themes: operation/convergence model, document ownership versus merge, sequence/causality, resumable connections, presence TTL, hot-document fan-out, snapshots/history, auth revocation, partition semantics, encrypted metadata/search/moderation trade-offs.

Packet D Telemetry platform

Prompt: Design logs and metrics ingestion, alerting, dashboards, and one-year retention.

Candidate-visible requirements

  • Millions of agents send compressed batches.
  • Alerts need one-minute freshness; historical queries can take seconds.
  • Tenants have very different volume and cardinality.
  • Raw data must be replayable after processing bugs.
Show interviewer-only material

Failure inject: one tenant introduces a user-ID label and grows cardinality 100×.

Evolution inject: reduce monthly storage and query cost by 40% without weakening alert freshness.

Expected senior themes: ingest acknowledgment/local spool, partitioning and quotas, queue age/backpressure, streaming aggregates, object storage/columnar compaction, batch correction, query admission/cache, retention/downsampling, cost model, privacy.

Packet E Public API and webhooks

Prompt: Design a developer API for projects/tasks and reliable webhooks for changes.

Candidate-visible requirements

  • Mobile and third-party clients have long release cycles.
  • Mutations may be retried after timeouts.
  • Webhook endpoints are untrusted and frequently slow.
  • Customers need replay and delivery diagnostics.
Show interviewer-only material

Failure inject: one endpoint returns 500 for 24 hours while receiving one million events/hour.

Evolution inject: introduce a breaking domain-model change without stopping old clients.

Expected senior themes: versioned contracts, idempotency, cursor pagination, authorization, event semantics/schema, per-endpoint queues and retries, DLQ/disable, HMAC/replay protection/SSRF, tenant isolation, migration and compatibility telemetry.

Packet F Global account and quota service

Prompt: Design account metadata, globally unique handles, and per-account API quotas across 30 regions.

Candidate-visible requirements

  • Profile reads should be local and highly available.
  • Handle changes must never commit duplicates.
  • Ordinary quota checks need under 2 ms; billing cannot exceed a monthly hard cap by more than 1%.
  • Data residency applies to selected tenants.
Show interviewer-only material

Failure inject: regions are partitioned for 20 minutes.

Evolution inject: move a large enterprise tenant to a dedicated region without downtime.

Expected senior themes: operation-level CAP choices, home region/directory, quorum for uniqueness, cached profile/version, regional quota leases/escrow, bounded overshoot, tenant migration snapshot+delta+epoch, residency, reconciliation and audit.

Blank interviewer score sheet

Prompt / packet:
Candidate target level:
Date:

0–10 min
- Scope and non-goals:
- Critical invariant:
- Decision-changing requirement:
- Estimate quality:

10–30 min
- API/event semantics:
- Data authority and key:
- Write acknowledgment:
- Read freshness:
- Main trade-off:

Failure inject
- Immediate behavior:
- Safety mechanism:
- Recovery/reconciliation:
- Metrics:

Evolution inject
- Compatibility:
- Backfill/copy/catch-up:
- Cutover/fencing:
- Rollback:

Senior rubric scores (0–4)
- Framing:
- Requirements/invariants:
- Quantitative:
- Contracts:
- Architecture/ownership:
- Deep trade-off:
- Reliability:
- Operability:
- Security/privacy:
- Evolution:
- Communication:

Strongest evidence:
Largest risk or gap:
One follow-up that differentiated level:
Decision / recommendation:

Candidate review sheet

Where did I spend too long?
Which requirement did I fail to convert into a design decision?
Which number was missing or wrong?
Where could a timeout hide success?
Which state had unclear ownership?
What was my weakest failure response?
What metric proves business completion?
What security/privacy concern changed the architecture?
Could I migrate this design online?
My improved 90-second summary:

Calibration exercise

Run the same packet twice: once constrained to a single-region modular monolith and relational database, and once at multi-region extreme scale. Compare what genuinely must change. This prevents cargo-cult distribution and develops the senior skill of choosing the simplest design that satisfies current requirements while leaving an evolution path.