cswork / libraryOpen practice workspace

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…

  1. Implement a threaded producer-consumer, optimize from a mutex and then a spin lock.
  2. A list of currency conversions: determine if an arbitrage opportunity exists. Find the sequence of conversions to make money.
  3. Implement an order book data structure: maintain the order of incoming ask/bid/qty price, aggregate. Cancel an order without impacting other orders.
  4. Implement a smart queue: maintain the order of incoming ticker updates, only the most recent price.
  1. Memory order, mutex-based implementation. Then improve it with lock-free.
  2. Network/compiler:
  3. Pushing quotes of stock symbols, implement a queue to handle the ask price of a stock.
  4. 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 →