Question bank / Software Engineering, System Design, Advanced

How to answer: Design a notification service for email, SMS, and push at large scale.

Whether you design for retries, duplicates and user preferences, not just the happy path.

What the interviewer is testing.

Queues, preferences, retries, idempotency. Whether you design for retries, duplicates and user preferences, not just the happy path.

An outline for this question.

  1. Clarify scale, delivery guarantees and whether messages can be delayed.
  2. Accept requests into a queue, with a worker pool per channel (email, SMS, push) so a slow provider does not block the others.
  3. Check user preferences and rate limits before sending.
  4. Make every send idempotent with a message ID so a retry never delivers twice, and send failures to a dead letter queue.

The mistake to avoid.

Calling the providers directly from the request. One slow provider then slows every caller.

The general method: requirements, design, trade-offs.

The same shape works for most system design questions, whatever the topic.

  • Pin down what the system must do, how many users, and what matters most (speed, cost, correctness).
  • Sketch the main parts and how data moves between them, starting simple.
  • Pick one or two parts to go deep on, and say what you gave up for each choice.
  • Finish with how it fails and how you would know: monitoring, retries, limits.

Practice it, out loud.

Reading an outline is not the same as saying it. Answer this question in a mock interview, in your own words, then compare it with the outline above.

Practice this questionSee live interview help

This is a Replysis practice question. It is not a leaked or official question from any company, and the outline is a guide to structure, not a script. Use your own experience and facts.