← DoorDash Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

System design round at DoorDash, one big sprawling question about building a donations platform for a global fundraising campaign. Took up the full hour and then some, lots of follow-ups branching in every direction.

Questions Asked (4)

Q1

Design a donations platform for a three-day global fundraising campaign, covering the full stack: APIs, data model, payment idempotency, real-time leaderboards, fraud checks, rate limiting, backpressure, delayed webhooks, regional availability, storage and partitioning, caching, streaming analytics, observability, and failure handling.

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

This was basically every system design topic crammed into one question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale (e.g., expected donations per second, global regions, consistency needs), then design the high-level architecture covering core components: API gateway, donation service, payment integration, data stores, and real-time leaderboard. Dive into critical details like idempotency, fraud detection, rate limiting, and failure handling, explaining trade-offs (e.g., consistency vs. availability, SQL vs. NoSQL) and how they address the three-day campaign's unique challenges.

Pro tip: Emphasize idempotency and exactly-once processing for payments, as duplicate charges are a major risk; use idempotency keys and a ledger-based data model to ensure correctness. Also, discuss how you'd handle delayed webhooks and backpressure to maintain system stability under peak load.

1. Clarify Requirements and Scale

Ask questions to understand expected traffic (e.g., donations per second, peak times), global regions, consistency requirements, and budget constraints. Define functional and non-functional requirements.

2. High-Level Architecture

Sketch the main components: API gateway, donation service, payment service, database, cache, message queue, and analytics pipeline. Explain how they interact and the data flow.

3. Deep Dive into Critical Areas

Detail payment idempotency, fraud checks, rate limiting, backpressure, delayed webhooks, and real-time leaderboards. Discuss trade-offs and specific technologies (e.g., Redis for leaderboards, Kafka for streaming).

4. Address Scalability and Reliability

Cover regional availability, data partitioning, caching strategies, observability, and failure handling (e.g., retries, circuit breakers, dead letter queues). Explain how the system meets the three-day campaign's demands.

5. Summarize and Discuss Trade-offs

Recap the design, highlighting key decisions and their trade-offs (e.g., consistency vs. latency, cost vs. performance). Mention potential bottlenecks and how to mitigate them.

Key Points to Mention

  • Idempotency keys and ledger-based data model to prevent duplicate charges and ensure exactly-once processing.
  • Real-time leaderboard using Redis sorted sets with periodic persistence and eventual consistency.
  • Fraud detection via rules engine and machine learning, integrated asynchronously to avoid blocking donations.
  • Rate limiting and backpressure using token buckets and queue-based load leveling to handle traffic spikes.
  • Delayed webhook handling with retries, exponential backoff, and idempotent processing.
  • Regional availability with multi-region deployment, data replication, and failover strategies; partitioning by campaign or region for scalability.

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

Q2

How would you handle payment provider outages and double-submit scenarios in this system?

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

Follow-up that came after I mentioned idempotency keys.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's payment flow and failure modes, then propose a layered strategy: idempotency for double-submits, retries with exponential backoff and circuit breakers for outages, and fallback providers or queuing for resilience. Emphasize trade-offs between consistency, availability, and complexity, and tie your answer to DoorDash's high-volume, low-latency environment.

Pro tip: Mention that you'd use idempotency keys tied to the order ID and store them with a TTL, and that you'd monitor provider health with synthetic transactions to fail over proactively—this shows you've thought about real-world production issues beyond textbook solutions.

1. Clarify requirements and failure modes

Ask about expected throughput, consistency requirements, and the impact of payment failures on user experience. Identify specific failure scenarios: provider downtime, timeouts, duplicate requests, and partial failures.

2. Design for idempotency and double-submit prevention

Propose using idempotency keys (e.g., order ID + user ID) stored in a fast datastore with TTL, and ensure the payment provider supports idempotent APIs. Discuss client-side and server-side deduplication.

3. Implement resilience for provider outages

Outline retry logic with exponential backoff and jitter, circuit breakers to avoid cascading failures, and a fallback provider or queue for asynchronous processing. Consider graceful degradation and user communication.

4. Ensure observability and recovery

Describe monitoring of provider health, alerting on error rates, and reconciliation jobs to detect and resolve inconsistencies. Include manual intervention paths for stuck transactions.

5. Discuss trade-offs and alternatives

Compare synchronous vs. asynchronous payment processing, strong vs. eventual consistency, and the cost of adding redundancy. Acknowledge that no solution is perfect and explain how you'd prioritize based on business needs.

