Top Tech Transition Enroll now

Real Interview Experiences

Learn what to expect, straight from candidates who've been through it at top tech companies.

908 interviews243 companies286 offers
Loading experiences…

Browse by company

Browse by role

← Back to all experiences

OpenAI Research Engineer Interview Experience

OpenAI · Machine Learning Engineer

The coding plus ML stats round was the hardest by far. They basically asked me to implement an all_gather on noisy nodes, derive how many rounds you’d need for a target error, then figure out a better algorithm using the fact you’re transmitting floats.
ResultRejected
Timespan7 weeks
DifficultyVery difficult
Rounds6

Interview process

I got in through a referral, then did a recruiter screen, two 60 min technical screens, and three more technical interviews after that. I got rejected after those technical rounds, so I never made it to the hiring manager chat and maybe a team presentation, which sounded like the next steps. The whole process felt a lot less gameable than a normal big-tech loop. The first screen was more of a real algorithm problem, the second was about writing correct code fast, and the later rounds were practical ML/debugging plus one really hard stats-heavy round. The ML stats round was the one that hit hardest because it felt like graduate-level information theory, and across the process I got fewer hints than I'm used to.

Interview rounds · 6

  1. 1

    Recruiter screen

    BehavioralCross-Functional

    It was a pretty standard recruiter call, but they spent more time than usual on how soon I could join and what kind of team I should be matched to.

    1. Q1. Why OpenAI, and what kind of work or team are you looking for?
      How they answered

      I walked through my background at a high level, the mix of engineering and research work I like, and what kinds of teams I thought would make sense for me. They were clearly trying to route me to the right team, so it was less about grilling me and more about fit. I also answered the usual why OpenAI question and explained why I wanted this kind of role specifically.

      Follow-up questions
      • What have you been working on recently, and what would be a good fit for you here?
    2. Q2. How soon could you join if things moved forward?
      How they answered

      They went a little deeper than most recruiters do on start timing. It was basically a long discussion about availability, notice period, and how fast I could realistically transition. It wasn't hostile or anything, just more detailed than the average first call.

      Follow-up questions
      • What would your transition timeline look like?
  2. 2

    Technical round

    CodingData Structures & AlgorithmsTechnical

    The first technical screen felt like a moderate-to-hard algorithm round, and it was much more about finding the right approach than grinding out syntax.

    1. Q1. Given a Python package, find the latest Python version that supports it.
      How they answered

      I treated it like a fancy binary search problem. The obvious solution got me through the basic version, but it only handled a subset of cases. The harder part was recognizing that the fully correct version needed something more like a hierarchical binary search. I don't remember the exact test cases, but the round was really testing whether I could come up with the right algorithmic structure, not whether I'd memorized a pattern.

      Follow-up questions
      • How would you make your solution work in the fully general case, not just the easy subset?
  3. 3

    Technical round

    CodingTechnical

    The second technical screen was less about coming up with a deep algorithm and more about writing correct code fast while they kept extending the spec.

    1. Q1. Given a string that records whether an instrument was played at each beat, convert it into a string representation of music notation.
      How they answered

      I first handled the single-instrument case, where the input string tells you at each beat whether something was played, and the output had to look like a sheet-music-style string with note lengths like half notes and full notes. Then I extended it to multiple instruments and finally added rests. It wasn't the hardest problem conceptually, but it was speed-sensitive. If you weren't coding cleanly and correctly, I think it would be very easy to run out of time.

      Follow-up questions
      • Now extend it from one instrument to multiple instruments.
      • How would you model rests in the output?
  4. 4

    Final / onsite round

    CodingMachine LearningAnalyticalTechnical

    This was the hardest round for me by far. It started as coding, then turned into a pretty deep information-theory style question with almost no hand-holding.

    1. Q1. Implement all_gather across multiple nodes.
      How they answered

      I first coded an all_gather implementation. After that, the round shifted into deriving a bound on the number of rounds needed when communication is noisy and you want the final answer within a given error tolerance. Then they pushed on how to improve the naive bound because it was way too inefficient. The important insight was to exploit the fact that you're sending float values, not arbitrary reals, and use that to design a better algorithm. This felt like graduate-level information theory.

      Follow-up questions
      • If the channels between nodes are noisy, derive a worst-case formula for how many rounds you need to get the answer within a target error.
      • How would you improve that, since the naive bound is too slow?
      • Can you design a better algorithm by using the fact that you're transmitting float values rather than arbitrary real numbers?
  5. 5

    Final / onsite round

    Machine LearningDebuggingCodingTechnical

    The ML debugging round was more predictable than the stats round, but it was still very open-ended because they gave very little guidance on what to touch.

    1. Q1. Here is a transformer implementation with four annotated regions. Find the bug in each one.
      How they answered

      I was given roughly a few hundred lines of transformer code and told there was a bug in each of four annotated chunks. I had to identify the issues and explain the fixes. After that, they asked me to implement KV caching. The only prompt was basically just that, so I had to decide on my own what needed changing, like the KV matrices, the attention head, and the attention computation itself, plus what deeper optimizations were worth doing. That open-endedness was the tricky part.

      Follow-up questions
      • Now implement KV caching in this transformer.
      • What parts of the transformer need to change for KV caching, and what optimizations would you make?
  6. 6

    Final / onsite round

    CodingSystem DesignTechnical

    The last technical round was a more practical coding problem around persisting and restoring system state. I remember it as more coding-heavy than design-heavy.

    1. Q1. Implement a key-value store serializer and deserializer.
      How they answered

      I had to implement serialization and deserialization for a key-value-store-like system, but it wasn't just a plain KV store. The point was to persist system state, restore it correctly later, and handle the case where someone queries state while the system is effectively down and should get a different output. I had seen related problems before, but not this exact version. From what I remember, the real challenge was modeling the state and its transitions cleanly.

      Follow-up questions
      • How would you store the state of the system and restore it correctly after shutdown?
      • What should happen if the state is queried while the system is shut down?

Tips from the candidate

They're hiring in a way that really tests raw fundamentals and doesn't care whether you've seen a similar question before, so I'd absolutely brush up on graduate-level intro information theory (vs leetcode), because that kind of math showed up very directly. I'd do practical coding problems where you build some small system and then keep extending it, because that felt much closer to what they were testing than standard interview patterns. I'd also review transformer internals well enough that you can debug existing code and talk through KV caching without being spoon-fed.

Company culture

Compared to a lot of other places, the interviewers were less generous with hints and less assistive overall, and the level of engagement varied a lot by person. The process felt pretty hands-off once I got into the technical rounds.

Details

CompanyOpenAI
RoleMachine Learning Engineer
LocationUnited States
InterviewedJul 2025
Questions asked7