InterviewLegend

Citadel System Design Interview Questions

Alex Chen13 min readUpdated 81 real interview reports
In this lesson
  • Understand why "design" here means trading systems, and why team and seniority gate it
  • See how often each design shape comes up, from the limit order book to backtesting
  • Add what big-tech answers skip: latency budgets, defended structures, determinism, hand-managed memory

Before you prep a single design, settle one thing about what "system design" means at Citadel. It is not the "design Twitter" round you rehearsed for a consumer company. The systems here move orders and market data in microseconds, and the interview probes the same instincts the desk lives on: how fast, how deterministic, how correct under a burst. A limit order book. A market-data feed handler. An order gateway with pre-trade risk on the hot path. The vocabulary is trading, and the clock reads in microseconds, not the hundreds of milliseconds a web request can spend.

The Citadel angle
Two firms share the Griffin name, and the design round looks different at each. Citadel Securities is the electronic market maker, and this is where the deepest low-latency C++ trading-systems design lives: order books, feed handlers, kernel-bypass networking, lock-free queues. Citadel, the hedge fund, staffs platform and data-infrastructure roles, along with risk and research-tooling seats that lean on the same order-book and market-data vocabulary but with more of a data-infra and risk flavor. The two hire and interview separately. So the first move in your prep is knowing which entity your loop belongs to, because it sets how far into microsecond territory the round will push. This guide serves both, and each design ahead notes where the two diverge.

The round is gated, and it comes in two shapes

A dedicated boxes-and-arrows design round is not universal. Candidate reports point to a split by seniority and team. New-grad and junior software-engineer loops are coding-dominant: an online assessment on HackerRank, then live coding phone screens. When "design" appears for them, it usually arrives as a coding-flavored exercise. Most often you implement a working order book in about 45 minutes and then defend its cost model, rather than talking through a whiteboard. Senior and HFT-adjacent loops add the standalone design round at the onsite Superday, and there the low-latency, kernel-bypass, lock-free depth is expected. Treat the two modalities below as one continuum, from "build the structure" to "architect the system."

  • The coding-design exercise: Implement it live. Most common for phone screens and junior loops. Build a working order book or matching engine in roughly 45 minutes, then defend the per-operation cost. A big-tech loop is satisfied when your solution is correct with the right big-O. This round assumes that and asks the deeper questions: where does the memory come from, what is the cache behavior, what would you profile first.
  • The verbal design round: Architect the system. Senior and HFT-adjacent onsites. Feed handler, order gateway with risk, risk aggregation, "design a real-time trading platform." Judged on microsecond latency, on determinism and replayability and reliability, and on a repeated "why that data structure?" drill over every choice you name.
  • Where it is not: The online assessment. The HackerRank OA is pure algorithms, with no system design. Design surfaces only later, in a phone screen or the onsite, so do not expect boxes and arrows before a human is in the room.
  • The language lean: C++ for the hot path. Citadel Securities and low-latency roles skew heavily to C++, where the memory model and cache lines and allocation cost are all part of the answer. The hedge fund platform side is more language-flexible, with Python and other tools common on data and research infrastructure.
The Citadel angle
Confirm on the recruiter call whether a standalone design round is even in your loop. For a new-grad software-engineer seat the honest answer is often no, and the order-book work reaches you as a coding exercise instead. For a senior systems or Securities C++ seat, assume yes, and assume it runs deep on latency and concurrency. Preparing full architecture designs for a junior coding loop wastes the hours you should spend on the implement-it-live drill; walking into a senior Securities onsite with only algorithm practice leaves the low-latency questions unanswered. The gating is real. Calibrate your prep to the seat, not to a generic "there is a design round" assumption.

The design shapes, by how often they surface

Every design worth prepping is a trading system. The chart groups them by shape, collapsing the many re-skins into the underlying problem. Citadel does not publish a question list, and the surface is team-dependent, so read the ordering as a steer toward where your hours pay off rather than a measured rate. One representative prompt anchors the section:

The prompt

Design an in-memory limit order book that supports adding a limit order, canceling by order id, and reading the top of book, all under price-time priority. Then defend the data structures and the per-operation cost as if it sat on the hot path of a market maker.

Limit order book & matching35%
Market-data feed handler20%
Order gateway & pre-trade risk20%
Tick store & history13%
Backtesting & replay12%
Reported Citadel trading-systems design shapes, grouped by problem type, ordered by how often each comes up. Directional, not a published rate; the surface shifts by team and seniority. The real-time risk-aggregation fan-in, the lock-free ring buffer, the memory-pool allocator: none is a shape of its own here. They surface as follow-ups woven inside the order book and the gateway.

