namelosw
2021-08-20 00:15:45 +08:00
肯定有内卷的成分,不卷的时候,比如 dotcom 之前,或者 14 年之类的时候,随便乱搞就能进去写代码。
但是跟大多行业相比,哪个卷就说不准了。平心而论刷题比考研考公都简单,成了就能拿高薪,不成还可以自己决定时间,想什么时候考什么时候考,我理解这样的情形,其他行业的人都求之不得。
不过话说回来,这种筛选方式肯定是不甚合理的。业务工程师面试,最简单的题都是链表?各位都懂,链表是很不实用的数据结构,就是纯为面试而生的,更别提大部分岗位都是应用开发,几年也用不上一次。
---
我想借着这个问题聊一下 「 LeetCode 之类的算法面试为什么流行」的问题:考算法题本质上是企业用一个偷懒但凑合可行的方式筛人。
企业招程序员的初衷:招到好的软件工程师能完成他们需要的业务。
企业想要达到的效果:
1. 招到胜任工作的人
2. 别花太多钱
假设劳动市场里有 50k 个程序员,其中 10k 能胜任我这个企业的工作,40k 不能,其中:
1. 能胜任工作,算法又好的程序员:5k 个
2. 能胜任工作,但算法不好的程序员:5k 个
3. 不能胜任工作,但算法好的程序员:2k 个
4. 不能胜任工作,算法不好的程序员:38k 个
对于企业来说,具体哪些人属于哪类尚不可知,只能用策略搜索。
一种策略跟体检一样按实际工作全面考察工作能力的搜索策略,可以准确锁定「胜任」的集合,但平均每个面试者的成本要 5k 元。
而先扔几道面试题,可以锁定「算法好」的集合,平均成本是 100 元。
招进来不胜任的人,综合各种成本最终损失 10k 元。
这只是我随便举的数字,但是意思大家都懂。虽然全面合理地考察程序员可能可以准确锁定胜任程序员的集合,但是考虑到「算法好」和「胜任」程序员这两个集合的交集不小,且「算法好」但「不能胜任」的机会主义者这个补集大小比较小,所以尚能接受,最终考虑成本企业就会选择概念上不准确但是很容易锁定的「算法好」的集合 —— 一言蔽之,企业取的是近似解,即胜任但算法不好的筛选成本太高,弃之不可惜。
打个比方,就好像普通饭馆招厨师,认真地招好厨师,就得让总厨来认真全面地考察,可能还得尝尝面试者做的几道菜 —— 但总厨觉得浪费时间,因为招人的 KPI 没有或者很少;饭馆也觉得浪费时间,就你工资最高,结果不去搞实际工作产出,跑这给我当人事来了。最后就变成,来人面试,总厨就扔给面试者两个萝卜,让面试者在总厨下班前雕出一龙一凤,雕出来就过,雕不出来就挂。可能能雕出龙凤的大多也是不错的厨师,但是普通饭馆根本不做这种菜。
---
另外谈一下这种现象怎么破?
从个人角度来讲改变不了什么,怎么都行,反正是博弈,两条路,玩或不玩。要么跟着卷,要么多花时间筛选不怎么考算法但是还不错的企业。
从行业的角度来讲,其实是一个军备竞赛的对垒问题,魔高一尺道高一丈。大规模考算法以前,其实很多公司招聘都很凑合,某些面试官秀他一脸 VIM 都能过(别笑,真事)。因为就算 correlation 不是 causation,但大部分企业觉得有 correlation 就够了。
假设有这么一个平行世界,企业没发现算法的方式,都看 VIM 用的好不好,那可能内卷的时候面试就变成打编辑距离版的高尔夫,给你两篇代码,高手按 30 次 键盘就能从 A 编辑到 B,菜逼得按 500 次。
那卷成这样怎么破呢? 历史进程都是往前的,跟潮流做对不进则退。但是凡事都有兴衰,潮流不能推回去,但是可以加速:毕竟企业选算法是同时考虑集合的 correlation 和成本,那么唯一让他们放弃的方式就是减少 correlation 或者提高成本。提高成本不是诸位能说了算的,但是大家可以用加速主义的思想努力减少 correlation 。假如算法面试筛出来的人很多除了算法啥也不会,企业就会逐渐放弃这种方式,只能被迫寻找成本高但更合理的考察方式。(假设那个考 VIM 的平行世界,因为学 VIM 就能进,所以后来出现很速通 VIM 的培训,企业这种懒惰的筛选法就不好用了。最后就能寻找靠算法,毕竟考察算法比考察 VIM 更合理一点,当大家都能 hack 算法的时候,企业就会换到比算法更合理的考法)。
所以大家一方面可以安心刷题。另外一方面刷题成功的同志可以搞搞培训当副业,一方面是现在这个产业很有需求,所以还是有赚头的,另外一方面是大家都来努力做这个产业,这个产业就被加速灭亡了。