← Back to Directory

OpenAI interview notes, page 66 of 67

Mid-sized

Most of these OpenAI write-ups come from Software Engineers (460), then Machine Learning Engineers (137) and Backend Engineers (23). The most reported rounds are the technical phone screen (335), the system design round (229), the onsite coding round (32) and the behavioral / leadership round (22).

667 interview notes · updated Jul 2026

OpenAI·Machine Learning Engineer·Technical Phone Screen

Jul 2026
OpenAI ML Engineer interview with a meaty open-ended problem about noisy multi-annotator labels for binary text classification. One question but it sprawled into five or six sub-problems across analysis, training strategy, and evaluation design. Felt more like a whiteboard design session than a traditional interview.
  • You have a text dataset for binary classification where each example was labeled by multiple annotators who often disagree. Walk through how you'd analyze the label noise, build train/val/test splits, convert the multi-annotator labels into training targets, choose a model and loss function, and identify ways your offline metrics could be misleading.

“This question wrecked me a little because I kept trying to answer each sub-part sequentially and the interviewer just kept layering more on top.”

View Post

OpenAI·Software Engineer·Technical Phone Screen

Jul 2026
Interviewed for a software engineer role at OpenAI and got a coding problem centered on interval merging. Pretty standard algorithmic round but the follow-up edge case questions kept it interesting.
  • Given a list of closed intervals, merge all overlapping or touching intervals and return a minimal sorted set of non-overlapping intervals. Your solution should run in O(n log n) time and use as little extra space as possible beyond the output.
  • How would you handle edge cases like touching endpoints, zero-length intervals, and invalid inputs in your interval merging solution?
  • What test cases would you write to validate your interval merging implementation, including nested intervals, duplicates, already-sorted and reverse-sorted input, and large inputs?

“Sort first, then sweep through and extend the current interval's end if the next one overlaps or touches.”

View Post

OpenAI·Software Engineer·Onsite - System Design / Architecture

Jul 2026
System design round at OpenAI for a software engineer role, focused entirely on building an online ad serving system from scratch. Pretty brutal scope, they wanted everything from auction mechanics to GDPR compliance in one session.
  • Design an end-to-end online ad serving system that returns targeted ads within 100ms, covering campaign management, budgets, pacing, frequency capping, targeting, real-time auctions, and near-real-time reporting.
  • Walk through the API design for an ad request and response, and define the core data models for campaigns, bids, and user targeting.
  • Describe the overall system architecture including edge gateways, ad selector, feature store, model service, auctioneer, throttling and pacing service, caching, and the logging pipeline.
  • Which auction mechanism would you choose and why? How does your choice affect advertiser incentives?
  • How would you handle the cold start problem for new advertisers or new ad creatives with no historical performance data?
  • What's your strategy for A/B testing in an ad serving system, especially given auction dynamics and budget interference between variants?
  • How would you approach privacy and compliance requirements like GDPR and CCPA in this system, particularly around user targeting and data retention?
  • How would you estimate capacity requirements for this system? Walk through a back-of-the-envelope calculation for request volume, storage, and infrastructure.

“The 100ms constraint is the first thing that should shape every decision you make, and I didn't anchor on it hard enough early on.”

View Post

OpenAI·Research Scientist·Technical Phone Screen

Jul 2026
Probability-heavy technical screen for a research role at OpenAI, focused almost entirely on a Las Vegas algorithm restart problem that built up from basic Markov inequality to adaptive multi-threshold strategies. The math got deep fast and the later parts required knowing some canonical results cold.
  • An LLM's inference time T is a random variable with E[T] = 1. Use Markov's inequality to bound the probability that T exceeds 5.
  • Derive the expected solving time when you apply a single fixed restart threshold: if the solver hasn't finished by time τ, you restart from scratch. What is the optimal τ?
  • Generalize to N allowed restarts: derive the success rate within a fixed time budget as a function of N and the cutoff.
  • Can you construct a distribution for T where the success rate within a fixed budget is completely invariant to any restart strategy?
  • Without knowing the runtime distribution, design a restart schedule that still achieves near-optimal expected runtime. How does it compare to the best fixed-threshold policy?
  • Allow restarts at arbitrary non-uniform cutoffs. Argue whether a smarter non-uniform strategy can outperform the single-threshold policy when the distribution is fully known.

“Straightforward warmup.”

View Post

OpenAI·Software Engineer·Technical Phone Screen

