Interview experiences · Citadel Securities
Citadel Securities Software Engineer Interview Experience — Lock-Free Producer-Consumer, Currency Arbitrage, and an Order Book
OnsiteInterviewed 2026-09
Implement a threaded producer-consumer, optimize from a mutex and then a spin lock. A list of currency conversions: determine if an arbitrage opportunity exists. Find the sequence of conversions to make money. Implement an order book data structure: maintain the order of incoming ask/bid/qty price, aggregate. Cancel an order without impacting other orders. Implement a smart queue: maintain the or…
- Implement a threaded producer-consumer, optimize from a mutex and then a spin lock.
- A list of currency conversions: determine if an arbitrage opportunity exists. Find the sequence of conversions to make money.
- Implement an order book data structure: maintain the order of incoming ask/bid/qty price, aggregate. Cancel an order without impacting other orders.
- Implement a smart queue: maintain the order of incoming ticker updates, only the most recent price.
- Memory order, mutex-based implementation. Then improve it with lock-free.
- Network/compiler:
- Pushing quotes of stock symbols, implement a queue to handle the ask price of a stock.
- Needs to be in relevant order. Instead of a string, you can use an Enum. What if big prices are negative ints? How to handle that? Pls use variants, optimal.
Advice:
std::queue/list, APIs, internal implementation. Memory allocation.
Comments
Nothing here yet.
Join in on CSWork →