TL;DR
- Whatnot publishes a general interview sequence, including an initial phone or video conversation, a hiring-manager discussion, a role-specific skills stage and a final round.
- Prepare a clear project story and practical examples of ownership, prioritization and decisions made with incomplete information.
- Use the original auction exercise below to practice event ordering, deadline boundaries and duplicate requests. Its simplified rules are not Whatnot's production auction rules.
- “Whatnot video interview questions” does not necessarily mean a prerecorded assessment. Confirm your invitation's format, platform and tool policy with recruiting.
What is the published Whatnot interview process?
Whatnot's careers page describes resume review, an initial screen, a hiring-manager conversation, a skills interview and a final round before references and an offer. The skills stage can include technical, coding or case work depending on the role. The final stage includes a discussion of cultural principles such as ownership, speed and ambiguity. The company explicitly says the process may vary by role. See Whatnot's official careers page.
Use that as a framework, then confirm the details for your position. Ask whether the skills work is live, whether you need a development environment, what material to prepare and whether a project walkthrough is expected. A product role, an infrastructure role and a trust-focused operations role should not be assumed to share an identical exercise.
The questions in this guide are original practice prompts. They were chosen to connect general engineering and product reasoning with a live marketplace. They are not a list of questions reported from Whatnot's interviews, and completing them does not establish that you have rehearsed the exact assessment.
How should you prepare for a Whatnot video interview?
The published initial screen is a conversation over phone or video. That does not establish a universal one-way recorded format or a fixed list of questions. If your invitation uses a separate assessment platform, follow that invitation and ask for clarification about what you will be doing. If that platform uses a one-way format, our guide to preparing for recorded video interviews explains how to check the employer's timing and retake settings.
Practice an opening answer that takes roughly a minute: your current focus, a relevant project, your particular contribution and why this role interests you. For example, an engineer could discuss improving the reliability of a time-sensitive user action. Use your real project; do not copy a fictional example and present it as employment history.
Prepare to explain work while sharing a screen. Use a small diagram or sanitized repository you have permission to show. Close private dashboards and remove credentials from the material. Test the microphone, camera, connection and screen-sharing permissions before the call. Keep a backup way to contact recruiting if the meeting link fails.
For a practice question such as “Tell me about a time you had to choose between speed and completeness,” identify the actual decision. Explain what you shipped, what you deferred, how you bounded the risk and what happened afterward. “We moved fast” is a conclusion; the interviewer needs the reasoning and evidence behind it. The phone-screen preparation checklist covers the logistical details.
Question 1: what makes a live auction technically interesting?
Whatnot's help documentation distinguishes a standard auction timer, which can extend after bids, from a Sudden Death timer, which does not add that extra time. It also describes maximum bids that can produce automatic incremental bidding. Those are user-facing rules; they do not disclose the internal architecture. Read the official explanation of bidding during a show.
For interview practice, choose a smaller problem before drawing a full marketplace. Our fictional auction has one currency, integer-cent bids, a fixed deadline and no automatic maximum bidding. It accepts an amount at least equal to the starting price for the first valid bid, then requires each accepted bid to be strictly higher. These are exercise rules, not a reconstruction of Whatnot's rules.
Ask where ordering comes from. Two browser clocks do not create an authoritative order. For this exercise, the server has already serialized events and attached nondecreasing receipt timestamps. A bid received exactly at the deadline is too late. State that boundary explicitly rather than leaving it to an accidental comparison operator.
Question 2: can you evaluate the bid stream deterministically?
Each event contains server receipt time, a bid ID, bidder ID and integer-cent amount. The bid ID identifies one submission within this auction. Repeating an ID with the same bidder and amount returns its original outcome, even if that original outcome was a rejection. Reusing the ID with different content is an error.
The function analyzes a completed stream. It does not accept live payments, schedule a closing job or connect to Whatnot. The caller must provide the complete relevant stream before treating the result as final.
def evaluate_auction(events, deadline_ms, starting_cents):
if any(type(v) is not int or v <= 0
for v in (deadline_ms, starting_cents)):
raise ValueError("deadline and starting price must be positive")
rows = list(events)
previous_time = -1
for received, bid_id, bidder, amount in rows:
if type(received) is not int or received < previous_time:
raise ValueError("events must be ordered by receipt time")
if received < 0 or type(amount) is not int or amount <= 0:
raise ValueError("invalid time or amount")
if any(not isinstance(v, str) or not v.strip()
for v in (bid_id, bidder)):
raise ValueError("identifiers must be nonempty strings")
previous_time = received
seen, outcomes = {}, []
highest, winner = starting_cents - 1, None
for received, bid_id, bidder, amount in rows:
payload = (bidder, amount)
if bid_id in seen:
old_payload, outcome = seen[bid_id]
if payload != old_payload:
raise ValueError("bid ID reused with different content")
else:
if received >= deadline_ms:
outcome = "closed"
elif amount <= highest:
outcome = "too_low"
else:
highest, winner, outcome = amount, bidder, "accepted"
seen[bid_id] = (payload, outcome)
outcomes.append((bid_id, outcome))
return {"winner": winner,
"price_cents": highest if winner is not None else None,
"outcomes": outcomes}
events = [(10, "a", "Ada", 500), (11, "a", "Ada", 500),
(20, "b", "Bo", 500), (99, "c", "Cy", 700),
(100, "d", "Dee", 900), (101, "c", "Cy", 700)]
result = evaluate_auction(events, 100, 500)
assert result["winner"] == "Cy" and result["price_cents"] == 700
assert [outcome for _, outcome in result["outcomes"]] == [
"accepted", "accepted", "too_low", "accepted", "closed", "accepted"]The repeated “accepted” result for bid c after the deadline is a replay of its earlier outcome. It does not represent a new accepted bid at time 101. That distinction is why the duplicate-ID check comes before evaluating a fresh event's deadline.
| Event | Result in the fictional auction | Effect on the leader |
|---|---|---|
| Ada submits 500 cents before closing | Accepted | Ada leads |
| Ada's same submission is delivered again | Original acceptance returned | No change |
| Bo submits the same 500-cent amount | Too low | No change |
| Cy submits 700 cents at time 99 | Accepted | Cy leads |
| Dee submits 900 cents at deadline 100 | Closed | No change |
| Cy's accepted submission is replayed later | Original acceptance returned | No new action |
The algorithm uses expected O(n) time and O(n) space for n events, including the copied input, outcomes and remembered IDs. It deliberately preserves input order for equal timestamps. Sorting by amount would change the problem and could award the auction to a bid that arrived too late.
Question 3: which tests matter beyond the happy path?
Test an empty stream: there should be no winner and no price. Test a first bid below the starting price, a bid exactly at the starting price and equal competing amounts. Test a submission just before the deadline and one exactly at it.
Replay both accepted and rejected submissions. A rejected low bid must not become accepted merely because its message was delivered again later. A reused ID with a changed amount or bidder should fail. Include negative timestamps, descending receipt order, boolean amounts and blank identifiers in the validation cases.
Then name the guarantees missing from the local function. Its dictionary disappears when the process exits. It cannot coordinate multiple workers, authenticate a bidder or prevent a duplicate external charge. A real service needs durable state, an ordering or concurrency strategy, authorization and a separate payment contract. A unit test over this list proves none of those integration properties.
You can extend the exercise by proposing a version-checked transaction that persists the accepted bid and its response together. Explain how a caller recovers after a dropped response. Keep that as a design proposal until you have tested the actual storage and failure behavior.
Question 4: how would you handle a confusing user-visible result?
Imagine the browser displays a higher bid but reconnects to a different winner. First determine whether the browser showed a pending action as confirmed. Compare its submitted bid reference with the authoritative outcome. Check event ordering, connection delay and the state revision rendered by the client.
Propose distinct interface states for submitting, accepted, outbid and rejected. An optimistic animation should not create a false promise about winning. After reconnecting, fetch an authoritative state with a version rather than attempting to reconstruct the result solely from whatever messages the client happened to receive.
For the actual product, apply the documented auction format and rules. Our fixed-deadline exercise omits timer extensions, proxy bids and payment outcomes, so its results cannot be used to decide a real user's dispute.
Question 5: how do you show ownership and prioritization?
Use a concrete project story with competing tasks. Suppose a team can either improve a minor visual detail or fix a confusing confirmation that generates support contacts. Explain how you established impact, what evidence was incomplete and what small change would let you learn quickly.
Do not imply that acting quickly means skipping verification. A narrow change with a defined rollback and a relevant check can be both fast and deliberate. If you paused a release, explain the specific unresolved failure and the evidence that later allowed you to continue.
Give collaborators credit and describe a disagreement accurately. A strong story can include changing your mind after a teammate showed that your initial assumption was wrong. End with the observed outcome and a lesson you applied to later work, without inventing an impressive metric.
Turn the guide into a realistic rehearsal
Practice the video introduction, then implement the auction function without looking at the solution. Have a partner ask about a repeated request, a bid at the deadline and a server restart. Explain which part your code answers and which part needs a larger system. If you have no practice partner, you can book a live mock interview with a senior engineer and receive written feedback afterward.
For a non-engineering role, use the same fictional incident to practice investigation and communication rather than writing code. Describe the evidence you would request, how you would avoid promising an outcome before verification and how you would update the affected user.
Confirm the actual assessment format and permitted tools before the interview. These exercises help make your reasoning clear; they do not replace the role-specific instructions supplied by recruiting.
Sources checked September 14, 2026. This independent guide is not affiliated with Whatnot and does not claim access to confidential interview material.