Learning pathsA
GUIDED PRACTICE

Medium Timed Practice

Run a 40-minute self-guided auction design session. Define bid acceptance, deadline rules, winner selection, and payment recovery.

Run a 40-minute self-guided auction design session. Define bid acceptance, deadline rules, winner selection, and payment recovery.

This is a timed, self-guided mock interview. No live interviewer, automated evaluator, or AI feedback is connected. Use the on-page timer or your own timer, speak your decisions aloud, and save your draft before reviewing the model.

Scenario and constraints

  • 100,000 active auctions; one hot auction gets 5,000 bid attempts/s.
  • Server-defined close time; no anti-sniping in the baseline.
  • Live high-bid display may lag one second.
  • One authoritative winner; payment can time out.

Your deliverables

  • Minutes 0–7: state deadline, reserve-price, and tie rules.
  • Minutes 7–17: model bids and atomically serialize bid/close decisions.
  • Minutes 17–30: draw live display and a durable winner workflow.
  • Minutes 30–40: recover a missed close job and an unknown payment.

Reason about this sequence

Auction open at version 20 → Final bid and close race → Owner applies deadline rule → One close outcome commits → Payment proceeds separately
Scroll to inspect the diagram, or open it at full size.

Figure — Auction open at version 20 → Final bid and close race → Owner applies deadline rule → One close outcome commits → Payment proceeds separately

For every step, annotate what is durable, what the caller knows, and which identity survives a retry. Identify the point where two concurrent actors could disagree. Do not assume a timeout means failure or a cache value grants ownership.

Interviewer follow-ups

  • At minute 17, a final bid races the close worker.
  • At minute 28, the scheduler misses the deadline.
  • At minute 35, a delayed payment event arrives twice.

Answer each follow-up using the same design first. If it breaks, change the smallest boundary that repairs the invariant and explain the new cost. Show whether the change adds latency, storage, coordination, or operational work.

Staged hints

Hint 1 — reveal

Answer: Hint 1 — Bid and close must meet at the same decision boundary. A browser clock or event arrival order at the UI cannot select the winner.

Hint 2 — reveal

Answer: Hint 2 — Store auction state, deadline, current high bid, and version at the authoritative owner. Accept a bid only if the auction is open, the amount exceeds the current qualifying bid, and the deadline rule holds. The close transition uses the same authority so a concurrent bid and close have one well-defined order.

Hint 3 — reveal

Answer: Hint 3 — A scheduler crashes just before closing. The auction must not remain open forever. Request-time deadline checks reject late bids, while a recovery scan finds overdue open auctions and runs idempotent closure. If the winning payment fails, use a stated business policy such as retry, cancellation, or offering to another bidder; do not silently invent a new winner.

Evidence-based self-review

  • The bid deadline uses an enforceable authoritative rule.
  • Close retries cannot produce multiple winners.
  • Live display is separated from acceptance authority.
  • Payment and missed scheduling have explicit repair paths.

Score each item 0 if absent, 1 if named without an enforceable mechanism, or 2 if the mechanism and a failure are explained. Record evidence from your own diagram beside the score. Then choose one weak decision, revise it, and repeat the relevant follow-up. This rubric is a learning tool, not a hiring forecast.

40:00Self-guided practice timer
The timer resets when you leave this page. Save your design separately.
Your challenge

Can a bid be accepted solely because the client timestamp is before the displayed close time?

Your design draft

Clarify assumptions, explain your approach, and test the difficult cases. Save your draft, then compare it with the study notes.

Read study notes

Self-review checklist

Self-guided practice. Automated AI feedback and code execution are not connected.