White RoomNEW

Distinguish yourself
in the AI era.

Are you prepared for your future?

Core Catalog

Companies don't just filter on LeetCode anymore. Practice real implementation-style problems: systems, debugging, APIs, concurrency, and codebase tasks from real interviews.

Browse problems

I'm single.

10s 256 MB
Exclusive Harder 6

You may already be familiar with the lock-free MPSC (multi-producer, single-consumer) queue shown on our homepage. This problem tests whether you understand how to generalize those ideas to SPSC concurrency.

Implement the class SPSCQueue, which is a lock-free single-producer single-consumer queue.

Signature
SPSCQueue(capacity)
  • capacity specifies the maximum amount of elements that may exist in the queue at any time.

  • capacity must be a power of 2 and greater than 2. Throw an exception if it isn't.

Signature
push(element)
  • Attempts to enqueue element.

  • Returns true if the enqueue succeeds.

  • Returns false if the queue is full at the operation's linearization point (no spurious failures).

Signature
pop(out)
  • Attempts to dequeue an element and store it in out.

  • Returns true if the dequeue succeeds.

  • Returns false if the queue is empty at the operation’s linearization point (no spurious failures).

  • Exactly one producer thread and exactly one consumer thread may call push/pop concurrently.

    • The implementation must be lock-free (no std::mutex, no condition variables, etc.). Using a lock may result in a compilation error.

    • The grader uses stress tests to detect corruption (duplicates/missing) and deadlocks, but does not formally verify linearizability.

    • Type constraints (standard version):

      • You may assume the stored type T is default-constructible.
    • You may assume the queue will not be destroyed during concurrent push or pop operations.

    • You do not need to write any input/output parsing.

    • A queue constructed with capacity = N must allow N successful push calls before reporting full.

    • Because there are only two threads, there is very little opportunity for data corruption, allowing incorrect solutions to pass the judge. Therefore, this problem has been marked as unrated.

Accepted 1,471/3,128
Acceptance 47%
123456789101112131415161718192021222324252627282930313233
class SPSCQueue {
public:
explicit SPSCQueue(size_t capacity)
: mask_(capacity - 1), buffer_(capacity) {
}
bool push(int value) {
}
bool pop(int& out) {
}
private:
const size_t mask_;
std::vector<int> buffer_;
std::atomic<size_t> head_{0};
std::atomic<size_t> tail_{0};
};

WhiteBox users have received offers from

More than a problem bank

The problems are just the start. The rest is what actually gets you the offer.

Mock interviews on demand.

Friends always busy? Run a realistic interview with an AI interviewer that asks, follows up, and pushes back like the real thing.

Every session ends with a structured grade, so you know exactly what to fix before it counts.

Grow inside our community.

An environment shapes the outcome of your growth. People waste time on wrong resources, editorials written by beginners, and unqualified influencers. Join candidates who have been through FAANG+, quant, and elite startup interviews so your habits, resources, and feedback all point toward the offer.

Interview intel you can actually solve.

Send us your latest interview round, and we'll turn quality reports into runnable WhiteBox problems.

Recently sourced 4 reports
Description Solutions Submissions Solvers Source: Optiver report

One, Two, Skip a few...

10s 256 MB
Hard 5 Mar 9, 2026 Data StructuresMemory Management Optiver

Implement SkipList, a probabilistic sorted data structure that supports fast search, insertion, and deletion by maintaining multiple layers of linked lists with express lanes.

This problem focuses on layered data structure mechanics and correct PRNG-driven level generation.

Signature
SkipList(seed)
  • seed is an unsigned 32-bit integer.
  • Initializes an empty skip list with the given PRNG seed.
  • The skip list should support up to 16 levels (levels 0 through 15).
  • Level 0 is the bottom level containing all elements.

Each time a new value is successfully inserted (not a duplicate), generate its level as follows:

  1. Advance the PRNG state before using it:
C++
seed = seed * 1103515245 + 12345
  1. Count consecutive set bits starting from the least significant bit.
  2. The generated level is that count, capped at 15.
  3. Duplicate inserts must not advance the PRNG state.
Signature
insert(x)
  • Insert integer x if it does not already exist.
  • Return true when a new value is inserted and false for duplicates.
  • A newly inserted node appears on every level from 0 through its generated level.
Signature
search(x)
  • Return whether x exists in the skip list.
  • Search should use express lanes from high levels before descending.
Signature
erase(x)
  • Remove x if it exists.
  • Return true if a node was removed and false otherwise.
Signature
display()
  • Return one line per non-empty level, highest level first.
  • Each line is formatted as Level k: v1 v2 ....
  • Values are signed 32-bit integers.
  • Up to 2 * 10^5 operations may be issued.
  • The structure must keep values sorted on every level.
  • Removing a value must remove it from all levels where it appears.

Everything in one place.

We built the interview prep platform we wished existed. Here's what sets WhiteBox apart.

WhiteBox
LeetCode / NeetCode
getcracked.io
Codeforces
Interview Transferability Does it reflect what companies actually ask?
Real, current interview problems. Algorithms, systems, implementation.
Algorithmic focus. Transferability varies.
Quant specific, narrow transferability
Builds fundamentals, steep learning curve
Implementation Problems Real systems, not toy puzzles
Concurrency, ML pipelines, API design, production patterns
Limited, mostly behind paywall
Some, but buried under filler
None
Skill Rating How you compare to other candidates
Elo rating with domain strength breakdown
Based on problems solved
Based on problems solved and success rate
Elo rating (contest only)
Tsuki AI Tutor In-editor guidance that teaches, not tells
AI that knows your code, language, and constraints
Leet (premium only)
None
None
AI Mock Interviews Practice speaking under pressure
Voice mock interviews. AI interviewer, rubric grading, debrief reports.
None
None
None
White Room AI Coach A study plan that adapts to you
Adaptive roadmap, concept mastery, durable memory, every step shown.
None
None
None
Interview Intel Real questions from recent interviews
Company, date, difficulty. Free for all.
Company tags behind premium, often stale
Company questions locked behind premium
None
Structured Roadmap A clear path to mastery
Skill tree with progress tracking and curated sets per topic
Study plans exist but are rarely updated
Per feature nodes, no comparative context
No guided path
Gamification Stay motivated long-term
Cosmetics, badges, card frames, leaderboard
Streaks and badges
Cosmetics, badges, leaderboard
None
Pricing Cost to access
Free tier. Premium from $19/mo.
$180/yr (LeetCode) or $300 lifetime (NeetCode)
$49/mo. No free tier.
Free

Choose your WhiteBox plan.

White Room, mock interviews, resume review, and the full prep system come with Premium. Launch pricing is available now.

Free

$0 /mo

Get the core catalog and community intel. No card, no trial timer.

  • 100+ implementation problems and quizzes
  • 700+ handpicked DSA problems, zero filler
  • Algorithm roadmaps that map out what to learn next
  • Interview intel from real candidates, free forever
  • Daily quests, streaks, and the global leaderboard
  • Tsuki AI chat for hints and explanations
  • In-depth guides and writeups, always free
  • Progress that persists across every session

Outside the US? Reach out on Discord for regional pricing.