我们最近面试了一位候选人,岗位方向偏 Infra / System Engineering,需要同时覆盖底层实现与架构设计能力。流程两轮:

  1. Coding(in-memory data store)
  2. System Design(multi-tenant CI/CD platform)

第一轮:Coding —— In-Memory Data Store

开场我给了一个比较模糊的提示:“可能会考到 Python 序列化”。

很多候选人听到这个提示后,往往会先入为主地以为是 serialization demo 或 cache 设计题,但我们实际想考的更偏工程化抽象。

题目实际是:

实现一个 KV Store,支持基本的 set / get,并要求能序列化落盘,在进程恢复时重新加载

这道题我们在 infra 岗出得比较多,考察点不在算法,而在工程思维与抽象能力,核心看:

候选人写代码前花了比较久在理解题意,这本身没错,但他一直没有及时建立核心抽象:

“我到底要做的是一个 cache、一个数据库、还是一个可恢复的字典?”

最终代码是写出来了,逻辑结构也还不错,但由于时间控制偏弱,自写的 test case 没有完整跑通,导致测试没过。

这轮结束后,我们的记录大致是:

理解偏慢;实现基本正确;测试未跑完;属于 borderline case。

通常更优秀的候选人会在前 3–5 分钟快速通过反问把范围锁定,比如:

“这个 KV store 需要持久化吗?需要支持多线程吗?要不要考虑 TTL?”