Accept an idempotency key from the client and store the result keyed by (user, key). If the same key is sent again, return the stored result instead of creating duplicates.
Advanced answer
Deep dive
Expanding on the short answer — what usually matters in practice:
Context (tags): idempotency, api, retries
Scaling: what scales horizontally vs vertically, where bottlenecks appear.
Explain the "why", not just the "what" (intuition + consequences).
Trade-offs: what you gain/lose (time, memory, complexity, risk).
Edge cases: empty inputs, large inputs, invalid inputs, concurrency.
Examples
A tiny example (an explanation template):
// Example: discuss trade-offs for "how-do-you-make-a-post-endpoint-safe-to-retry-(i"
function explain() {
// Start from the core idea:
// Accept an idempotency key from the client and store the result keyed by (user, key). If th
}
Common pitfalls
Too generic: no concrete trade-offs or examples.
Mixing average-case and worst-case (e.g., complexity).