ZipRecruiter 2026 NG OA 真題分享|四關進階制題,邏輯清晰但細節超坑!

最近陪同學刷完 ZipRecruiter 的 2026 New Grad OA,這套題可以說是“中等偏易但很考細節”的代表。
題目不卷演算法,核心在於設計與實現能力——尤其是類設計、介面一致性、以及數據結構更新的邊界條件。 整體分四個 Level,每一關都在前一關基礎上遞進,難度平滑但坑點很多。

Level 1 – Basic CRUD

Problem:
Implement an in-memory database that supports three operations: set, get, and delete.
Each key represents a dictionary, and each field name within it must be unique.

Example:

set("user1", "name", "Alice")
get("user1", "name") -> "Alice"
delete("user1", "name") -> True

思路:
這一關屬於熱身題,考基本的數據結構操作。 可以直接用嵌套 dict 实现:

db[key][field] = value

操作邏輯:

  • set():若 key 不存在则初始化;
  • get():查不到返回 None
  • delete():成功删除返回 True,否则 False。

虽然题目简单,但细节必须干净,比如 key 不存在时不能直接抛异常。

Level 2 – Scanning & Prefix Filtering

Problem:
Extend the database to support field scanning and prefix-based filtering.

  • scan(key) → Return all fields under the given key, sorted lexicographically.
  • scan_by_prefix(key, prefix) → Return only fields that start with the given prefix.

Output format:

["field1(value1)","field2(value2)"]

思路:
這一關測試遍歷、過濾和輸出格式化能力。
可以用 Python 的清單推導式實現:

fields = sorted(db[key].items())
res = [f"{f}({v})" for f, v in fields if f.startswith(prefix)]

注意:

  • key 不存在時返回 [] 而不是 None
  • 輸出順序要字典序;
  • 前綴匹配區分大小寫。

這一關雖然沒什麼演算法,但如果格式錯一個括弧都會被判 fail。

Level 3 – TTL Management

Problem:
Add timestamp and TTL (Time To Live) to each field.
A field becomes invalid when timestamp >= start + ttl.
The database must auto-clean expired fields before each operation.

Example:

set_at_with_ttl("user1", "session", "abc", start=100, ttl=10)
get_at("user1", "session", timestamp=105) -> "abc"
get_at("user1", "session", timestamp=111) -> None # expired

思路:
這一關是整套 OA 的關鍵,考察時間狀態同步。
可以這樣設計數據結構:

db[key][field] = {"val": v, "start": t, "ttl": ttl}

實現重點:

  1. 清理函數 (cleanup): 每次操作前清除過期欄位;
  2. get_at():判斷欄位是否仍在有效期內;
  3. delete_at():刪除前也要調用清理邏輯。

TTL 是整個系統「動態性」的來源,很多人容易忽略在 delete 操作中也需要清理,導致測試結果不一致。

Level 4 – Backup & Restore

Problem:
Implement backup and restore functionality for the database.

  • backup(t) → Save the current state at time t.
  • restore(t_backup, t_now) → Restore the database to a previous state, but TTL must recalculate based on t_now.

思路:
這是最系統設計的一關,重點在 狀態複製 和 時間偏移調整。
快照機制:

snapshots[t] = deepcopy(db)

snapshots[t] = deepcopy(db)
恢復邏輯:

從快照重建當前 db;

重新計算 TTL 剩餘時間;

對已過期的欄位執行清理。

最大的坑在於 TTL 不能直接照搬,必須根據恢復時刻 t_now 動態調整,否則會出現“過期字段復活”的 bug。

整體感受

ZipRecruiter 這套 OA 很有層次感:

  • 從基礎 CRUD 到系統級 Backup;
  • 每一關都模擬真實工程中的核心模組;
  • 難度不高,但實現必須“乾淨”。

屬於那種做完之後能明顯感覺到代碼設計功底提升的題型。
更像是一次「微型系統設計」的實戰,而非純刷題。

建議與復盤

如果你準備類似的 OA(如 ZipRecruiter、Robinhood、DoorDash、Dropbox),建議:

  1. 多練 類設計 + 狀態更新 的題;
  2. 熟悉 時間邏輯 與 TTL-type cache;
  3. 保持代碼結構整潔、介面一致;
  4. 輸出與邊界條件要符合測試嚴格要求。

這類 OA 更看重你的“代碼工程感”——寫得穩、邏輯通、邊界無誤,就是贏。

Programhelp · 無痕遠端助攻,讓你高效通過 OA

這次 ZipRecruiter OA,很多同學都反映:題目邏輯不難,但實現細節太多、debug 環節特別容易卡時間。 尤其像 TTL 管理和 Backup 恢復這種題,一不小心就超時或漏邏輯。

我們團隊在陪練這類設計型 OA 時,會提供 無延遲語音助攻 + 連線即時思路提示,幫學員在卡點時快速梳理實現結構、理清 edge case,不需要自己死磕。
所有操作都在你本地完成,無痕、安全、不留任何協作痕跡,同時還能訓練出清晰的代碼組織思維。

過去幾個月,我們已經陪學生順利搞定包括 ZipRecruiter、Dropbox、DoorDash、Meta Infra、Stripe 等在內的系統實現類 OA,平均通過率遠超自練。
如果你也即將刷 OA,或者不確定自己的實現細節是否穩,可以瞭解一下我們的 遠端實戰助攻方案 —— 類比全真考場節奏,現場語音指導,一次上手。

author avatar
jor jor
END
 0