Jul 2026
OpenAI SWE interview that went deep into ML fundamentals pretty fast. The core task was implementing matrix multiplication forward and backward passes in PyTorch, then a follow-up about parallelizing the backward pass using scan-style thinking. More math-heavy than I expected for a coding round.
  • Implement the forward pass for matrix multiplication in PyTorch: given A of shape (M, K) and B of shape (K, N), return C = A @ B.
  • Given upstream gradient dC of shape (M, N), implement the backward pass to compute dA and dB for the matrix multiplication.
  • Restructure the backward pass implementation to be more parallel-friendly, drawing inspiration from parallel prefix scan approaches like Hillis-Steele. Explain how your design reduces sequential dependencies.

“This part was fine.”

View Post

OpenAI·Machine Learning Engineer·Onsite - System Design / Architecture

Jul 2026
System design round at OpenAI for an ML Engineer role, centered entirely on one meaty question about building a content moderation pipeline for harmful videos. No behavioral fluff, just a deep technical dive that covered a lot of ground fast.
  • Design a complete system to detect and moderate harmful videos on a large platform, covering multiple violation categories, both upload-time and retroactive scanning, a mix of automated and human review, low false positives and false negatives, and support for appeals and audit trails.

“This question is massive.”

View Post

OpenAI·Software Engineer·Technical Phone Screen

Jul 2026
Interviewed for a SWE role at OpenAI and got a graph propagation problem about simulating infection spread across a network. Pretty classic BFS territory but the exact rules were left vague, which made it a bit of a guessing game.
  • Given a graph and a set of initially infected nodes, simulate how an infection spreads through the network according to a set of propagation rules. Return the requested output, such as the earliest time each node gets infected, which nodes are infected by step T, or whether a specific target node ever gets infected.

“My first instinct was BFS and I just went with it.”

View Post

OpenAI·Software Engineer·Technical Phone Screen

Jul 2026
Interviewed for a software engineering role at OpenAI and got a problem set built around IPv4 address iteration. Four parts, each building on the last, ending with an open-ended optimization discussion. Felt pretty solid on the first two but the CIDR bitmasking tripped me up more than I expected.
  • Implement a Python class that iterates forward through IPv4 addresses starting from a given IP up to 255.255.255.255, using the iterator protocol.
  • Now implement a reverse iterator that starts from a given IP and counts down to 0.0.0.0.
  • Given a CIDR string like '192.168.1.0/24', use bitwise operations to compute the start and end IP of the range, then iterate through all addresses in it.
  • How would you optimize the time and space complexity of these iterators for very large CIDR ranges, like /8 or /0?

“This part was fine.”

View Post

OpenAI·Data Scientist·Technical Phone Screen

Jul 2026
SQL-heavy technical screen for a DS role at OpenAI. The whole thing was basically one long experiment analysis problem with a bunch of moving parts: ITT analysis, triggered analysis, and a data quality audit all in one sitting. Felt like a take-home crammed into a live session.
  • Write a SQL query to compute the intent-to-treat paid conversion rate within 60 days of first exposure, broken down by variant (control vs. trial), for users first exposed between June 1 and June 30, 2025. Each user should be counted once using only their first exposure, and users who had any payment before their first exposure must be excluded. Return variant, exposed user count, converters within 60 days, conversion rate, and 95% Wald confidence intervals.
  • Write a second SQL query for a triggered analysis, restricting to users in the trial variant who actually started a trial, and compute their paid conversion rate within 60 days of first exposure.
  • Write a data quality SQL query that flags the following anomalies: users who have a trial record but no prior exposure, users with multiple exposures on the same calendar day, exposure timestamps that come after trial_started_at, and duplicate user_ids in the users table.

“The leakage exclusion is where I got tripped up first.”

View Post

OpenAI·Software Engineer·Technical Phone Screen

Jul 2026
Got a pretty gnarly coding problem for an OpenAI software engineer round. The problem was a custom data structure with some real edge cases around ordering and retroactive updates. Came out feeling like I had a decent handle on the core design but probably fumbled the complexity analysis at the end.
  • Design and implement an expiring-credit ledger that supports out-of-order event insertion. The ledger should expose three operations: adding a credit bucket with an id, amount, activation timestamp, and expiration duration; charging a given amount at a given timestamp by consuming from the earliest-expiring active credits first (with tie-breaking by activation time then lexicographic id); and querying the total active balance at any timestamp. Events can arrive in arbitrary timestamp order, so the structure must handle retroactive inserts correctly.

“The basic structure clicked pretty fast.”

View Post