← 返回部落格列表 OpenAI HackerRank OA 全攻略|Spreadsheet + Credits 系統設計 OA輔助
OpenAI

OpenAI HackerRank OA 全攻略|Spreadsheet + Credits 系統設計 OA輔助

2026-05-23

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_idts,可能亂序到達。需要按 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 題型特徵

OA輔助 實戰路徑

針對 OpenAI 這種「單題 4 階段遞進 + 測試分階段判分」的特點:

加微信 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