Practice · Quant prep · Hudson River Trading
Hudson River Trading interview process
Hudson River Trading is unusually open about what its engineering interviews look for, and the answer is not trick questions: readable code, real systems knowledge, and taking hints well. It also says plainly that needing help is allowed.
The process, from Hudson River Trading's own pages
- Take-home test. Usually timed and with a deadline, typically on HackerRank or Codility; the sample tests are not comprehensive, so test your own edge cases. Source
- Phone interviews. Roughly two: a 45-minute technical discussion of systems knowledge, data structures or problem solving, and a programming interview, in C++ or Python for some roles and any language for others. Source
- Onsite. A full day of back-to-back interviews, virtual or in person, on programming, systems knowledge, problem solving and soft skills. Source
- What they look for. Idiomatic, readable, well-encapsulated code; fundamental systems knowledge such as memory, I/O and process management; breaking unfamiliar problems into steps; and taking hints and feedback well. Source
- Hints are fine. The firm writes that it is fine for candidates to need hints and guidance and to make mistakes. The post describes the 2021–22 campus season, and the firm notes its process changes. Source
What candidates report
Candidates for engineering roles describe the take-home as a short set of coding problems and phone rounds in a shared editor, sometimes debugging an existing program. Algorithm developer candidates also report probability and statistics questions in later rounds.
What Hudson River Trading states it pays
We could not read a stated salary in any Hudson River Trading advert: the adverts render only in a browser. Pay for comparable roles at other firms, from their own adverts, is in the Quant Careers Report.
PDF · Edition 2 · £79
The Quant Careers Report
Hudson River Trading’s process step by step and the pay it states in its adverts, side by side with 12 other trading firms, plus when to apply and five timed practice papers with worked solutions.
What Hudson River Trading is testing
The systems discussion is where many strong algorithm candidates lose ground. Interviewers want to hear how memory is laid out, what a system call costs, what happens when a process reads a file, and why one data structure is faster than another on real hardware, not only in big-O terms.
In the programming rounds, clean code is part of the answer. Name things well, separate concerns, and handle the edge cases the prompt did not mention; a correct solution that is hard to read scores below one that is clear.
Six practice problems
Written by us to match the types Hudson River Trading is publicly reported to ask. None is a copy of any question Hudson River Trading has used.
-
Prices are stored as whole numbers of ticks from 0 to 1,000,000. How many bits does one price need?
Show the answer
20
2¹⁹ = 524,288 is too small and 2²⁰ = 1,048,576 is enough, so 20 bits. Packing a price into 20 bits instead of a 64-bit double lets more of an order book fit in each cache line, which matters more than the arithmetic.
-
A loop reads a 64 MB array once from start to end. With 64-byte cache lines, how many cache lines does it bring in?
Show the answer
1,048,576
64 MB is 2²⁶ bytes and a line is 2⁶ bytes, so 2²⁰ = 1,048,576 lines. Because the access is sequential, the hardware prefetcher fetches most of them before they are needed, which is why a linear scan runs far faster than the same number of random reads.
-
What is the largest number of comparisons a binary search over 1,000,000 sorted elements can need?
Show the answer
20
Each comparison halves the remaining range, and ⌊log₂ 1,000,000⌋ + 1 = 19 + 1 = 20. On hardware, the first few comparisons touch widely separated memory and miss the cache, which is why cache-friendly layouts of a sorted array can beat plain binary search.
-
On a grid of 5 × 5 squares, how many shortest paths go from one corner to the opposite corner along the grid lines?
Show the answer
252
Every shortest path is 5 moves right and 5 moves up in some order, so the count is C(10, 5) = 252. The same count, built up cell by cell, is the textbook dynamic programme for grid paths, and the interview follow-up is usually to add blocked cells.
-
Starting from x = 255, how many times can you apply x = x & (x − 1) before x becomes 0?
Show the answer
8
x & (x − 1) clears the lowest set bit, so the loop runs once per set bit. 255 is 11111111 in binary, eight ones, so 8 times. This is Kernighan's way of counting bits, and it runs in time proportional to the number of ones rather than the word size.
-
Quicksort with the first element as pivot is run on the four values 1, 2, 3, 4 in a uniformly random order. What is the expected number of comparisons?
Show the answer
29/6 ≈ 4.83
Partitioning n elements costs n − 1 comparisons, so C(n) = n − 1 + average of C(k − 1) + C(n − k). That gives C(2) = 1, C(3) = 8/3 and C(4) = 29/6, matching the closed form 2(n + 1)Hₙ − 4n. Checking it by enumerating all 24 orders is a good habit, and a good interview answer.
Practise under time
Hard paper: Ten hard probability and puzzle questions, 45 minutes.
How to prepare for Hudson River Trading
Practise writing code that someone else would want to maintain, under time, in the language the role asks for. Revise how memory, caches, system calls and processes work until you can explain them without notes, because the systems discussion is its own round. When you are stuck in an interview, say so and take the hint: the firm has said that is fine.
Interviewing at HRT? The strategy hour tells you where your coding and systems knowledge stand against its process, and what to fix first. What the hour covers, £250.
