Quant interview preparation
Prop market making and quantitative research, weighted the way the interviews actually are: probability and expected value, statistics and machine learning, market making logic, programming and options. Every question is either traced to a named firm from a public candidate report, or tagged at desk level when we could not trace it, and every probability answer shows the reasoning path rather than just the number.
100 questions, mapped to the firms that asked them
- Questions
- 100
- Traced to a firm
- 53
- Firms
- 15
- Updated
- September 2026
080Can you implement a linked list, and when would you actually use one on a trading system?Jump TradingProp Trading · Remote · 2022
Say this
Yes, a node with a value and a next pointer, plus a head, and the usual care about the empty list and about updating head when you insert or delete at the front. But the honest answer to the second half is: rarely, because pointer chasing destroys cache performance.
Then walk it
- The implementation: struct with value and next, insert at head in O(1), search in O(n), delete given the previous node in O(1). Use a dummy head node and most of the edge cases disappear, which is the trick worth knowing for interviews.
- The standard edge cases they will check: empty list, single element, deleting the head, and not leaking the node you unlinked. In C++ that means being explicit about ownership, and in a real codebase it means a unique pointer or an arena.
- What a linked list genuinely buys you: O(1) splice of a node from the middle if you already hold a pointer to it, and stable addresses so a pointer stays valid across insertions. That is exactly the requirement in a limit order book, where you need to cancel an arbitrary resting order in constant time, so orders at a price level are typically an intrusive doubly linked list with a hash from order id to node.
- What it costs: every traversal is a potential cache miss, and a vector beats a list for iteration by an order of magnitude even when the asymptotics say otherwise.
- So the real-world answer is an intrusive list over a pre-allocated node pool, not a textbook list with individual heap allocations. Saying that is the difference between having done the exercise and having written low-latency code.
Where candidates lose it
Writing the code correctly and having nothing to say about why you would use one. At a trading firm the interesting half is the memory and cache discussion, and the order book cancel case is the one concrete example where a linked list is genuinely the right structure. Also do not forget the dummy head trick, it removes most of the bugs.
Expect next
- Reverse it in place.
- Detect a cycle in constant space.
- Why would a vector usually beat a list even when the complexity says otherwise?
Reported by candidates at Jump Trading (Prop Trading, Remote, 2022). Source: Wall Street Oasis.
085C++ or Python? Where does each belong in a quant stack?Quant researchQuant development
Say this
Both, in different places. Python for research, where iteration speed and the data-science ecosystem dominate. C++ for anything on the critical path, where you need deterministic microsecond latency and control over memory. The split is a question of which cost dominates, developer time or machine time.
Then walk it
- Python's real advantage is not the language, it is pandas, numpy, scipy, statsmodels and scikit-learn plus notebooks. A research idea gets tested in an afternoon. The performance is acceptable because the heavy loops sit in vectorised C underneath.
- Python's disqualifying weakness for execution is non-determinism: garbage collection pauses, the global interpreter lock, and unpredictable allocation. A tail latency you cannot control is worse than a mean latency that is higher.
- C++ gives you no garbage collector, control of memory layout and cache behaviour, zero-cost abstractions, and access to kernel bypass networking. The cost is development speed and a large surface for undefined behaviour.
- How real stacks resolve it: C++ or Rust for the gateway, book building and order entry, Python for research, signal development and analysis, with the shared logic compiled once and bound into Python through pybind11 so research and production use the same code. That last point matters, because a research-production mismatch is a reliable source of live losses.
- And I would name the middle ground rather than pretend the choice is binary. Numba, Cython, JAX and polars cover a lot of ground where Python is too slow but full C++ is unjustified, and Rust is genuinely taking share on the systems side. The judgement I would offer is: write it in Python until you have measured that it is too slow, then move only the measured hot spot.
Where candidates lose it
Picking a side as a matter of taste. It is a judgement question about where each tool fits, and a candidate who says C++ is better shows they have only worked on one side of the stack. Mention the research-to-production consistency problem, because it is the practical issue this split creates and few candidates raise it.
Expect next
- How would you keep research and production code consistent?
- What specifically makes Python unsuitable for the critical path?
- Where would you use Rust?
Firm tags come from public, anonymous candidate reports on Wall Street Oasis: strong signal, not sworn testimony. Firms are named as the places a question was reported, not as partners of Fin Maverick. Answers are written for this page to show how to think out loud; they are not scripts to recite.

