OpenAI logo

OpenAI Interview Questions

22 practice questions for OpenAI technical interviews

coding Hard Verified

Count Machines In A Tree


Category: Tree coding problem
You are given a tree-structured network of machines where each node represents a machine. Machines can only communicate with their parent and...
Input: String
Output: Computed result
coding Medium Verified

Implement cd Command


Category: Algorithm coding problem
Implement a simplified version of the Unix cd command. Given a current directory path and a relative destination path, return the final absolute...
Input: Given input
Output: Computed result
coding Medium Verified

Largest Subgrid


Category: Grid/matrix coding problem
You are given a 2D grid of non-negative integers and a maximum sum constraint. Find the largest size of a square sub-grid such that all...
Input: 2D grid
Output: Integer
coding Hard Verified

Memory Allocator


Category: Linked list coding problem
# Memory Allocator Design a memory allocator that manages a contiguous block of memory. Implement malloc and free operations with efficient...
Input: Linked list
Output: Computed result
system design Hard Verified

Top 5 Open AI System Design Questions


Category: Trie-based system design problem
# System Design Questions - OpenAI A collection of commonly asked system design questions from OpenAI interviews.
Input: Given input
Output: Computed result
coding Hard Verified

Toy Language Type Inference


Category: String coding problem
Implement a type system for a toy programming language that supports primitives, tuples, and generics. Your task is to represent types and infer...
Input: List
Output: Computed result
coding Medium Verified

Virus Spread


Category: Grid/matrix coding problem
Simulate the spread of a virus through a grid. Each cell can be in one of three states: healthy, infected, or immune. *This is similar to a leetcode...
Input: 2D grid
Output: Integer
coding Medium Verified

Bot-Enabled Messaging System


Category: String coding problem
You are building a chat system that supports human users and automated bots. Messages are added to a channel log and may trigger bot responses. The...
Input: List
Output: Computed result
coding Hard Verified

Connection Tracker


Category: Algorithm coding problem
Design a social network system that tracks follow relationships between users and preserves a full history through snapshots. The system allows...
Input: List
Output: Computed result
coding Medium Verified

GPU Credit Ledger


Category: String coding problem
You are designing a system to manage GPU credits. Each credit grant is valid during a specific time window. Events may arrive out of chronological...
Input: String
Output: Computed result
coding Medium Verified

GPU Credit Manager


Category: String coding problem
You are designing a system to manage GPU credits. Each credit grant is valid during a specific time window. Events may arrive out of chronological...
Input: String
Output: Computed result
coding Hard Verified

In-Memory SQL Engine


Category: String coding problem
Design an in-memory SQL database that supports creating tables, inserting rows with automatic type inference, and querying with filtering and sorting.
Input: List
Output: Computed result
coding Hard Verified

Persistent Key-Value Store


Category: Trie-based coding problem
You are designing a persistent key-value store that serializes its state to a binary storage medium. Native serialization (e.g., JSON, pickle,...
Input: Array
Output: Computed result
coding Hard Verified

Shard Rebalancer


Category: String coding problem
You are implementing a shard management system for a distributed key-value store. Each shard is identified by a string and covers a contiguous range...
Input: String
Output: Computed result
coding Hard Verified

IP Address Iterator


Category: String coding problem
Every device on the public internet is identified by an IPv4 address written in dotted-decimal notation as "A.B.C.D", where each octet is an...
Input: String
Output: Computed result
coding Medium Verified

Version Support Finder


Category: Binary search coding problem
A software company maintains a sorted list of version strings in ascending chronological order. A critical feature was introduced in one version, and...
Input: List
Output: Computed result
coding Medium Verified

Monster Battle Simulator


Category: String coding problem
Simulate a deterministic, turn-based battle between two ordered teams of monsters. Execute the fight step by step and produce a chronological battle...
Input: List
Output: Computed result
coding Medium Verified

Distributed Tree Messaging


Category: Tree coding problem
You are implementing a message-passing protocol for a distributed system organized as a rooted n-ary tree. Each node represents a machine and...
Input: List
Output: Printed output
system design Hard data structure

[OA] MedianFinder — Implement a data structure for keeping OpenAI's result metrics

OpenAI often needs to compute the median of predicted metrics in real-time. This requires an efficient data structure to retrieve the median quickly while processing continuous streams of data.
### Class Definition
Class MedianFinder should implement the following methods:
- addNum(num: int) -> None: Adds a number to the data structure.
- findMedian() -> float: Returns the median of all added numbers.
### Example 1:
Input: medianFinder = MedianFinder(); medianFinder.addNum(1); medianFinder.addNum(2); medianFinder.findMedian()
Output: 1.5
Explanation: The median of [1,2] is 1.5
### Example 2:
Input: medianFinder.addNum(3); medianFinder.findMedian()
Output: 2
Explanation: The median of [1,2,3] is 2.
### Constraints:
- -10^5 <= num <= 10^5
- There will be at most 1,000,000 calls to addNum and findMedian.
system design Hard caching

[OA] LRU Cache — Design an LRU Cache for OpenAI's model predictions

OpenAI needs an efficient caching system to store previously computed model predictions, optimizing resource usage and response time.
### Class Definition
Class LRUCache should implement the following methods:
- get(key: int) -> int: Returns the value of the key if the key exists, otherwise returns -1.
- put(key: int, value: int) -> None: Updates the value of the key if the key exists existing and moves the key to the front of the cache. Otherwise, it adds the key/value pair to the cache.
### Example 1:
Input: cache = LRUCache(2); cache.put(1, 1); cache.put(2, 2); cache.get(1)
Output: 1
Explanation: Returns 1
### Example 2:
Input: cache.put(3, 3); cache.get(2)
Output: -1
Explanation: Returns -1 since the cache reached its capacity; LRU (key = 2) was evicted.
### Constraints:
- The capacity of the cache will be between 1 and 1000.
- All keys will be unique.
coding Hard sliding window

[OA] Sliding Window — Optimize model inference response times

OpenAI's inference API must handle continuous input streams efficiently, ensuring optimal latency and throughput.
Given an array of integers, find the maximum sum of a subarray of size k.
### Function Signature
- def max_sum_subarray_of_k(arr: List[int], k: int) -> int: Returns the maximum sum of the subarray of size k.
### Example 1:
Input: arr = [1, 2, 3, 4, 5], k = 3
Output: 12
Explanation: The maximum sum subarray of size 3 is [3, 4, 5] with a sum of 12.
### Example 2:
Input: arr = [2, 3, 4, 1, 5], k = 2
Output: 7
Explanation: The maximum sum is from the subarray [4, 1].
### Constraints:
- 0 < len(arr) <= 1000
- 1 <= k <= len(arr)
coding Hard dynamic programming

[OA] Dynamic Programming — Optimize OpenAI's text completion efficiency

OpenAI's text completion models require efficient algorithms to generate responses in real-time while minimizing computational cost.
Given an array of integers representing the tokens in a sequence, you need to calculate the maximum non-adjacent sum of tokens that can be chosen from this array.
### Function Signature
- def max_non_adjacent_sum(tokens: List[int]) -> int: Returns the maximum sum of non-adjacent integers.
### Example 1:
Input: [3, 2, 5, 10, 7]
Output: 15
Explanation: The optimal choice is to take tokens 3, 10, and 2 which gives the maximum sum 15 without selecting adjacent values.
### Example 2:
Input: [9, 1, 2, 8, 3]
Output: 17
Explanation: The optimal choice is to take tokens 9, 8, and 3.
### Constraints:
- 0 < len(tokens) <= 1000
- 0 <= tokens[i] <= 1000

Start practicing OpenAI questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free