Key Points to Mention

  • Idempotency keys with TTL to prevent double-submits and ensure exactly-once processing
  • Retry strategies with exponential backoff and jitter, and circuit breakers to handle transient failures
  • Fallback payment providers or queuing mechanisms for high availability
  • Monitoring, alerting, and reconciliation to detect and recover from inconsistencies
  • Trade-offs between consistency, availability, and complexity (CAP theorem)
  • User experience considerations: clear error messages, retry options, and order status updates

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

Q3

Walk me through your partitioning and storage strategy for this platform at scale.

System DesignData ModelingTechnical Trade-offs
Author's notes

Went with partitioning donations by campaign ID and then by time bucket since the query patterns are mostly campaign-scoped and time-range-scoped.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the platform's scale and access patterns, then propose a partitioning strategy that aligns with query patterns and data distribution. Discuss storage choices (e.g., SQL vs NoSQL, hot vs cold storage) and trade-offs around consistency, latency, and cost. Conclude with how you'd handle rebalancing and growth.

Pro tip: Tie your partitioning key to the most frequent query pattern and explicitly call out how you avoid hotspots—this shows you understand real-world production concerns beyond theory.

1. Clarify Requirements and Scale

Ask about data volume, read/write ratio, latency SLAs, and geographic distribution to ground your design in concrete numbers.

2. Choose a Partitioning Strategy

Select a partition key (e.g., user_id, order_id, geo) based on access patterns, and decide between hash, range, or composite partitioning to balance load.

3. Select Storage Technologies

Map data types to appropriate stores (e.g., relational for transactions, NoSQL for scale, blob storage for media) and consider hot/cold tiering.

4. Address Trade-offs and Consistency

Discuss CAP theorem implications, consistency models (strong vs eventual), and how they affect user experience and system complexity.

5. Plan for Scalability and Operations

Explain how you'd handle rebalancing, resharding, monitoring, and failure recovery as the platform grows.

Key Points to Mention

  • Partitioning key selection based on query patterns (e.g., user_id for user-centric queries)
  • Hotspot mitigation techniques (e.g., salting, composite keys, consistent hashing)
  • Storage tiering: hot vs cold data, SSD vs HDD, in-memory caches
  • Trade-offs between SQL and NoSQL for different data models
  • Consistency models and their impact on user experience (e.g., eventual consistency for order tracking)
  • Operational concerns: rebalancing, resharding, and monitoring

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

Q4

How would you design real-time running totals and a leaderboard given high write throughput during a campaign spike?

System DesignProduct Analytics & MetricsTechnical Trade-offs
Author's notes

Redis sorted sets felt like the obvious answer and I led with that.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: define 'real-time' (e.g., sub-second vs. minute-level), the expected write throughput (e.g., 100K writes/sec), and the read patterns for the leaderboard. Then propose a scalable architecture that decouples writes from reads, using an append-only log or stream processing for aggregation and a fast in-memory store for serving the leaderboard.

Pro tip: Emphasize that perfect accuracy may not be required; approximate counts with bounded error (e.g., using HyperLogLog or Count-Min Sketch) can drastically reduce cost and complexity while still meeting product needs. Also, discuss how to handle late-arriving data and ensure idempotency to avoid double-counting.

1. Clarify Requirements and Constraints

Ask about write volume, read latency, consistency needs, and whether the leaderboard must be exact or can be approximate. Also consider the campaign duration and peak patterns.

2. Design the Write Path

Use a distributed message queue (e.g., Kafka) to absorb spikes and decouple producers from consumers. Ensure writes are partitioned by user or campaign to enable parallel processing.

3. Design the Aggregation Layer

Process the stream with a stream processor (e.g., Flink, Spark Streaming) to compute running totals. Use windowing and watermarks to handle late data, and maintain state in a scalable store (e.g., RocksDB).

4. Design the Read Path and Leaderboard

Store aggregated totals in a low-latency database (e.g., Redis, DynamoDB) and maintain a sorted set for the leaderboard. Use caching and read replicas to scale reads.

5. Address Trade-offs and Failure Modes

Discuss consistency vs. availability, exactly-once vs. at-least-once processing, and how to recover from failures. Mention monitoring and alerting for lag and errors.

Key Points to Mention

  • Use of append-only log (Kafka) for durability and replayability
  • Stream processing with windowing and watermarks for real-time aggregation
  • In-memory data stores (Redis) with sorted sets for leaderboard queries
  • Approximate algorithms (HyperLogLog, Count-Min Sketch) for scalability
  • Idempotency and deduplication to handle retries and exactly-once semantics
  • Partitioning and sharding strategies to distribute load

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