ZipRecruiter 2026 NG OA 真题分享|四关进阶制题,逻辑清晰但细节超坑!

490閱讀
沒有評論

最近陪同学刷完 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
正文完
 0