Design a notification system
Company: DoorDash
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Technical Screen
Design a notification system that sends messages via email, SMS, and push. Support real-time and scheduled delivery, per-user preferences and quiet hours, deduplication and idempotency, retries with exponential backoff, rate limiting (per user and per provider), multi-tenant isolation, and templating/localization. Provide APIs, storage schema, queue/pub-sub design, worker orchestration, provider integration, and monitoring/alerting. Discuss scalability targets (e.g., p99 latency, TPS), failure modes, exactly-once vs at-least-once semantics, A/B testing, GDPR/compliance, and cost controls.
Quick Answer: This question evaluates a candidate's competency in designing scalable, reliable multi-channel notification platforms, covering distributed systems, multitenancy, API and storage schema design, queuing and retry strategies, rate limiting, observability, localization, A/B testing, and compliance considerations like GDPR.