← Back to Directory

Jane Street interview notes, page 2 of 6

Large Enterprises

Most of these Jane Street write-ups come from Software Engineers (25), then Data Scientists (17) and Machine Learning Engineers (10). The most reported rounds are the technical phone screen (44), the system design round (6), the onsite coding round (3) and the recruiter screen (1).

54 interview notes · updated Jul 2026

Jane Street·Software Engineer·Technical Phone Screen

May 2026
Jane Street SWE interview with a pretty gnarly stream processing problem. The core question was about handling out-of-order records in a sparse matrix reconstructor, and the follow-up discussion on buffering strategy and emission triggers took up most of the time.
  • You have a stream transformer that reconstructs a sparse code-time matrix from batches of (timestamp, code, value) tuples, emitting one row per timestamp with missing entries filled as -1. A small fraction of records arrive with timestamps slightly earlier than already-seen ones. How do you adjust the transformer so the output is still correct?
  • How would you choose the buffer or watermark size for this system, and what are the tradeoffs between latency and completeness?
  • What emission trigger strategy would you use for this transformer: time-based, count-based, or watermark-based? Walk through the tradeoffs.

“The base version wasn't too bad to sketch out but the out-of-order twist is where things got interesting.”

View Post

Jane Street·Data Scientist·Technical Phone Screen

May 2026
Jane Street Data Scientist interview with a tricky probability/optimization puzzle about a two-box money game. Pure math, no behavioral fluff, exactly what you'd expect from them.
  • You have two opaque boxes, both starting empty, and 100 turns. Each turn you either Place (a third party adds $1 to a randomly chosen box) or Take (a randomly chosen box is emptied and you collect its contents). You get no feedback during the game. What is the optimal strategy and what is the exact expected payoff?

“This wrecked me for a bit.”

View Post

Jane Street·Software Engineer·Technical Phone Screen

May 2026
Jane Street software engineer interview with a meaty C++ streaming problem. The kind of question that sounds manageable until you're actually in it trying to keep state across batches without making a mess.
  • Given a stream of batches where each batch is a list of (timestamp, code, value) tuples sorted by timestamp then code, implement a stream transformer that emits (timestamp, row_vector) pairs. The row vector has length M (one slot per code, sorted lexicographically), and any missing code at a given timestamp should be filled with -1.

“This one took me a while to even parse correctly.”

View Post

Jane Street·Software Engineer·Onsite - System Design / Architecture

May 2026
Jane Street system design round, focused entirely on the protocol layer between an internal trading system and an external exchange. Pretty intense scope for a single session, they wanted real depth on message contracts and failure handling, not just hand-wavy architecture.
  • What message types need to flow in each direction between a trading system (OMS/EMS) and an external exchange, and what are the key fields each message should carry?
  • How do you guarantee idempotency, message ordering, and effectively-once processing at the application layer for order messages?
  • How would you handle session management between the trading system and the exchange, including heartbeats, sequence numbers, resend requests, and reconnect logic after a disconnect?
  • How do you handle failure modes like timeouts, duplicate messages, and partial fills in the context of this exchange connectivity design?

“I started with the obvious outbound stuff: new order, cancel, cancel-replace.”

View Post

Jane Street·Frontend Engineer·Technical Phone Screen

May 2026
Phone screen for a frontend role at Jane Street where they dropped a calculator app in front of me and said 'build that.' 45-60 minutes, screen share the whole time, and they're watching you think out loud as much as they're watching the code.
  • Build a calculator web app that matches the functionality and visual style of a reference app shown to you during the interview.
  • Should the calculator use immediate left-to-right evaluation or respect standard mathematical operator precedence?
  • How would you add keyboard support and make the calculator accessible, including focus management and screen reader announcements?
  • How would you extend the calculator engine to support full expressions with operator precedence and parentheses?
  • How would you unit test the calculator logic, and what sequences would you prioritize in your test suite?
  • 0.1 + 0.2 evaluates to 0.30000000000000004 in JavaScript. How do you handle floating-point display issues?

“The reference was basically a standard phone calculator and my first instinct was to just start banging out HTML.”

View Post

Jane Street·Machine Learning Engineer·Technical Phone Screen

May 2026
Jane Street ML Engineer interview with a coding problem that looks like a toy game but has real algorithmic teeth. The unbounded board constraint is what makes it interesting and also where I think most people slip up if they're not careful about complexity.
  • Implement a variant of Connect Four on an unbounded board (columns indexed by any integer, infinite vertical capacity). Support an insert(col, player) operation that drops a piece and returns true if the move creates N consecutive pieces in a row or column for that player. Each insert must run in O(N) time, not scan the whole board.

“The 'unbounded in both directions' part is the real constraint.”

View Post

Jane Street·Machine Learning Engineer·Technical Phone Screen

May 2026
Jane Street ML Engineer interview with a meaty coding problem centered on building a code folding system from scratch. The problem was well-specified but had enough edge cases in the visibility logic to keep you busy for a while.
  • Implement a CodeEditor class that supports indentation-based code folding: a render() method that shows visible lines with display numbers and block-header markers, plus shrink(d) and expand(d) operations that collapse or restore blocks based on the display line number from the most recent render.

“This took me longer to get right than I expected.”

View Post

Jane Street·Software Engineer·Technical Phone Screen

May 2026
Jane Street SWE interview focused entirely on a single design problem about extending a trade tracking class, split into two escalating parts. No behavioral questions, no LeetCode, just one meaty design problem that kept getting harder. Felt like a real engineering conversation more than a test.
  • You have a Table class that tracks trades and their PnL values over time, with support for filters that group trades into overlapping groups. How would you redesign view_result() to run in O(1) time by maintaining incremental state, while also correctly handling a set_global_filter() call that can change the active set of trades at any moment?
  • Now get_pnl is an async callback and you can't call it more than once for the same (trade, time) pair. How do you cache results as class state while still correctly invalidating or recomputing when set_global_filter changes the active trade set?

“This took me a while to even frame correctly.”

View Post

Jane Street·Software Engineer·Technical Phone Screen

May 2026
Jane Street SWE interview with a probability puzzle that looks clean on the surface but has a recursive structure that'll trip you up if you rush it.
  • Three players A, B, and C roll a fair six-sided die. B and C have already rolled and both got 4. You (player A) roll once. If your result beats 4 you win outright, if it's below 4 you lose outright, and if you also roll a 4 then all three reroll simultaneously until one player has a strictly higher result than the others. What is your probability of ultimately winning?

“I set up the base cases fine.”

View Post

Jane Street·Data Scientist·Technical Phone Screen

May 2026
Phone screen for a Data Scientist role at Jane Street. One probability question, but it had enough depth to keep me sweating for a while. The kind of problem where you think you see the answer and then realize your intuition was just wrong.
  • You're offered two dice games. Game 1: roll a single die 4 times, win if you get at least one 6. Game 2: roll two dice 24 times, win if at least one roll shows double sixes. Which game gives you a better chance of winning, and why?

“My first instinct was that they're basically the same because the expected number of successes is 2/3 in both cases.”

View Post