This is essentially 'design your own past work from scratch in front of us' and it's way harder than a made-up system design prompt because you can actually be wrong.
Choose a project where you owned the technical direction and can quantify impact at scale. Structure your answer as a narrative: start with the problem and constraints, then walk through your architecture and trade-offs, and end with measurable outcomes and lessons learned. Keep it tight—spend most time on decisions and trade-offs, not on listing technologies.
Pro tip: Uber interviewers care about scale and reliability; explicitly tie your decisions to real numbers (QPS, latency, data volume) and show how you validated them with metrics. Also, be candid about failures—demonstrating how you diagnosed and fixed them is as valuable as the successes.
Briefly describe the problem, its business impact, the scale (users, QPS, data size), and the key constraints (latency, consistency, budget, team size). Clarify your specific role and ownership.
Explain the high-level design: major components, data flow, storage choices (with schema), interfaces (APIs, events), and deployment topology. Highlight 2-3 critical architectural decisions and the trade-offs you weighed (e.g., SQL vs NoSQL, sync vs async).
Describe how you ensured reliability (redundancy, failover, idempotency, backpressure) and what you instrumented (metrics, logs, traces, alerts). Mention any SLOs and how you monitored them.
Identify the main performance bottlenecks you encountered and how you addressed them (caching, sharding, indexing, batching). Quantify improvements with before/after metrics.
Share measurable outcomes (latency reduction, cost savings, uptime). Then honestly discuss what went well, what failed, and what you'd do differently, showing growth and self-awareness.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.