Each shape forces a different hard tradeoff. That is why they are worth learning separately rather than as one "trading system." The order book is about picking structures where the common operations, and especially cancels, stay O(1) or O(log n). The whole thing has to stay cache-friendly under a burst. The feed handler has to decode proprietary binary streams from many venues into one canonical schema, then recover cleanly when a packet goes missing without stalling everything behind it. The order gateway runs pre-trade risk checks on the hot path in constant time while still committing an event log durably. The durability commit, not the checks, is what dominates the latency budget. The running fan-in that rolls per-symbol exposure across thousands of strategies rides on top of those same gateway checks. The hard call there is how stale a risk number is allowed to get before it turns dangerous. The tick store is historical data at scale, a columnar time-partitioned layout tuned so a research query can scan years of ticks without touching the order path. Backtesting and replay then reuse that same append-only log to reproduce a day bit for bit, so a strategy only ever sees what existed at the simulated moment.

The Citadel angle
What separates a Citadel answer is that it defends the cost of every choice, in the units the desk cares about. Naming a balanced tree for the price levels is the start of the answer, not the end. The follow-up comes fast. Why not a flat array indexed by tick? What does that trade in memory for a cache-friendly O(1) lookup? And a cancel that has to walk a list is the difference between a book that keeps up during a burst and one that falls behind. Calling for a queue invites "which one, and how much does it buffer before you decide a gap is real." Reaching for new and delete on the order path is close to disqualifying at a latency-sensitive shop; the expected answer is a pre-allocated memory pool with a free list. The mode to practice is a senior engineer at a whiteboard who can put a number and a reason on each decision, not a candidate reciting a reference architecture.

The pipeline the designs plug into

The five designs are not independent. They are stages of one machine that turns raw market data into orders and keeps risk honest while it does. Carry the whole pipeline in your head. It lets you place any single prompt inside the larger flow and speak to the boundaries the interviewer will push on.

Loading diagram...

Read the flow in chips. A trading venue pushes ticks into the feed handler, which fans them into the order book and the tick store. The strategy engine reads the book, sends orders through the order gateway and its pre-trade risk gate, and orders leave for the venue while the event log captures everything for replay. Here is the instinct to carry. The order book and the risk gate sit on the hot path where microseconds count. The tick store and replay run at scale but off that path. Knowing which side of the line a component sits on decides how you reason about it.

The latency and capacity budget

Numbers anchor this round more than most. Have a few in your pocket before you draw anything. These are representative of the constraints that show up in reported prompts and in the public literature on exchange and market-maker systems, not figures Citadel publishes about its own stack.

  • Feed decode: 1 to 5 microseconds. A tuned feed handler decodes a market-data message in low single-digit microseconds. Kernel-bypass networking (DPDK or Solarflare) and RDMA are what take you from the 20 to 50 microseconds a normal kernel socket path costs down to that range. Naming the source of the win, not just the number, is the point.
  • Order book op: O(1) cancel, O(1) top-of-book. The winning structure keeps add, cancel, and best-bid/best-ask cheap even under a burst. Cancels are often more frequent than fills, so an O(1) cancel through a hash map from order id to node is the load-bearing choice, not a nice-to-have.
  • Gateway target: P99 ack < 5 ms at 200k orders/s. A commonly reported low-latency-gateway prompt gives roughly 200,000 orders per second at peak with a P99 end-to-end acknowledgment under 5 milliseconds, RPO near zero and RTO under a minute. The synchronous durability commit for RPO near zero is what eats most of that budget, and saying so is the senior move.
  • Memory discipline: Pools, not new/delete. On the order path, allocate from pre-allocated pools and free lists so there is no per-order heap allocation and no fragmentation after 72 hours of uptime. Allocation cost and cache locality are first-class in this budget, not an afterthought.

The interface these designs share is small and worth naming precisely, because the interviewer will call these operations by name when they push on the cost model. The order book is the canonical example:

The order-book interface
Request
add a resting limit order to the book
add(order_id, side, price, qty) -> void
nothing on success; the order rests at its price level in FIFO arrival order
Inserts into the sorted price levels (bids descending, asks ascending) and appends to that level FIFO queue. Records order_id in the hash map so a later cancel is O(1).
cancel a resting order by id
cancel(order_id) -> void
nothing; the order is unlinked from its level
The frequency-critical path. The hash map gives the node directly, and an intrusive doubly-linked list lets you unlink in O(1) without walking the level. If it was the last order at the best price, locate the next level immediately.
read the current best bid and best ask
best_bid() -> (price, qty); best_ask() -> (price, qty)
the top price level on each side and its aggregate quantity
Must be O(1). Strategy logic reads top-of-book constantly, so caching the best level and updating it on add and cancel beats re-scanning the sorted structure each call.
match a marketable order that crosses the spread
match(order) -> list<fill>
the fills produced as the order walks the opposite side
The harder fourth operation. Walk the opposite side level by level, throwing partial fills under price-time priority until the order is filled or no crossing price remains. This is where the matching-engine design goes deep.

What the round rewards

