OpenAI Software Engineer Interview Experience — ChatGPT System Design, Vector Store and a Scheduler Debugging Round, Rejected

OpenAI·Software Engineer·Jul 2026
OnsiteRejectedhard

SWE VO

System design: design ChatGPT. At first the interviewer said not to worry about scale and no need to persist anything. Later they asked why use SSE instead of WebSocket, and also asked how to optimize the frontend so that long conversations can still render well.

Coding: all new questions I had never seen. I used Python.

  1. Vector Store

The problem is to implement a simplified vector store that supports:

  • add(index, val): insert a string at the given index; the element that was at that position and everything after it shifts back by one.
  • get(index): return the value at the given index.

I proposed a simple solution at first, but the interviewer thought it was not efficient enough. With a plain singly linked list, reading by index means walking from the head, which is O(n) in the worst case. Then, with the interviewer's hint, I was asked to implement a linked list + checkpoint: keep a pointer every k nodes, and on get jump to the right checkpoint first and then walk forward, so a query becomes O(k).

The core difficulty is maintaining the checkpoints after an insert: inserting at the head or in the middle affects which node every later checkpoint should point to, and when the length grows you may also need to add new checkpoints.

I was completely lost at the start, because I thought they meant designing a vector database. It is actually "vector" in the sense of C++ std::vector / Java ArrayList: an ordered, dynamic sequence you access by integer index.

  1. This one was more like a debugging question. They gave me a job scheduler repo, and I had to read the code based on bug reports, locate the problem, write tests, and fix it. It is an existing Python job scheduler repo, and I had to find and fix the issues from the bug reports. For each fix I had to write my own test, and I was allowed to google.

Part one was the in-memory scheduler. A Job has a function, args / kwargs, an execution time run_at, and a status. The Scheduler uses a heap to pick tasks by execution time, then runs them on a thread. The problem was that a normal run gets marked COMPLETED, but when the function throws an exception, the status update after it never runs, and the job stays in PENDING forever. The cause was that there was no exception handling.

Part two was an async scheduler bug: the submitted jobs looked like they were never actually run.

I got the rejection two days later. I had prepared all the OpenAI questions, but I ran into two new ones.

Published

Curated and edited by PracHub

Practice the questions from this interview

Discussion

Sign in to join the discussion. The author is notified of every comment.

Loading comments…

Interview at a glance

Company
OpenAI
Role
Software Engineer
Rounds
Onsite
Outcome
Rejected
Difficulty
hard
Interview date
Jul 2026
Questions from this interview
3 questions

Real OpenAI interview experiences

First-hand reports from OpenAI candidates — the rounds, the questions they were asked, and how it went.

All 72 OpenAI interview experiences