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
| Minute | Candidate task | Interviewer action |
|---|---|---|
| 0–3 | Restate scope and invariant | Correct only material misunderstanding |
| 3–7 | Estimate and define contract | Challenge one assumption |
| 7–15 | Draw normal path | Ask where success is acknowledged |
| 15–23 | Deep-dive one hard component | Inject timeout, skew, or partition |
| 23–28 | Reliability/metrics/migration | Ask how correctness is proved |
| 28–30 | Summarize | Capture strongest decision and largest gap |
45-minute standard interview
| Minute | Candidate task | Interviewer prompt |
|---|---|---|
| 0–6 | Requirements, non-goals, invariants | “Which requirement changes the architecture most?” |
| 6–11 | Peak estimates and bottleneck hypothesis | “What happens after the largest failure?” |
| 11–16 | API/events and data model | “What does a timeout mean?” |
| 16–27 | High-level write/read paths | “Which copy is authoritative?” |
| 27–36 | Deep dive | Use failure inject A |
| 36–42 | Operability/security/migration | Use evolution inject B |
| 42–45 | Summary | “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.
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.
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.
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.
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.
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.
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.