技术面试设计:考什么、怎么判断

一句话速记

技术面试不是”考倒 TA”,是用最低的成本判断 TA 能不能在这个团队的实际工作中胜任。三个必须验证的维度:① 能否独立解决问题(不是背题——给一个 TA 没见过的场景,看 TA 怎么拆);② 能否和团队协作(代码 review 模拟 / 方案讨论表现);③ 能否对自己的工作质量负责(问 TA 上次的生产事故——看是归因于外部还是反思自己的改进)。面试官的每一轮都只验证一个核心维度,不要一场面试试图验证所有维度——那样一个都验不准。

通俗解释(5 分钟版)

失败的面试:
  你:"请写一个 LRU Cache。"
  TA 写了 20 分钟,写出来了。
  你:"很好。面试通过。"
  → TA 入职后:代码写得好,但任何需求变更都崩溃、
    从不主动同步进度、和 PM 吵架。
  → 因为你的面试只验证了"TA 是否刷过这道题"。

有效的面试:
  你:"我们线上有个服务,偶尔在凌晨 3 点 CPU 飙高到 100%,
      5 分钟后自动恢复。你跟我说说你会怎么排查这个问题。"
  TA:(没有标准答案,你要看 TA 的排查思路)
      "我会先看监控,确定是什么时间、哪个实例、
       哪个接口引起的。然后我看 GC 日志和线程 dump…"
  → 你在验证:TA 遇到没见过的问题时,第一反应是什么?
    TA 的排查方法论是什么?
    TA 能不能从现象反推到根因?

关键细节

各轮次面试的职责划分

每一轮只验证一个维度:

轮次 1:技术基础(45-60 分钟)
  单独面试官(Senior IC 或 TL)
  验证:能否独立解决没见过的问题
  考察方式:
    - 一个开放式的排障场景(不是算法题)
    - 或者一个简易系统设计(不是"设计 Twitter",
      是"设计一个短链服务",画清楚数据怎么流)
  评分标准:不要求答对所有点,看思路是否结构化
    - 差的:上来就写代码,不分析
    - 好的:先问清假设 → 拆问题 → 给出方案 → 讨论 trade-off

轮次 2:技术深度 + 代码能力(45-60 分钟)  
  另一个面试官
  验证:TA 过去的项目深度是不是真的
  考察方式:
    - 从简历里挑一个 TA 最引以为傲的项目
    - "这个项目如果让你重新设计,你会改哪里?"
    - "当时为什么不选 XX 方案?"
    (这些问题能区分"真的深度参与"和"在旁边看了看")

轮次 3:团队协作(45 分钟)
  HM(Hiring Manager)或 TL
  验证:TA 进团队后会是什么样
  考察方式:
    - "讲一次你和同事有技术分歧的经历——怎么解决的?"
    - "你遇到过的线上故障,最严重的一次是什么样的?
       你从中学到了什么?"
    (看 TA 是否归因于外部——"是别人的 bug"——
     TA 如果从不承认自己的问题,入职后也会是随时甩锅的人)

判断标准

每轮面试后立即打分(不要等回忆模糊了再打)

打分标准:
  Strong Yes      — 聘用后我会更放心,团队会变得更好
  Yes             — 能满足岗位要求,有成长潜力
  No              — 有硬伤(能力/沟通/态度任一方面不匹配)
  Strong No       — 聘用后团队会变差(即使只因为 TA 的
                    态度和沟通方式)

铁律:
  - 任何一个 Strong No → 不录用(不管其他轮分多高)
  - Hiring Manager 有一票否决权(因为 TA 要对团队负责)
  - 面试官之间的意见不一致 → 不是要投票,而是要讨论:
    "你看到了什么我没看到的?"

面试官常见错误

✗ 考自己擅长的而不是工作需要的能力
  → 你是 JVM 专家就猛考 JVM,但岗位 90% 是写 CRUD
  → 面试题应该从实际工作内容倒推,不是从面试官个人偏好

✗ "TA 没回答上来我那个 trick 问题" = 不行
  → trick 问题区分的是"是否看过某篇特定博客"或
    "是否刚好背了这个点",不是区分工程能力

✗ 试图在 45 分钟里验所有维度
  → 每个面试官只盯一个维度,才能看得准

✗ 被"和我一样"的舒适感欺骗
  → 候选人和你是校友/前同事/技术栈完全相同 → 容易产生好感
  → 但这和 TA 能不能胜任没关系

延伸追问

  • Q:怎么判断候选人是在”背题”还是在”思考”? → 换一个稍微变化的问题。“我看到你用 Map 做缓存。如果并发量变大,你用什么来替代?“如果 TA 直接背出 ConcurrentHashMap 源码——可能刷过题。如果 TA 说”我不确定最新实现,但我可以讲讲思路——锁分段或者 CAS”——这是在思考。后者比前者好 10 倍。
  • Q:要不要让团队成员一起面试? → 要。让未来的同事参与面试(通常轮次 2)。他们对”这个人进团队后会不会是好队友”的判断,有时候比你还准。而且候选人也会通过他们看到团队的真实文化。
  • Q:面试时间太短,怎么在有限时间内做出判断? → 聚焦在”不可培训”的东西:问题拆解能力、沟通真诚度、对工作的责任感。这些东西很难通过入职后培训来改变。技术栈可以学、框架可以学——但”遇到问题第一反应是什么”很难学。

我的记法

  • 每轮只验一个维度:基础 → 深度 → 协作
  • 四个档次:Strong Yes / Yes / No / Strong No。Strong No 一票否决
  • 不要做的事:考 trick、验太多、被”和我一样”感骗
  • 一句话:「面试不是考 TA 知不知道标准答案——是看 TA 在不完全信息下怎么思考和反应」

状态

  • 已背速记
  • 能讲通俗版
  • 能答追问