Did the Jane Street coding rounds this past spring. Going to be specific because I wasted time prepping the wrong things.
The online assessment (first filter): Two coding problems, 90 minutes, HackerRank-style platform. One was a medium graph problem, one was harder. Think: Leetcode hard territory but unusual framing. They like problems that require you to notice a non-obvious constraint and reformulate them. I spent 30 minutes on problem two and got 60% of test cases. Still moved forward, so partial credit matters.
The technical phone screen (before onsite): Live coding, 45 minutes, one problem. Mine was a variant of an interval-merging problem but with additional state. The interviewer watched me think out loud. They interrupted twice to change a constraint mid-problem. This is intentional: they want to see how you adapt. If you freeze when they change the problem, that's a red flag.
The onsite coding rounds: Three coding interviews across the onsite. Each is 60 minutes, one problem per round. The problems I saw were: A simulation problem with a complex state machine A combinatorics problem with recursion and memoization A shorter, trickier problem that looked simple but had edge cases that destroyed me
All of them required clean, correct code, not just a working solution. I was asked about time complexity after every round. One interviewer asked me to re-implement my solution with a different data structure.
Leetcode hard is not overkill for prep. But blind grinding hards is not the point. Practice problems where you have to adapt mid-solve, and get comfortable talking through uncertainty without falling apart. That's what separates the rounds I passed from the one I didn't.