The bar is not "the design works." A correct architecture can still fall short here. Say it never puts a latency number on the hot path, never defends a data structure against its alternative, never reaches determinism and failure recovery. Then it misses the bar, the same way a working-but-suboptimal solution misses in the coding round. The contrast below is the shape of a strong answer against a generic one.

A Citadel answer

  • Puts a microsecond or millisecond number on the hot path and reasons about what dominates it, like the durability commit inside a 5 ms gateway budget
  • Defends each data structure against its alternative: why a flat array by tick over a tree, why an intrusive list, why a hash map for O(1) cancel
  • Manages memory deliberately, with pre-allocated pools and free lists over per-order new and delete, and names cache locality as a real cost
  • Treats determinism and replay as first-class, with an append-only event log that serves recovery and audit and backtesting at once
  • Names the real bottleneck, whether that is memory pressure on the order map under a burst, gap recovery on the feed, or how stale a risk number can safely get

A generic distributed-systems answer

  • Reaches for a message bus or a SQL database, then horizontal scaling, without asking whether any of it fits a microsecond hot path
  • Names a data structure and stops, with no cost model and no answer to "why not the other one"
  • Ignores allocation and cache behavior, as if the hot path were just business logic
  • Skips determinism, so a backtest cannot reproduce a day and an audit cannot reconstruct an order
  • Stops at a box diagram and never reaches failure recovery, sequencing gaps, or the durability-versus-latency tradeoff

The worked designs

Five designs follow, each a distinct trading-systems shape. Start with the limit order book and matching engine. It is the signature. It appears in both the coding and the design tracks, and every other design in the section touches the vocabulary it establishes.

Design a Matching Engine

The signature. A per-symbol limit order book under price-time priority, with add, cancel, top-of-book, and match. The three-layer structure: sorted price levels as a bucketed array by tick, an intrusive FIFO list per level, and a hash map from order id to node for O(1) cancel. Then memory pools over new and delete, cache locality under bursts, and per-symbol sharding. Also drilled as a live coding exercise.

Design a Market Data Feed Handler

Ingest raw multicast from many venues, decode proprietary binary protocols into one canonical schema, and publish snapshots plus incremental updates with bounded skew. Sequencing and gap recovery through per-channel sequence numbers and replay requests, backed by redundant A/B feed arbitration. Kernel-bypass networking to shave tens of microseconds down to single digits.

Design a Low-Latency Order Gateway

The hot path from order entry to venue. Constant-time pre-trade risk (fat-finger, price-band, credit and position exposure, self-trade prevention, message-rate throttle), idempotent submissions with exactly-once execution reports, and an append-only event log for replay and audit. It also draws the boundary to the firm-wide risk-aggregation fan-in that sits above these local, per-strategy checks, and defends the durability-versus-latency tradeoff under a P99 acknowledgment budget.

Design a Time-Series Tick Store

Store and query enormous tick volumes with a columnar, time-partitioned layout tuned so a research query can scan years of history without touching the order path. The home for VWAP and time-weighted price, plus rolling-volatility computations, off the hot path but at large scale, over the same append-only log the gateway writes.

Design a Backtesting System

Replay recorded market data deterministically so a strategy only ever sees what existed at the simulated moment. The round turns on guarding against look-ahead bias, a fill model that reproduces real queue position and latency, and bit-for-bit reproducibility, then parallelizing across symbols without breaking a cross-symbol strategy.

Each design assumes the fundamentals from the System Design course: the scaling playbook for read and write paths, and the toolbox for when to reach for a log, a queue, or a store. The pages here stay on the trading-systems and low-latency judgment Citadel tests. They lean on those for the general mechanics.

Key Takeaways

  • ✓Design at Citadel means trading systems and low-latency infrastructure, not product distributed systems. Know which entity you are interviewing with, since Citadel Securities pushes deepest on low-latency C++ while the hedge fund leans more toward data-infra and risk.
  • ✓The round is gated. Junior and new-grad software loops are coding-dominant and meet the order book as a live coding exercise; senior and HFT-adjacent onsites add a standalone design round with real latency and concurrency depth. Confirm which you face on the recruiter call.
  • ✓Five designs carry the section. The limit order book and matching engine is the signature, roughly a third of the surface. Then the market-data feed handler, the order gateway with pre-trade risk, the tick store, and a backtesting-and-replay engine off an append-only log. Real-time risk aggregation, lock-free queues, and memory pools appear as follow-ups woven inside them.
  • ✓A strong answer defends the cost of every choice in the desk units. A microsecond budget on the hot path. A data structure defended against its alternative. Memory from pools over new and delete, and determinism through an append-only event log.
Had your Citadel interview?Tell us what they asked. Reviewed before it goes in, never with your name.
Citadel interview guide

Know what Citadel asks before you walk in.

12 coding · 5 system design · 15 behavioral questions

Get Premium$49 a year · Cancel anytime
Or start freeNo card.

Get their questions first.

InterviewLegend is independent and not affiliated with or endorsed by any company it covers.