Code Review 面试怎么准备:不是找语法错,而是展示工程判断

Code Review 面试怎么准备:不是找语法错,而是展示工程判断

有些公司的 onsite 会安排 code review 轮。候选人会看到一段 PR 或几组代码改动,然后需要指出问题、提出改进建议,并和面试官讨论取舍。

很多人误以为 code review 面试是在找语法错。其实面试官更看重的是:你能否像一个成熟工程师一样审查代码,发现会影响生产系统的风险,并给出清晰、可执行、优先级合理的反馈。

先快速判断代码意图

不要一上来逐行挑毛病。先用 1 到 2 分钟弄清楚:

  • 这段代码想解决什么问题?
  • 主要数据流是什么?
  • 新增了哪些状态或 side effect?
  • 改动是否影响用户可见行为?
  • 有没有测试覆盖?

可以开口说:

“我会先确认这段 PR 的目标,然后从正确性、边界条件、可维护性和测试覆盖几个角度看。”

这样面试官会知道你有 review 框架。

评论要分优先级

Code review 面试里,指出 20 个小问题不如指出 5 个关键问题。

建议按优先级组织:

  • P0/P1:会导致错误结果、数据丢失、安全问题、并发 bug。
  • P2:边界条件、性能退化、可维护性问题。
  • P3:命名、格式、风格建议。

例如,如果一段逻辑在失败重试时可能重复扣款,这比变量命名不清楚重要得多。面试时要先讲高风险问题。

正确性问题优先看边界和状态

常见正确性问题包括:

  • 空输入没有处理
  • 重复请求导致重复写入
  • 删除不存在对象时状态不一致
  • cache 和 source of truth 不一致
  • undo/redo 记录了 no-op
  • 时间比较没有处理边界
  • 并发 claim 同一个资源
  • 异常路径没有 rollback

评论时不要只说“这里可能有 bug”。要说清楚触发条件、影响和修复建议。

例如:

“如果 add 操作在 recipe 已经存在时仍然写入 undo stack,后续 undo 会撤销一个并没有发生的状态变化。建议 applyAdd 返回 boolean,只有真实改变状态时才记录操作。”

这种评论非常具体。

测试建议要覆盖行为

不要只说“需要更多测试”。要指出缺哪类测试:

  • happy path
  • 空输入
  • 重复操作
  • 权限不足
  • 并发冲突
  • 失败重试
  • 边界阈值
  • 大输入

例如日志统计系统要测:

  • 不匹配 endpoint 被忽略
  • user id 被正确归一化
  • mean 和 median 在奇偶数量下都正确
  • connect time + service time 正确相加
  • 重复记录是否按需求处理

测试建议越具体,越能体现你真的理解代码。

性能评论要结合规模

不要看到 O(n) 就说要优化。先问规模和调用频率。

如果 get_total_discount 每次调用都扫描所有 ingredient,但 cart 很小且查询少,可能没问题。如果这个接口会高频调用,就应该增量维护 total。

好的评论方式是:

“当前实现每次查询都全量扫描,复杂度是 O(number of ingredients)。如果 cart 较小可以接受;如果 get_total_discount 是高频接口,可以在 add/remove 时增量更新 total,把查询降到 O(1),但要增加状态一致性的测试。”

这展示了 tradeoff,而不是机械追求最优。

安全和隐私不要忘

如果代码涉及用户数据、权限、支付、日志或 AI 输出,要主动看:

  • 是否验证用户权限
  • 是否泄露敏感字段到日志
  • 是否信任客户端输入
  • 是否有 rate limit
  • 是否能绕过 resource ownership
  • 是否有审计记录

很多候选人只看算法正确性,忽略了生产系统里的安全边界。Senior 面试尤其容易因此失分。

沟通语气要像同事,不像判卷

Code review 面试也在看协作方式。评论要直接,但不要攻击作者。

可以用这种表达:

  • “这里我会担心一个边界情况……”
  • “如果需求允许重复请求,这里可能需要幂等。”
  • “我建议把这块拆成 helper,这样测试会更容易。”
  • “这个优化是否值得做,取决于这个接口的调用频率。”

这类语气既专业,也容易让面试官觉得你能在真实团队里合作。

回答框架

面试时可以按这个顺序:

1. 总结 PR 目标
2. 先列最重要的正确性风险
3. 补充边界条件和测试缺口
4. 讨论性能和可维护性
5. 如果有时间,再说命名和风格

如果有多份 PR,不要求全部看完。优先保证每份评论质量。很多 code review 轮看的是 insight density,不是评论数量。

结尾

Code review 面试考察的是工程判断。你要证明自己不只是能写代码,也能守住系统质量:正确性、测试、性能、安全、可维护性和团队协作。

如果你从来没有系统练过 code review,可以找一段真实业务代码做模拟。目标不是挑最多问题,而是在有限时间里发现最值得改的问题,并用清晰的语言说明为什么。你可以在服务和价格页面查看 code review mock 和技术面试辅导选项;如果已经有具体面试时间,也可以通过联系我们页面说明目标岗位、面试轮次和准备进度

Previous
Previous

技术电面遇到多 Part 编程题怎么办:比写出代码更重要的是推进节奏

Next
Next

Behavioral 和 Culture 面试遇到刁钻问题怎么答:不要背 STAR,要讲判断