I work in tech. Every time I get ready to switch jobs, a pile of workload drags me back, so I just kind of go with the flow. Three months ago (I had 4.5 YOE at the time), a recruiter reached out saying some trading companies could do 3-days-a-week hybrid in Florida. Then the team they actually lined up didn't match the pitch lol, they said it was New York only. I wasn't that interested and honestly wanted to just turn it down, but figured it could be practice. And then, surprisingly, there was no tech screening at all, it went straight to 5-6 technical rounds (suspicious, but again, it was just practice for me, so I didn't question it).
The slot was 45 minutes (take out the small talk at the start and end and it's really about 35 minutes). The interviewer was a young MIT prodigy, probably about 10 years younger than me. Honestly so envious...
Getting to the point: the setup was a whiteboard-style Python playground, and I had to hand-roll a model that could train and run inference by the end of the interview. There was an AI chatbot on the side that I could ask anything. I tried it, and it was roughly Haiku level, and it output plain text, so copying it over and fixing the formatting was slower than typing it myself. It basically didn't help, and I actually wasted a few minutes figuring it out. The interface is similar to the paid version of HackerRank's AI-assisted tests. Another company I interviewed with before used something pretty much the same, but I couldn't find the original version Citadel uses. Citadel's AI was worse.
The questions built on each other layer by layer. The first part gave a sequence, described very concretely: 16 points, each point with 6 features, and you do a 0/1 binary classification on the whole sequence. They hinted I could use PyTorch. I asked whether it was a time series and got a yes, so seeing PyTorch, on autopilot I hand-rolled the transformer I had practiced many times and finished it in a few minutes. Looking back now, I took way too much for granted on this part.
The second part first asked what to do if the sequence length isn't fixed at 16, since anywhere from 16 to 100 is possible. I wanted to upsample/downsample and was reminded not to do data augmentation; the exact words were "solve it in a model way." Following the transformer line of thinking, I went to add timestamp positional encoding. Then they said the order of the points isn't fixed either. omg, does this even count as a time series anymore? The interviewer prompted me by asking whether a linear model could do it, and only then did it click that the transformer may have been the wrong direction from the start. I quickly took the hint, said yes, and did a decision tree, which I managed to write out in time. They also asked how to handle missing features. I said fill them with the mean, and explained why not 0. But after the interview I realized there's no need to replace the NaNs at all; there's a specific explanation in an article on handling missing data in decision tree models. Some people on Stack Overflow discuss how to fill in the NaNs, but anyway I think the first article is right: no need to fill.
I couldn't find the original question on LeetCode. I did find one elsewhere with almost exactly the same idea, except it also tests gradient boosting.
At the end I asked the interviewer what they like most about the company. The answer: what they like most is the competition... OK fine...
The lesson is: don't jump to a neural network just because you see PyTorch. Everything I prepared was tech, the autopilot thinking was way too strong, and I'd forgotten all the fundamentals. If I interview for quant/trading roles next time, I should prepare more of these traditional models. To shore up my stats background, I've been going through the StatQuest channel on YouTube.
Finally, a rant about the recruiter: at first they said the feedback was positive, when honestly even I think I deserved to get ghosted. They're probably in contact with so many candidates that they got them all mixed up. Maybe try using Muse.
Discussion
Loading comments…