面了217个后端候选人之后:挂在一面的人,几乎都不是输在算法上

🔑 关键词:程序员面试,面试官视角,技术面试,八股文,社招

📖 摘要:一个一线大厂基础架构社招面试官的217场复盘:简历通过率2.3‰、一面通过率28%的背后,候选人真正挂掉的三层追问、面试官打分表的真实权重,以及为什么八股文是最廉价的信号。

面了217个后端候选人之后:挂在一面的人,几乎都不是输在算法上

图片

2023年10月到2024年4月,我在这家(就不点名了,一说流程你们大概能猜到)做基础架构的社招面试官。不算交叉面和HR面,我自己独立主面了217场,时间基本卡在每周二、周四下午的2点到6点,一场45分钟,中间休息10分钟,一天4场下来嗓子是哑的。同一时间我自己也在偷偷准备跳槽,每周三晚上刷两道题,白天问别人LRU怎么写,晚上自己在草稿纸上画双向链表,那种撕裂感现在想起来还挺好笑。

先说个反直觉的数字。我们组这半年收到简历大概4800份,HR初筛后进我手上的340份左右,一面通过率28%,走完全部流程拿到offer的只有11个人。从投递到offer,大概是2.3‰。你刷的那些「三天速成八股」「面试高频100题」,改变不了这个分母,它顶多改变你在分母里的排位。

挂在一面的人,几乎都不是因为题没做出来

我事后大概统计过,真正因为「算法题没写出来」挂掉的,占不到三成。剩下七成多是下面这种情况。

图片

简历上写着「将订单查询接口QPS从2000提升到15000,P99从850ms降到120ms」。我问他,这两个数字是怎么测出来的。他说是压测平台跑出来的。我说压测模型是什么,读写比多少,数据量多大,连接池和线程数配了多少。他说这个不太清楚,是另一个同事搭的。

——到这儿基本就结束了。

我一般会追问三层:第一层,这个数据怎么来的;第二层,你为什么选了这个方案而不是那个;第三层,如果量级再大10倍,最先崩的会是哪一块。三层过不了两层的,我基本给no hire。不是这人技术差,是我不敢让他去做我的下游。写简历的人和讲不明白简历的人,在我这里默认是同一个人。

图片

这里有个具体的坑,很多人踩了不知道:简历上写「熟悉Redis」,我大概率会问zset的底层编码在什么条件下从ziplist切换成skiplist。答案是元素数量超过128个(zset-max-ziplist-entries)或者任一元素长度超过64字节(zset-max-ziplist-value)——这两个参数可查、可验证,不算偏门。我面过的人里,能说全的大概不到两成。说不上来也不算致命,但你要是简历第一行就写「精通Redis」,那就有点难看了。

面试官的打分表,和你想的不太一样

我们的打分表就四项:编码能力、系统设计、技术沟通、成长潜力。每项1到4分,最后看总分,也要看中位数。你可能想不到的是,「技术沟通」这一项,是我给出1分最多的一项。

什么叫技术沟通拿1分?给你举个例子。你讲一个项目讲八分钟,我听完不知道三件事:这个系统服务谁、你能控制的部分是哪些、你做的那个改动的收益占整体的多少。你讲了Kafka、讲了分库分表、讲了Sentinel限流、讲了G1的Mixed GC,但你从头到尾没说「原来是什么样」。没有baseline的方案,等于没有方案。

图片

我认识的一个P8朋友跟我说过一句话,我觉得挺准:面试的本质是降低对方的信息不对称成本。你的简历、你的八股、你现场写的那几行代码,在面试官眼里都是信号。而信号是分贵和便宜的。

这其实是有理论支撑的。Spence在1973年提过一个信号理论,拿劳动力市场做例子:学历之所以值钱,不是因为它真的教了你什么,而是因为「拿到这个学历」这件事本身要付出的成本,别人装不出来。放到程序员面试里,背八股是最便宜的信号——任何人都能在两周内背会,成本低,所以它贬值也最快。开源项目的commit记录、线上事故的完整复盘、你自己在维护的一个小工具,这些是贵信号,因为装不出来。

所以我现在给朋友的建议都是:与其把Synchronized锁升级(无锁→偏向锁→轻量级锁→重量级锁)再背第八遍,不如花同样的时间去做一个真的有人在用的东西。哪怕只是个几十星的CLI工具,哪怕只是你给内部写的排查脚本。你得有东西能撑得住那句「这个是我做的」。

一套能落地的准备方法

图片

第一,把简历上的每一句话拆成「决策点」。不是「我用了Redis」,而是「我面临A和B两个缓存方案,A的问题是X,B的问题是Y,我选了B是因为Z」。Z里面必须带数字,数据量、QPS、内存占用、延迟,随便哪个都行,但不能是空的。

第二,提前准备一个「我搞砸过的事」。我面过的人里,能主动说清楚自己踩过的坑的,通过率明显更高。有个候选人跟我讲他做的一个定时对账任务,早期用Redis分布式锁但没设过期时间,某次节点hang住之后任务卡了6个小时,后来改成Redisson看门狗续期加下游幂等补偿。这个故事比他会写十道算法题有用得多,因为它是真的。

第三,反向提问别问废话。「团队氛围怎么样」「加班多吗」这种问了等于没问。可以问:「你们现在这个系统,最让你头疼的一个技术问题是什么?」看他怎么答,你大概就知道进去之后要面对什么了,也能看出这人是不是还在一线写代码。

图片

最后说点不那么技术的

面得越多,我越有一个感觉:现在这套流程,其实是在筛「可控的人」,而不是筛「厉害的人」。算法题、八股文、系统设计,本质上都是在一种高度不确定的对话里,看你能不能维持住结构感,能不能在压力下把话说清楚。

这公平吗?我觉得不太公平。但它目前就是这样。2024年这个市场,一个3-1的岗位放出去两周能收300份简历,面试官的时间成本比候选人的高得多,所以只能用这种粗暴的方式去筛。我自己的做法是,把它当成一次不对等的谈判,而不是一次考试。考试你只能答题,谈判你可以出价、可以问、可以说不——当然,前提是你手里得捏着别的offer。

(写到这儿发现有点跑题了。反正你们随便看看,能记住一句「别只背八股,去做点真东西」,这篇就没白写。)

🏷️ 标签: