2021–2026 HRT Software Engineer (Python Track + Onsite) OA / Interviews: 35 Experiences (Part 1 :)
- Company
- Hudson River Trading
- Reports
- 19 interview reports
- Level
- Unknown
- Stages
- OA → Phone screen → Onsite
In this series
- Part 1 (current): the 19 Python-track reports (Python-knowledge rounds, debugging over SSH, the full London Python loop) plus the question tables for the whole series.
- Part 2: 3 Python intern reports and 13 onsite or final-round reports from C++ or unstated-language candidates, plus patterns across all 35.
When HRT interviews someone for a Python role, the Python questions are mostly about how the language works underneath: how a dict handles collisions, what with and yield really do, how the interpreter runs your code. Debugging someone else's Python in a terminal comes up nearly as often as LeetCode.
Coverage: Hudson River Trading software engineering interviews · 19 Python-track or Python-tested reports (Software Engineer, Python Developer, Python Engineer, Operations Developer (Python), Data Software Engineer; junior to senior, plus several with no level given) · 3 Python intern reports · 13 onsite or final-round reports from SWE candidates whose language was C++ or not stated · US, UK, Canada and Singapore · May 2021 to October 2026
New grad on the Python track? That single report has its own post: 2026 HRT Software Engineer New Grad (Python Track) OA / Interviews.
What came up
Across the 19 Python-track reports, Python language knowledge is the most common thread. Twelve candidates were asked about Python itself, beyond just writing code in it. Algorithm coding came up just as often. Debugging or explaining existing Python code came up in five.
| Topic (Python-track reports) | Reports | Most recent report |
|---|---|---|
| Algorithm coding (LeetCode-style or puzzle) | 12 of 19 | 2026-10-20 |
| Background, past work, culture fit | 4 of 19 | 2026-10-20 |
| Python language knowledge and internals | 12 of 19 | 2026-08-24 |
| Debugging or explaining existing Python code | 5 of 19 | 2026-08-24 |
| System design | 2 of 19 | 2026-02-04 |
| OS, memory, Linux or Bash | 4 of 19 | 2025-08-08 (report date) |
| Take-home project with unit tests | 1 of 19 | 2023-01-01 |
| Trade-data processing and trade data structures | 1 of 19 | 2022-05-07 |
| SQL | 1 of 19 | 2022-05-07 |
Inside "Python language knowledge", the dict is the repeat favorite: three separate candidates were asked how a Python dict works under the hood. A candidate can show up in more than one row.
The 13 onsite reports from C++ or unstated-language candidates are in Part 2. They show what the onsite day looks like more than what Python is asked.
Questions we found
These tables cover all 35 reports across both parts of this series. Each date is the interview date the source gave, or the post date where marked.
Python knowledge (spoken questions)
| Question | Frequency | All last seen dates |
|---|---|---|
| Ten-plus short Python-fundamentals questions inside a timed OA | 1 report | 2026-08-24 |
| How a Python dict works under the hood (hash collisions) | 3 reports | 2025-08-08 (report date), 2024-10-09, 2021-05-12 |
| How CPython manages memory | 1 report | 2025-08-08 (report date) |
How the with keyword works |
1 report | 2024-11-13 |
| How the interpreter and compilation handle a given piece of code | 1 report | 2024-11-01 |
What yield is for |
1 report | 2021-12-01 |
| How the GIL works, with its pros and cons | 1 report | 2021-12-01 |
| Hash tables: collisions, cost of each operation, when and how they resize | 1 report | 2021-12-01 |
Debugging and code reading
| Question | Frequency | All last seen dates |
|---|---|---|
| Fix a program so its output matches the requirement | 1 report | 2026-08-24 |
| Extend one API in a small existing codebase (intern) | 1 report | 2026-08-06 |
| Explain what a Python snippet does and how to improve it | 1 report | 2024-10-14 |
Spot the bug in a subclass of Python's dict |
1 report | 2024-02-01 |
| Debug Python scripts that read CSV files, with bugs in the data, the code or both | 1 report | 2022-05-07 |
| A Python script got slower with no code change: why, and what would you do | 1 report | 2022-05-07 |
| Fix a short Python script by changing only a few lines (OA) | 1 report | 2022-05-07 |
Algorithms / Data Structures
| Question | Frequency | All last seen dates |
|---|---|---|
| Contact-tracing graph problem (intern) | 1 report | 2024-11-29 |
| Find the polydivisible pandigital number | 1 report | 2024-02-01 |
| Fewest changes to make every value in a sequence unique | 1 report | 2022-07-25 (report date) |
| Does one string contain a fragment of another, under several constraints | 1 report | 2022-07-25 (report date) |
| Pick at most 2 of N projects under ordering rules to get the most value | 1 report | 2022-07-25 (report date) |
| Can a binary string be split into size-k blocks, each with a set number of 1s | 1 report | 2022-02-01 |
| Repeatedly remove equal adjacent characters until none are left | 1 report | 2021-12-01 |
| Build an n-ary tree from parent and value lists, then find the best k-length path sum | 1 report | 2021-12-01 |
System Design
| Question | Frequency | All last seen dates |
|---|---|---|
| Route network packets between one hub and several node servers | 1 report | 2025-04-01 |
Low-Level Design (LLD/OOD)
| Question | Frequency | All last seen dates |
|---|---|---|
| How would you implement a garbage collector | 1 report | 2025-11 (report date) |
| Design a concurrent framework like Python's asyncio (intern) | 1 report | 2024-11-29 |
| Hit counter that also returns each hit's payload, when payloads don't fit in memory | 1 report | 2023-07-03 (report date) |
| A data structure for trade operations, built for speed | 1 report | 2022-05-07 |
SQL and data processing
| Question | Frequency | All last seen dates |
|---|---|---|
| Process a set of trades and pull out the required information | 1 report | 2022-05-07 |
| A SQL query with a JOIN, schema and sample data given | 1 report | 2022-05-07 |
Take-home
| Question | Frequency | All last seen dates |
|---|---|---|
| Build a small system in Python, with unit tests, in about a week | 1 report | 2023-01-01 |
CS fundamentals
| Question | Frequency | All last seen dates |
|---|---|---|
Is std::vector::push_back O(1)? |
1 report | 2025-11 (report date) |
| How can you run multiple processes on one computer | 1 report | 2022-10-01 |
| Virtual vs physical memory, and what happens when virtual runs past physical | 1 report | 2021-12-01 |
| Stack vs heap, and what lives in each | 1 report | 2021-12-01 |
Behavioral (BQ)
| Question | Frequency | All last seen dates |
|---|---|---|
| Tell me about your past experiences | 1 report | 2024-10-01 |
| Why do you want to work here | 1 report | 2023-05-14 |
| Culture-fit chat with the team head about the role and recent projects | 1 report | 2022-05-07 |
| Describe a recent interesting bug you fixed | 1 report | 2021-12-01 |
35 detailed candidate timelines, loops, and screens
Entries 01–19 are here; 20–35 continue in Part 2.
Python-track and Python-tested software roles
01: 30-minute coding exercise, C++ or Python
Report date: 2026-10-20 · Role: Software Engineer · Level: Junior · Result: No offer
Interview
- A talk about the candidate's background.
- A 30-minute coding exercise, explaining the approach in detail along the way. The candidate could pick C++ or Python. They called the problem interesting and challenging, but didn't say what it was.
02: OA packed with Python trivia
Report date: 2026-08-24 · Role: Senior Software Engineer · Level: Senior · Result: Did not pass the OA
Online assessment
- More than ten short questions on Python fundamentals. Some needed trivia-level knowledge.
- A coding part: fix a program so its output matches what the requirement asks for. Not hard on its own.
- The time was tight, and switching between the two kinds of questions ate into it.
03: CodeSignal, then a Zoom coding round with Python knowledge
Report date: 2026-02-04 · Role: Software Engineer · Location: New York · Result: No offer
CodeSignal (taken within a week of applying)
- Four questions. The candidate got three fully and didn't optimize the fourth.
Zoom coding interview
- Two or three LeetCode medium/hard questions.
- Some system design questions, plus questions on Python knowledge and data structures.
04: a CPython-internals round in the final
Report date: 2025-08-08 (interview "a while back") · Role: Not stated · Result: No offer after the final round
Final round
- One of the final-round interviews was on Python internals. It went into how CPython works, for example how a dict handles hash collisions and how memory is managed.
- The candidate spent a few weeks reading CPython source to get ready, and passed this interview. They didn't get through the final round overall.
05: two hours of Python syntax, live coding and debugging
Report date: 2025-04-21 · Role: Sr. Software Engineer · Result: No offer
Interview 1 (1 hour)
- Technical questions, live coding and debugging.
Interview 2 (1 hour)
- Much the same format. The candidate described the questions as Python syntax or straightforward LeetCode-style.
06: Python fundamentals deep dive, then a design-flavored coding round
Report date: 2024-11-13 · Role: Software Engineer · Level: Junior · Location: Singapore · Result: Did not pass the second interview
OA
- The standard CodeSignal test.
Phone screen
- A deep dive on Python fundamentals. One question: how does the
withkeyword work?
Second interview
- One coding question with a design focus. The candidate didn't describe it.
07: questions on how the interpreter works
Report date: 2024-11-01 · Role: Software Engineer · Level: Junior · Location: Singapore · Result: No offer
OA
- CodeSignal.
First round
- Deep Python questions. Some went into how compilation and the interpreter work, for example being shown some code and asked how the interpreter handles it.
08: Python Engineer round on syntax, Bash and debugging
Report date: 2024-10-14 · Role: Software Engineer (applied as Python Engineer) · Location: Singapore · Result: No offer
OA
- Not described.
Technical round
- Questions on Python syntax and Bash commands.
- Debugging-style questions, such as: here's some code, tell me what it does and how you'd improve it.
- The candidate enjoyed how the debugging questions were put together.
09: dict internals on the phone, then a five-part virtual onsite
Report date: 2024-10-09 · Role: Systems Software Engineer · Location: New York · Result: No offer
Coding round 1
- Four medium-level LeetCode problems.
Phone interview
- Resume discussion, plus basic Python and Linux questions. One was to explain how Python implements dictionaries.
Coding round 2
- Harder problems than round 1.
Virtual onsite
- Five conversations covering technical questions, system design and behavioral questions.
10: Python SWE in Singapore, full-day onsite and an offer
Report date: 2024-10-01 · Role: Software Engineer, Python · Location: Singapore · Result: Offer, accepted
CodeSignal
Two phone rounds (1 hour each)
Full-day onsite
- Scheduling took about two extra weeks because of availability.
- Interviewers explained what each round would cover before it started. The candidate felt they cared more about the thinking than about landing the exact answer.
- One question shared: tell me about your past experiences.
Results came back quickly after each round.
11: a Python plus JavaScript pre-screen
Report date: 2024-05-01 · Role: Software Engineer · Location: Chicago · Result: No offer
Pre-screen coding challenge (3 hours for both)
- A hiring manager reached out first.
- One Python problem and one JavaScript problem. Both leaned on language syntax more than algorithms. The JavaScript one was to design a game.
12: debugging over SSH, then a polydivisible pandigital number
Report date: 2024-02-01 · Role: Software Engineer · Location: US · Result: No offer
Interview 1: code reading over SSH
- The candidate SSHed into a VM and shared a terminal through tmux.
- They were shown Python snippets and asked to explain how each worked and spot possible bugs. One was a subclass of Python's
dict: find the bug that would cause an error. - One interviewer ran it, with two more people watching. The candidate found this round more technically involved than the next one.
Interview 2: CoderPad
- Traditional puzzle-style problems, nothing Python-specific.
- One was to find the polydivisible pandigital number. Polydivisible means each prefix of the number is divisible by its length. Pandigital means it uses each digit once.
- The candidate leaned on
itertoolsbuilt-ins. The interviewer seemed to expect the answer in another form, and the two didn't quite connect.
The recruiter then went quiet for two weeks.
13: a week-long Python take-home
Report date: 2023-01-01 · Role: Software Engineer (applied as Python Engineer) · Level: Junior · Location: Singapore · Result: Did not pass round 1
Take-home (about a week)
- Build a system in Python, with unit tests. The candidate didn't say what the system was.
14: three rounds of Python Q&A in one hour
Report date: 2022-10-12 · Role: Data Software Engineer · Location: UK · Result: Did not pass
Interview (1 hour)
- Three question-and-answer segments on basic Python.
- One LeetCode-medium BFS/DFS problem.
15: a Python Developer coding screen with three problems
Report date: 2022-07-25 (post date) · Role: Python Developer · Result: Not stated
Coding screen (OA)
- Find the fewest changes needed to make every value in a sequence unique. Solved.
- Decide whether one string contains a fragment of another, under several constraints the candidate didn't list. About 85% of the tests passed because of an off-by-one bug.
- A company has N projects with values V[N] and M ordering requirements between them, and can finish at most two projects. Pick the pair worth the most. The candidate ran out of time on this one.
16: the full Operations Developer (Python) loop in London
Report date: 2022-05-07 · Role: Operations Developer (Python) · Location: London · Experience: about 3.5 years at a large tech company · Result: Offer, negotiated, accepted; later joined
OA (1 hour, Codility)
- A SQL query with a JOIN, with the schema and sample data given.
- A short Python script with a bug, to fix by changing only a few lines.
- An easy Python algorithm problem.
Phone 1: debugging (1 hour, SSH into a prepared VM)
- Five scenarios. Each had a Python script and a CSV file. The bug could be in the data, in the script or in both: a bad file format, a syntax error and so on.
- The candidate finished all five in about 30 minutes.
Phone 2: data structures and algorithms (1 hour)
- Two questions. The first was around LeetCode medium and took most of the time.
- For the second, the candidate explained an approach but didn't get working code.
Virtual onsite (3 technical rounds + 1 culture fit)
- Debugging and troubleshooting (1 hour). Debug a Python script and its data file while screen-sharing and running it locally. Then an open question: a Python script suddenly got slower with no code change. What could cause it, how would you fix it, and which fix would you pick when?
- Trade data processing (1 hour). Process trade data and pull out the required information. More operations work than algorithms or design.
- Trade data structure (1 hour). Build a data structure that supports operations on trades, with the emphasis on speed and efficiency.
- Culture fit (45 minutes) with the global head of the team, about the role and recent projects.
17: a bit-manipulation-heavy OA for Python SWE
Report date: 2022-02-01 · Role: Software Engineering – Python · Location: US · Result: Did not pass the OA
OA (HackerRank)
- Three questions, rated LeetCode medium to hard, mostly bit manipulation.
- One example: given a binary string, decide whether it can be split into blocks of size k, each holding a specific number of 1s.
18: Python Developer OA and a phone screen full of internals
Report date: 2021-12-01 · Role: Python Developer · Location: Canada · Result: No offer
OA (Codility)
- Collapse a string by removing equal adjacent characters, again and again, until no pair is left. The candidate's examples:
ABBCDDCshrinks toA, andAABBAAshrinks to nothing. - Build an n-ary tree from a list of parents and values plus a number k, then find the largest sum of a path of length k.
Phone screen (45 minutes, Zoom)
In this order:
- Describe a recent interesting bug you fixed.
- What is
yieldfor? - How does a hash table work? What happens when two keys hash to the same spot? What do lookup, insert and delete cost? When does it grow or shrink, and what does that cost?
- How does memory work? How does the OS give memory to each process? Virtual vs physical memory, and what happens when virtual memory goes past physical?
- Stack vs heap, and what's stored in each.
- How does the GIL work, and what are its upsides and downsides?
19: dict internals and an array question
Report date: 2021-05-12 · Role: Software Engineer · Location: US · Result: No offer
Interview
- How a Python dictionary works under the hood.
- A basic algorithm question about deleting from an array.
- The candidate had seen some of the questions on review sites beforehand.
In this series: Part 1 (current) · Part 2
Sources: Anywhere useful interview info can be found.
Comments
0No comments yet — be the first to share what you know.