Sharing an OpenAI interview report. Aside from the phone screen, everything was a question I'd already seen before — because I over-prepared from question banks and cared way too much about the outcome, I interviewed badly. I really regret it.
The phone screen covered malloc, which others have already shared — the details aren't much different. There were two parts: first a naive first-fit solution, then a discussion and simple implementation of best-fit.
Onsite
ML Coding (the prompt was matmul + backprop)
The question was roughly a simplified version of GEMM. The first part was deriving basic sharded matmul together with the interviewer. The second part was deriving matmul + backprop across devices using numpy/pytorch. After that there was a bug-hunting segment — you're told there's a fixed number of bugs to find, and it's basically solvable just by deriving the basic matmul + gradient computation. I didn't have time to write out the last bug, but I roughly described the likely direction and the interviewer generally agreed. I haven't heard anyone else share this one, but the complexity is about on par with the cumprod problem.
ML System Design
The prompt said it was system design, but the interviewer basically only asked about agent harness + eval design. They didn't test model training at all, and basically wouldn't let me discuss training/serving details. At first I wanted to bring up search embedding / index serving since I come from a search/ads/recommendation background, but the interviewer didn't really care about that — there was a gap between his expectations and mine there, and I answered haltingly. Looking back, I honestly don't know how to prepare for this round — probably the only way is to go accumulate more experience on a post-training team?
Coding
I prepared a lot of common problems, and even the prompt said General Coding. But the interviewer opened with "this is a debugging session, should be what you got in the prompt right." I was stunned in the moment but didn't push back.
The interviewer just pulled up a Django app and had me figure out what was wrong with its rate limiter. The problem itself was pretty simple — just debugging, and basic print-statement debugging could find it. But I was so nervous that I kept making mistakes. I even started auditing the entire codebase, and the interviewer didn't stop me — only after a few minutes did he say the code was all fine and I should stop wasting time, lol.
Afterward I asked the recruiter about it, and the recruiter said it was completely within the scope of the question, so I just have to accept it.
Discussion
Loading comments…