我面了十八个后端
9月,公司后端组扩招,我全程参与了技术一面。HR筛掉一批明显不合适的之后,递到我手里的简历还有25份左右,前前后后面了十八场,最后只发了 2 个 offer,还跑了一个,最终入职 1 位。面完之后感触挺多的,今天就把这段时间的观察和思考整理出来,给正在找工作的后端同行、也给负责招聘的伙伴,提供一点真实的参考。
一、面试者画像
这批面试的伙伴里,3到7年工作经验的占了大多数,比我预想的要年轻一些。学历层次拉得比较开,有科班硕士,也有培训出身的,大家的背景差异很大------有一直在互联网大厂做业务系统的,有从传统行业转过来的,也有在创业公司从0到1搭过架构的。
先说一个比较突出的感受:简历上"微服务 ""云原生" "K8s" 这些词已经快成标配了。几乎每份简历上都会写"熟悉微服务架构"、"有K8s部署经验",但深入聊下去,水分不小。有的伙伴说自己做过微服务拆分,可一问"你们是按什么维度拆的?拆的时候遇到了什么问题?分布式事务怎么处理的?"就答不上来了;还有的说用过K8s,其实就是在控制台点过几下发布,连 Pod 和 Deployment 的关系都说不清楚。说实话,这些东西如果没有真正深度参与过,光靠看几篇博客是糊弄不过去的。
基础层面的情况,两极分化比较严重。一部分伙伴基础非常扎实,问HashMap的底层实现、ConcurrentHashMap的演进过程、MySQL的索引原理,都能讲得很清楚,还能结合源码说自己的理解。但也有相当一部分伙伴,工作五六年了,基础还停留在"会用"的层面------知道Redis是缓存,但说不出来缓存击穿、穿透、雪崩的区别和解决方案;知道MySQL有索引,但让分析一条慢SQL的优化思路,就无从下手。最夸张的是有一位六年经验的伙伴,连ArrayList和LinkedList的区别都讲不清楚,这确实有点说不过去了。
项目经历方面,"做过"和"做好"的差距很大。很多人的简历上写着"负责电商订单系统开发"、"参与支付系统重构",听起来都挺厉害的,但细问下去就发现:有的人只是在成熟的系统里加了几个接口,对整个系统的架构设计、流量峰值、容错方案一概不知;还有的人说自己做过性能优化,但优化前QPS多少、优化后多少、用了什么手段、为什么选这个方案,全都说不上来。项目经历不怕小,就怕没有思考------哪怕只做了一个模块,如果能把这个模块的来龙去脉讲清楚,也是加分项。
另外,工程化能力和运维意识,是很多后端伙伴的短板。不少人写了好几年代码,对CI/CD的理解还停留在"知道有这么个东西";日志怎么打、监控怎么加、线上出了问题怎么排查,没有一套系统化的思路。还有的伙伴,写代码只考虑功能实现,完全不考虑异常情况、边界条件、数据一致性------这种代码如果真的上了线,就是定时炸弹。
二、面试现场
十八场面试下来,能感觉到大家都是认真准备了的,但临场表现的差距比我预想的还要大。有些问题,我觉得其实可以避免,在这里说出来,希望对后面求职的伙伴有帮助。
先说紧张到发挥失常的情况。有两三位伙伴,明显能感觉到非常紧张,说话声音都在抖,连自我介绍都磕磕巴巴的。有一场我印象特别深,那位同学简历看着还不错,项目经历也匹配,但面试的时候太紧张了,我问他HashMap的扩容机制,他憋了半天只说出了"扩容成两倍",再多就说不出来了。面到后半段,他自己也意识到发挥不好,情绪都有点低落了。其实真的不用那么紧张,面试是双向选择,不是审判,放松一点反而能发挥出真实水平。
然后是背题痕迹太重的问题。这个比我预想的要普遍。有的伙伴回答问题特别"标准",就像是在念参考答案,但你稍微换个角度问,他就卡住了。比如我问"Redis的持久化机制有哪些?"他能流利地说出RDB和AOF的区别、优缺点,但我接着问"如果让你来设计一个持久化方案,你会怎么选?考虑哪些因素?"他就不知道怎么答了。还有一位更夸张,我问了一个稍微偏一点的问题,他直接开始答另一个完全不相关的知识点,明显是题库背多了,看到关键词就条件反射。其实面试真的不是考你背了多少题,而是看你有没有真正理解、能不能灵活运用。
还有一类是纸上谈兵型。理论说得头头是道,但一到动手就不行。比如问分布式锁,能说出Redis实现、ZooKeeper实现、数据库实现好几种方案,还能分析各自的优缺点,但你让他写一个最基本的Redis分布式锁的伪代码,他写出来的东西漏洞百出------连过期时间怎么设置、锁怎么释放才算安全都没想清楚。还有的说自己精通JVM调优,能说出各种JVM参数,但一问"你有没有实际调优过?调的是什么问题?怎么定位的?最后效果怎么样?"就支支吾吾说不出来了。后端这行,光说不练是不行的。
还有少数几位,态度上就不太端正。有一位约好了时间迟到了二十分钟,连个解释都没有;还有一位面试的时候心不在焉的,问问题半天没反应,后来我才发现他一边面试一边在干别的。简历注水的情况也有,有一位简历上写着"主导了微服务架构改造",结果聊下来发现他就是改了几个配置文件,连架构图都画不出来。诚实一点没坏处,纸是包不住火的。
三、市场环境:两端都在变
这段时间招聘下来,我最大的感受就是------后端的人才市场,确实和以前不一样了。不管是找工作的伙伴,还是我们招人,都得适应这些变化。
从求职者这边来看,现在出来找工作的,主动跳槽的少,被动离职的多。很多伙伴都是因为公司业务收缩、部门裁撤、甚至公司倒闭才出来找工作的。这就导致市场上候选人的整体水平参差不齐------有确实很优秀但赶上公司不行的,也有本来就一般、在原来的公司混不下去的。再加上现在AI工具太方便了,简历写得一个比一个漂亮,项目经历一个比一个唬人,但真聊起来就露馅了。我反而觉得,那些简历写得朴实、不堆砌关键词的伙伴,往往更靠谱,因为他们对自己有清晰的认知。
心态方面也能感觉到变化。大家都比较焦虑,面试的时候急着表现自己,反而容易适得其反。还有一些伙伴,可能是面试被拒多了,有点戾气,问深一点就觉得你在"刁难"他,语气都变了。其实真不是这样,面试问得深,是想了解你的上限在哪里,不是为了难住你。如果没通过,大概率是匹配度的问题,不是你这个人不行。
从我们招聘方的角度,也想聊聊我们对新人的一些观察,这些可能也能帮大家看到努力的方向。
-
代码质量上:很多新人写代码,功能是能实现,但代码的可读性、可维护性很差。命名不规范、函数写得巨长、没有注释、到处复制粘贴...... review起来非常痛苦。还有的人,写完代码自己不测,提上来全是bug。写代码不是只写给机器看的,更是写给人看的。
-
问题排查能力上:不少新人遇到问题第一反应是找人问,而不是自己先查日志、看报错、想思路。线上出了问题,慌得一批,不知道从哪里下手。其实排查问题是后端工程师的核心能力之一,这个能力只能靠多踩坑、多总结来提升。
-
学习主动性上:这个和前面说的对应上了。很多人习惯了"喂到嘴边"的学习方式------有人讲、有教程跟着做才行。让他自己去研究一个新技术、解决一个没遇到过的问题,就不知道从哪开始了。现在技术更新这么快,主动学习的能力太重要了。
四、为什么会这样?
面完这十八场,我一直在想一个问题:为什么很多工作三五年的后端工程师,基础还是不牢?是大家不够努力吗?我觉得不是,这背后有更深层的原因。
第一个原因,业务场景的局限。很多后端工程师,每天的工作就是写写CRUD接口、调调第三方服务,日复一日做的都是类似的事情。不是大家不想研究分布式、不想搞性能优化,而是业务场景根本不需要------公司就那么点流量,单机就能扛住,你搞微服务不是没事找事吗?但问题是,你在舒适区待久了,能力就固化了,等到市场要求你具备更全面的能力时,才发现自己已经跟不上了。
第二个原因,技术栈的碎片化。后端技术栈太广了,语言就有Java、Go、Python、C++好几种,中间件更是数不过来。很多人被各种技术热点牵着走:今天学微服务,明天学K8s,后天又去学大模型应用......精力被分散了,反而没有时间沉下心来把基础打牢。面试的时候最明显:各种新词张口就来,但一问基础就露馅。其实技术的底层是相通的,把基础打扎实了,学什么都快。
第三个原因,"搬运工"思维的惯性。现在的开发环境太好了,各种框架、中间件、开源项目应有尽有,很多问题搜一搜、抄一抄就能解决。时间长了,人就变懒了,不愿意去思考底层原理,不愿意去深究"为什么"。但真正拉开差距的,恰恰是那些"为什么"。
五、几点心得
十八场面试下来,我对"靠谱的后端工程师"有了更具体的认知,也想把这些心得分享给大家。
-
年限不代表能力,基础才是硬通货。 以前我也觉得工作年限越久越厉害,但面下来发现,五年经验和七年经验,可能真的没什么差距,甚至有的七年还不如三年的。但基础扎实的人,不管工作几年,回答问题的时候你能感觉到他的底气,追问到哪一层都不慌。这次最终入职的那位,不是年限最长的,但基础是最扎实的------基础,永远是后端工程师的立身之本。
-
项目不在多而在深,有思考才值钱。 很多人的简历上列了七八个项目,但每个项目都是"参与了XX系统的开发",内容大同小异。这样的项目经历,写得再多也没用。真正有价值的项目经历,是你能把它讲透:当时的背景是什么?遇到了什么挑战?你是怎么思考的?为什么选了这个方案而不是那个?最终的效果怎么样?有什么可以改进的地方?把一个项目讲透,比罗列十个项目都管用。
-
技术栈不用贪多,有深度才有辨识度。 很多人喜欢在简历上列一长串技术栈,什么都"熟悉",什么都"了解",但没有一个是真正精通的。其实这样反而不好,因为后端工程师的价值不在于你会多少种技术,而在于你能不能用技术解决问题。与其每个都浅尝辄止,不如选一个方向深入下去------不管是数据库、中间件、还是架构设计,只要你能在一个点上做到足够深,就有你的位置。
-
少花时间包装简历,多花时间提升实力。 现在简历包装太容易了,AI一键生成,吹得天花乱坠。但假的真不了,面试的时候三句话就能问出来。与其花时间研究怎么美化简历,不如踏踏实实地写代码、做项目、总结经验。真金不怕火炼,有实力的人,到哪都有饭吃。
最后想说一句:后端这个行业,正在从"缺人"走向"缺人才"。以前会写接口、能干活就行,现在不一样了,企业要的是能解决复杂问题、有技术深度、能独当一面的人。这个过程可能会有点痛苦,但对真正有能力的人来说,反而是好事------潮水退去,才知道谁在裸泳。
以上就是我9月面了十八个后端后的真实感受和思考,愿与所有后端同行共勉。也祝愿每一位正在找工作的伙伴,都能找到心仪的机会,在技术这条路上,越走越稳、越走越远。