← DoorDash Interview Insights

DoorDash·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
May 2026

Summary

DoorDash system design round that was heavier than I expected. Two big questions back to back: a classic distributed notification system design and then a full walkthrough of my own past project architecture with follow-ups that got pretty deep.

Questions Asked (2)

Q1

Design a scalable notification system that handles real-time and scheduled messages across email, push, and SMS. Walk through the components, data flow, storage layer, how you handle failures, and your scaling approach.

System DesignTechnical Trade-offs
Author's notes

This felt manageable at first but the failure handling part is where I started rambling.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design a decoupled architecture with separate services for ingestion, scheduling, and delivery. Walk through the data flow from API to message queues to channel-specific workers, and discuss trade-offs in storage, failure handling, and scaling.

Pro tip: Emphasize idempotency and exactly-once semantics for notifications, as duplicates can annoy users and damage trust. Also, mention the importance of rate limiting and user preferences to avoid spamming.

1. Clarify Requirements and Scale

Ask about expected throughput, latency requirements, delivery guarantees, and supported channels. Estimate scale (e.g., millions of notifications per day) to inform design decisions.

2. High-Level Architecture

Propose a microservices-based system with an API gateway for ingestion, a scheduler for delayed messages, and channel-specific workers for delivery. Use message queues (e.g., Kafka) to decouple components.

3. Data Flow and Storage

Describe the flow: API receives request, validates, persists to a database (e.g., Cassandra for scalability), and publishes to a queue. For scheduled messages, store in a timing database (e.g., Redis sorted sets) and poll. Workers consume from queues and send via providers.

4. Failure Handling and Reliability

Discuss retries with exponential backoff, dead-letter queues for poison messages, and idempotency keys to prevent duplicates. Ensure at-least-once delivery and monitor for failures.

5. Scaling Approach

Scale horizontally by adding more workers and partitioning queues. Use sharding for databases and caching for user preferences. Consider rate limiting and backpressure to handle spikes.

Key Points to Mention

  • Use of message queues (e.g., Kafka, RabbitMQ) for decoupling and buffering
  • Idempotency and deduplication strategies to ensure exactly-once processing
  • Storage choices: NoSQL for scalability, Redis for scheduling, and CDN for push tokens
  • Retry mechanisms with exponential backoff and dead-letter queues
  • Rate limiting and user preference management to prevent spam
  • Monitoring and alerting for system health and delivery metrics

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Draw and explain the end-to-end architecture of a past project you worked on. Cover the services involved, databases, how components communicate, and be ready for detailed follow-up questions on domain-specific decisions.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

Picked a project I thought I knew cold and then got absolutely grilled on why we chose a particular communication pattern between two services.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Choose a project you know deeply and can diagram clearly, then walk through it top-down: start with the high-level context and requirements, sketch the architecture (clients, services, data stores, queues), and trace one or two critical request flows end-to-end. Emphasize the trade-offs behind key decisions (e.g., SQL vs NoSQL, sync vs async, caching) and proactively flag areas where you'd expect follow-up questions.

Pro tip: Pick a project where you personally owned a critical component and can speak to failures, scaling limits, and what you'd change today — interviewers at DoorDash care more about your reasoning under constraints than a perfect diagram.

1. Set context and requirements

Briefly state the project's goal, scale (users, QPS, data volume), and key constraints (latency, consistency, compliance). This frames every later decision.

2. Draw the high-level architecture

Sketch clients, API gateway/load balancer, core services, databases, caches, and message queues. Label protocols (HTTP/gRPC, Kafka, WebSockets) and note synchronous vs asynchronous paths.

3. Trace a critical request flow

Walk through one or two end-to-end flows (e.g., write path and read path) showing how data moves, where it's transformed, and how failures are handled (retries, idempotency, fallbacks).

4. Explain key decisions and trade-offs

For each major component, justify the choice: why this database, why this communication pattern, why this partitioning/sharding strategy. Mention alternatives considered and why they were rejected.

5. Discuss scaling, reliability, and lessons learned

Cover how the system handles growth, outages, and data consistency. Share one concrete incident or bottleneck and what you changed as a result.

Key Points to Mention

  • Service boundaries and responsibilities (e.g., monolith vs microservices, domain-driven design)
  • Database choices and data modeling (SQL vs NoSQL, indexing, sharding, replication, consistency models)
  • Communication patterns (REST vs gRPC, sync vs async, message queues like Kafka/SQS, event-driven design)
  • Caching and performance optimizations (CDN, Redis, read replicas, connection pooling)
  • Reliability and observability (circuit breakers, retries with backoff, idempotency, metrics/logs/traces)
  • Security and API design (authn/authz, rate limiting, versioning, idempotent APIs)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.