Just finished my interview with OpenAI. This has to be one of the hardest interviews I've gone through. I know they're pretty popular, but do they just want to hire genius only, and don't want any regular people anymore?
It's odd but my screening round started with system design.
The system design problem focused on building a Webhook Delivery Platform. A common theme among this interview, and this question too, was about handling incredibly high scales. A lot of the discussion was about trying to maintain high levels of reliability and performance with billions of requests. The standard answers were not enough, the interviewer was really drilling down into implementation specifics.
I highly recommend going through something like hello interview and really honing into the implementation details behind a lot of the patterns for handling high volumes.
The coding round was to design a type system for a hobby programming language. I found that exact problem here. This part wasn't too bad for me, language design is a hobby of mine already, I regularly watch people like Jon Blow talking about this, so I had already thought about things like this a lot.
Pretty much your typical behavioral, nothing special:
This round started with about a 30 min presentation on one of my past projects and then followed up with discussion about it. The usual stuff, trying to gauge how much I knew about the implementation details, what tradeoffs were considered.
I was asked to design a CI/CD system, pretty similar to Github Actions. This one was pretty focused on designing for high reliability first, and then performance second.
This is the round that it gets ridiculous. For any components I mentioned, even really standard ones like DB or loadbalancers, the interviewer drills into super low-leveler details, and ask me some questions about how those were implemented internally. They also someknow side-tracked and ask some deep knowlege about how GPU and AI model works, I was completely unprepared for those questions. I think I definitely failed this round.
The final coding round involved solving an algorithmic problem related to counting the number of machines in a tree. This one is a twist on a tree traversal problem. For this one I'd recommend going through some of the tree traversal leetcode problems to make sure you're really comfortable with implementation details. A couple good ones for this are:
Overall the coding rounds weren't too bad, the problems were about the difficulty level I would expect for a senior level role at a larger company. To prepare for coding, highly recommend going through the resources I mentioned above, find some good youtube tutorials that go deep into the weeds on scale and practice coding in that style.
The system design was on a whole other level of difficulty. Maybe I got the worst luck with the interviewer, or maybe they always ask this? Please if anyone also did their rounds, let me know if I should reach out to my recruiter and see if I can redo this round.