OpenAI 的 OA 走 HackerRank 平台,但和 Meta / Amazon 那種「4 題 90 分鐘」節奏完全不同。它是單題 4 階段遞進:先給你一個最簡單的 API,讓你逐步加層(持久化、並發、過期、查詢),全程 90–120 分鐘。
OpenAI HackerRank OA 概覽
| 維度 | 詳情 |
|---|---|
| 平台 | HackerRank |
| 時長 | 90–120 分鐘 |
| 題量 | 1 題 4 階段(每階段 25–30 分鐘) |
| 難度 | LC Medium 節奏 + 介面設計 |
| 評分 | 自動判題 + 隱藏 stress test |
主線一:Spreadsheet 引擎
階段 1:基本讀寫
class Spreadsheet:
def __init__(self):
self.cells = {}
def set(self, c, v):
self.cells[c] = v
def get(self, c):
return self.cells.get(c, 0)
階段 2:公式(=A1+B2)
import re
class FormulaSheet(Spreadsheet):
def __init__(self):
super().__init__()
self.formulas = {}
def set(self, c, v):
if isinstance(v, str) and v.startswith('='):
self.formulas[c] = v[1:]
self.cells.pop(c, None)
else:
self.formulas.pop(c, None)
self.cells[c] = v
def get(self, c):
if c in self.cells:
return self.cells[c]
if c in self.formulas:
return self._eval(self.formulas[c], set())
return 0
def _eval(self, expr, stack):
if expr in stack:
return 0
tokens = re.split(r'([+\-*/])', expr)
result = 0
op = '+'
for t in tokens:
t = t.strip()
if t in '+-*/':
op = t
else:
v = self._token(t, stack | {expr})
if op == '+': result += v
elif op == '-': result -= v
elif op == '*': result *= v
elif op == '/' and v: result //= v
return result
def _token(self, t, stack):
if t.isdigit() or (t[0] == '-' and t[1:].isdigit()):
return int(t)
return self.get(t)
階段 3:依賴追蹤 + 自動重算
引入 dependencies 反向圖,set 時觸發下游重算。
階段 4:版本快照 + 撤銷
每次 set 推一個版本號;undo() 回滾到上一個版本。
主線二:Credits 信用系統
階段 1:基本餘額
add(user, credit, expires_at)、spend(user, n)、balance(user)。
階段 2:FIFO 過期
import heapq
from collections import defaultdict
class CreditSystem:
def __init__(self):
self.heaps = defaultdict(list)
def add(self, user, credit, expires_at):
heapq.heappush(self.heaps[user], [expires_at, credit])
def spend(self, user, n, now):
h = self.heaps[user]
while h and h[0][0] <= now:
heapq.heappop(h)
if self.balance(user, now) < n:
return False
while n > 0 and h:
if h[0][0] <= now:
heapq.heappop(h); continue
take = min(h[0][1], n)
h[0][1] -= take
n -= take
if h[0][1] == 0:
heapq.heappop(h)
return True
def balance(self, user, now):
return sum(c for exp, c in self.heaps[user] if exp > now)
階段 3:亂序請求處理
請求帶 op_id 與 ts,可能亂序到達。需要按 ts 重排再回放。
階段 4:分散式 + 冪等
加 request_id 去重;同 request_id 的多次重放只生效一次。
主線三:Memory Manager
階段 1:固定塊分配
alloc(n) 返回起始地址;free(addr) 釋放。
階段 2:First Fit / Best Fit / Worst Fit
實作三種分配策略對比碎片率。
階段 3:Coalesce
free 後立即合併相鄰空閒塊。
階段 4:垃圾回收(mark-sweep)
實作簡化版 mark-sweep,定期掃描可達物件。
OpenAI 題型特徵
- 每階段必須基於上一階段:階段 2 的程式碼會被階段 3 直接呼叫
- 測試是分階段判分:階段 1 全過 = 25 分;階段 4 全過 = 100 分
- 介面設計 > 演算法:階段升級常常要求你重構而非新加 if 分支
OA輔助 實戰路徑
針對 OpenAI 這種「單題 4 階段遞進 + 測試分階段判分」的特點:
- OA輔助:按階段拆分 mock,mentor 在每階段結束 5 分鐘內複盤介面設計
- VO銜接:進 onsite 後切到 OpenAI VO 套餐(信用系統設計、推理優化)
- 介面設計專項:5 道經典題(KV store / rate limiter / messaging queue / chat session / file system)按 4 階段 reps
- 行為面劇本:OpenAI 重視 "Helpfulness / Harmlessness / Honesty",針對性故事
加微信 Coding0201 溝通方案與報價。
從階段 2 卡死到順利通過 OpenAI OA
這次很高興幫這批同學順利通過 OpenAI HackerRank OA。很多同學反饋,自己刷 LeetCode 時根本沒練過 4 階段遞進設計——階段 1 寫得很順,但階段 2 加公式 / 加過期就要把階段 1 的程式碼改得面目全非,結果時間不夠用。
如果你也在準備 OpenAI、Anthropic、Cohere、Mistral、xAI 這類 AI 公司的 OA / VO,感覺一個人複習介面設計 + 階段遞進效率低,歡迎聯絡 oavoservice。我們會根據你的具體水平和弱點,提供專業的 OA / VO 實戰輔助服務和一對一 OA輔助 指導。
FAQ
OpenAI HackerRank OA 用什麼語言?
可選 Python / Java / TypeScript / Go。社區反饋:~80% 候選人用 Python(介面迭代快)。
4 階段都要做完嗎?
不強制。完成階段 2 + 部分階段 3 即可進 phone screen;4 階段全過對應 onsite invite。
Spreadsheet / Credits / Memory Manager 哪個最難?
社區反饋:Credits 難度最高(亂序 + 冪等階段);Spreadsheet 題面最長但程式碼量可控;Memory Manager 偏 OS 經驗。
沒過冷卻期?
通常 6 個月。研究 / 工程 / Applied 三條線 OA 池子 OpenAI 內部分開管理。
正在準備 OpenAI / 頭部 AI 公司 OA / VO?
👉 立即加微信:Coding0201,獲取 OpenAI 高頻題與 OA輔助 方案。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy