- Published on
关于面试的一些思考
- Authors

- Name
- 薯仔
- @Henry_Yangs
面试是渡劫,也是修行
历史下的一颗尘
如果工作还能干下去,谁又想跑出来面试呢?终究还是没能逃过裁员的大棒,虽然心里有一些预期了,但通知到的那一刻,心情多少还是有点起伏的。
也正因为心里有一些预期,其实从挺早的时候就开始准备面试了,只是断断续续的面试也没拿到多满意的 offer。之前还能在公司苟着,偷偷摸摸地准备面试,后来通知到了,也就无所谓了,工位坐着就正常干活,中午一到点就去会议室,下午一到点就下班,也算是过了正常的一个月,耳边甚少同事的抱怨工作的声音,人也感觉舒服多了。
思考了啥?
避免自我怀疑
面试这个事,其实是候选人和面试官通过候选人的简历找共识的过程,但是我们作为候选人,一开始并不知道面试官是什么样的人、想找哪个方面的共识、以及面试官对各个问题的看法如何。所以,首先我们需要对面试本身放平心态,千万不要觉得哪次面试的表现不好,或是面试官的态度不好,就开始怀疑自己的能力是不是太差,甚至开始怀疑自己本人是不是有问题。
不可否认,我们不是全知全能,但面试官也不是全知全能,每个人都有知识盲区或是复习的时候没有覆盖到的内容。如果面试官始终要拿着自己的长处来挑战候选人的短处,或是明知候选人在某方面经验不足而一直刨根问底,只为了满足自己那点虚荣心,那这样的团队不去也罢,不和这样的人合作反而是幸运的。
所以如果在面试过程中遇到了自己不会的问题,首先是把它记下来,然后回答面试官这个问题我暂时没有遇到,这个问题后面我去了解下。如果是自己有印象但是不确定的问题,也可以说,我记得是/我大致的理解是...。切记不要太卑微,也不要想着一顿夸夸其谈忽悠面试官。
做好面试笔记
现在基本上都是线上的视频面试,其实对于候选人来说会轻松一些,特别是不需要再强记那些没有答好的问题。可以对每一次面试都准备一个文档,记录下自己没有回答好的题目、面试官倾向哪个方向的问题、面试官对自己的哪些表现有能看出来的正向反馈、自己在哪些方面表现不够好等。
当然也会遇到一些公司用的面试平台强制要求不能切换浏览器,这时如果还想做面试笔记,可以有几种方案:
1.提前告知面试官,说自己会做记录,有跳出浏览器的需要。不过大概率这个说辞不会被接受,因为面试官并不知道候选人跳出浏览器是去干啥了。
2.用另外的设备录音,或是在电脑上打开转录功能。这个方案的问题是无法记录非语言下的认同感,当然,至少把没回答好的问题记下来更重要。
正确处理每一轮面试
对于前端岗位来说,从形式上看基本是五轮,分别是:
1.第一轮同事面
2.第二轮直线 leader 面
3.第三轮交叉面
4.第四轮+2或更往上的leader 面
5.第五轮 HR 面
如果有更多轮次的面试,基本上也能在这里面对应上,之前有听说前同事去微信面了 8-9 轮,其中通道面(也就是交叉面)都有 3 轮,加上总监、GM 面,算下来基本上这五轮面试都齐全了。而对于每一轮来说,都有不同的侧重点。
同事面
对于同事面,不出意外的话,尽可能多而广地准备技术相关的内容,即使是项目本身,也多从技术的角度出发解答。因为同事面的作用就是要保证候选人能干活,不会出现人进来了还带来一堆技术问题(例如 bug、基础能力不会等)。
具体要准备哪些方面这个就看自己的情况了,我的想法是不可能从一开始就面面俱到地准备每一个方面,所以,最开始先从自己的项目出发,看会涉及到哪些内容,例如我最近的经历会比较多前端监控、性能优化、架构相关的内容,那我就先把项目内的问题都尽量梳理清楚,涉及到的知识点都列出来,把自己当做面试官,如果在不了解项目的情况下,就光看简历会问出什么问题。
然后再看下剩下的内容里,自己哪些方面偏弱,可以先快速补一波,让自己的短板尽量高,例如算法、网络等平时用的少的内容。
接下来可以去面一些自己就算拿到 offer 也大概率不会去的机会,当做是刷怪练级,这个倒是很多人都会去做的。
最后,可以准备 1-2 个问题问面试官,因为是同事面,所以可以问一些比较实际的问题,例如工作时长、团队内的基础情况、项目/岗位的一些细节问题。
如果是一面没过,大概率是因为一些基础问题没回答好,注意这里并不是说没回答对,因为有一些面试官对于某些问题有自己很执着的看法,且候选人只要没有回答到面试官的答案,就直接当做候选人的能力不行,这种极端情况可以不用理会。
我们需要关注的是,是不是在过程中有比较多的完全答不出来的问题/自己确实不清楚但凭借记忆随便说的问题,如果有,那么在面试完之后一定要尽快复盘出来,把这些问题的答案比较完整地整理出来,我的经验是越快找出答案,自己对这些问题的印象就越深。
同时,再回头看下自己的项目里有没有涉及这些问题,有时候可能自己并没意识到。例如我最开始面试的时候,在说到前端监控,面试官会问如果监控上报失败了怎么办?说实话刚开始准备的时候我没注意过这个点,因为我们的监控上报就没遇到过失败的时候。被问到之后自己临时想了一些解决方案说了,但我觉得还是不太靠谱,所以在后面的复盘里会再看下这个问题有没有什么比较好的解决方法。
直线 leader 面
直线 ld 面的话,因为这个人是以后工作汇报的人,我们需要在表现出一定的技术能力之外,还需要表现出自己有对于高出一线工作的视角。例如在问问题时,就不要再纠结于加不加班、中午休息多久这种问题;当然有时候第一轮就是直线 ld 的话,可以稍微问一下,但不要过于纠结,这类问题需要在整个面试过程中尽早地了解清楚。所以在这一轮可以问例如整个前端的架构、规划、项目的短期目标等,让面试官感受到自己不是一个只知道埋头做需求的人。
这里会有两种方向的 ld,一种是仍喜欢关注候选人技术深度和广度的(且占大部分),另一种是会想多了解候选人在产品方向的理解。例如我之前面过一家,一轮就是组长,几乎没有技术问题,全部是问当前项目,这里的问项目并不是从项目出发的技术问题,而是像:在项目里你的角色是什么?你在这里面都做了哪些需求?你是怎么看待这些需求的?项目为什么会被砍掉?既然你们的 app 的主要用户群体是某种画像的,为什么你们的需求不是针对他们的,而是针对相反画像的用户的?
如果遇到了后者,那么考察的就不是候选人的技术能力,而是从技术角度如何看待产品,以及是否有主动地去了解产品的发展和受限的原因。所以如果还是在职的朋友可以多了解一下自己的项目的这些问题,可能不会遇到这样的直线 ld,但是对后面轮次的面试官还是很有效的。
交叉面
一般小公司不太会有,主要是集中在大公司的高级岗位或管理岗位。
所谓交叉面,其实就是另一个部门的,和你的直线 ld 差不多级别的人从第三方视角来看是不是真的符合整个公司对这个岗位的期待。
所以这一面我们需要继续深入打磨自己的技术能力,特别是对自己的项目涉及到的技术有更深入的了解。同时也不能放过那些之前没复习好的基础问题,例如我就遇到过一次通道面,面试官在我的自我介绍都没说完的情况下,直接打断我,然后说:好了,现在我们来问一些基础问题,你先讲一下有几种数据结构。我???
这有啥办法,遇到了只能硬上,包括整个后面的面试都是围绕八股文在问。所以对于我们来说,遇到八股文问题其实没事,我们不要一味地用八股文章的角度回答,而是尽可能地将这个问题向自己的项目上靠,或者是向更高维度的问题上靠。例如上面提到的面试官直接问数据结构的问题,我回答之后他继续问了和树相关的问题,其实我也没准备,简单地说了两句之后,我就开始往 React 的 diff 算法上靠,虽然显得有点生硬,但是至少也是表现出自己对于知识点的运用,不过结果就要看面试官怎么看这种操作了。因为我遇到的这个面试官就觉得我回答得很不好,给了不怎么好的评价。
所以顺便感叹一句,面试真的就是运气和实力的结合,谁能想到会遇到这种类型的面试官呢?
+2 或更往上的 leader 面
如果有幸冲到了这一轮,那么离拿 offer 也就只差最后一步了。一般来说,在大厂这一轮也会被分为总监、GM 两轮,在小公司或小团队,这一轮基本上到了项目负责人或是 CEO 了。
在这一轮基本上不用再准备多少技术问题了,因为到了这个层级的面试官几乎不会关心候选人的技术问题,要问的前置几轮都问了,如果要问,基本上也就是 1-2 个很基础的八股文,当然,这个结论只针对前端岗位和面试官不是前端出身的场景,如果是后端或产品岗位,面试官还是很可能问一些比较深的问题。
对于前端来说,这一轮就需要表现出你的“吹水”能力了,把项目再好好准备一下,类似上述直线 ld 面里的后者问的问题,以及为什么要离职?对团队的产品有什么认识?对平台有多少认识?即使是小公司,也会通过前面几轮面试了解到公司和平台的东西,所以需要结合之前面试官的解答,再去网上搜一下他们公司的情况,保证在公司和产品的基础方向上不会被问倒。
还有一种问题是,如果你的项目经历和这个岗位并不相符,那么要怎么回答这个问题也需要好好想一下。简单来说,项目的形态是各异的,但是背后涉及的技术是相通的,我可以在迁移能力和技术的同时,快速学习新的业务方向,举例以前的学习能力,告诉面试官可以在加入团队初期,甚至是入职前可以快速学习新业务方向的知识。至于接不接受,又是面试官们的想法了。最近我就面了一家这个情况,其实从最开始投简历猎头就说 hr 说我没有这个业务方向的经历,但是因为大厂+学校还行,就给了机会,结果到最后面到 CEO,CEO 只问了一个问题,就是项目经历不符,我简单回答了,最后还是给挂了,也没办法,只能说差一点点缘分。
其实面到这一轮,有一个问题需要特别注意,就是回答问题的时候要结论先行,细节的描述如果面试官想听会再深入的问,如果一开始就从背景开始讲,很可能还没讲到核心问题就被面试官打断了。所以到了这一轮,作为候选人需要针对所有问题再准备一份结论先行的版本。
HR 面
到了 HR 面就看自己的谈薪能力了,当然 HR 也会问类似为啥要离职之类的问题。当然在这轮无论是大厂小厂,也还是要问清楚他们的薪资结构,发多少薪,有几个月的年终奖是会写到 offer 里的,其它的福利有啥,有没有股票期权等等。
至于如何谈薪,这是个玄学问题,不过有个基础逻辑是,可以先问下 HR,面试官们对自己的评价大致是如何的,我们也需要根据评价来给自己定价,当然第一次的报价要给 HR 有砍价的余地,并且我们要做给出锚定的那一方,这样对方再砍价也能基本上落到我们可以接受的区间里。
小结
重申一下,不要因为别人的否定而否定自己。这家不行就下一家,总能找到互相合适的工作的!
关于找猎头
至于找猎头,我觉得是有必要的,特别是在职业生涯早期。我对猎头的作用的理解有两个方面:
第一是他们会去深入了解需求方的真实需求,如果是直接对接 HR,有些 HR 自己都说不清用人团队需要什么样的人,具体需求是啥也说不清,所以猎头有时候能更好地帮我们匹配到合适的机会,或是根据我们的背景来推荐。例如我最近面的一家公司的机会,可以说是猎头帮忙争取到的,因为我并没有他们项目的相关经验。如果是自己去游说 HR,我个人的看法是几率不如猎头游说的大。
第二是猎头的目的是撮合双方,在背景、经历、能力大致符合的情况下,猎头其实是非常希望我们可以入职成功的,在这样的动力驱动下,我们会从猎头那里获得更多的信息,包括但不限于面试流程、面试官的风格、甚至是面试过程中的问题,这些内容特别是对于我们希望面一个比自己当前更高一级的岗位就会特别有用,相当于帮我们事前演练一次,我们可以自己准备后再找有能力的人帮我们再优化一次。
但有唯一的一个问题是,尽量不要当第一个“吃螃蟹”的人。正常情况下,我们都说做啥都要趁早尽快,但是找猎头推荐这件事情上,如果做第一个被推荐的人,很容易就成炮灰了,除非是各个方面都很符合的超强能力大佬,不然可以相对靠后一些。
因为我遇到过两次这样的事情,第一家是一个初创公司,但是不用融资就已经可以活得很滋润了,然后我是这个猎头推的第一个到技术负责人这一轮的候选人,和技术负责人面聊也聊得很好,本来以为可以和 HR谈薪了,结果 HR 说还要和 CEO 聊一下,但是暂时没能约上 CEO 的时间,我出来后就和猎头反馈,结果猎头也很惊讶,说之前和他们聊的时候并没有提到这个岗位需要和 CEO 聊,我这么一反馈,猎头也有点慌,然后大致和我说了一下。很显然,由于我是第一个到这一轮的,准备上又不够充分,所以最终沦为了炮灰。
第二次是最近遇到的,由于上一次遇到这种问题没有做有效的复盘,导致错失第二个比较好的机会。大致的过程是,这个 HR 本身就不是专注推互联网岗位的,这次这个 hc 是 TA 第一次推互联网相关的岗位,所以很多地方 TA 也不清楚,都是基于以往的经验来给我建议的,而且我也是 TA 推荐的候选人里第一个走到终面的(包括TA 推的所有岗位),所以在各个环节上 TA 都没有什么经验,基本上是完全靠我自己的能力面到终面的,所以这也是我一直说不要过度/长时间怀疑自己能力的原因,因为我们持续准备,能力都是在不知不觉中提升的。
最终,还是没能闯过终面,这期间 HR 都开始准备收集我的资料了,我承认在某种程度上,提前收我资料这个事情让我对终面轻视了 1‰,当然我也不会去怪猎头没能给我更多的 tips,只是 TA 在所谓帮我复盘的过程中,收集了很多我所遇到的问题,一定是可以很好地帮助后来者的。
我以前是比较反感猎头的,觉得你推和我自己投能有多大差别,后来慢慢地觉得,差别还是真的很大的。
一些其它的点
通用技术问题
一般在 +2 的 leader 面试时,大概率遇到的是做产品或后端的大佬,这时候我们准备的前端问题就显得有些苍白无力了。如果简历上大多是前端专业的内容,那么在准备这一轮的面试时,更多地准备产品/项目相关的内容,例如如何看待自己所做的产品?在做需求上有什么看法之类的。
如果遇到的大佬是做后端的,并且简历里有监控、性能优化相关的内容,就需要更谨慎地准备了,因为这些事情不仅前端做,后端也要做,只是具体手段不同罢了,特别是监控相关的数据,要提前整理好,我刚开始面也遇到过一些比较细节的数据没有准备好,面试过程中被问到,然后随便说了个数值,结果把自己给坑了。
感受面试官的性格
这个就看自己能不能快速地感受到了,如果能并且比较准确,可以及时地调整自己的面试状态和策略。像我最近面到终面的机会,其实各个大佬都是喜欢结论先行的,并且已经有打断过我的情况了,但我傻夫夫的没反应过来,还是按照自己的节奏在说,这就不太好了。
大致情况下,前三轮都会比较抠细节,后面就不会那么关注细节了,当然,结论先行这个模式,本来就是更高效的,回答问题建议是优先考虑这样的结构。
举例的重要性
最后想说的一点,也是最重要的一点,只要是提到的知识点/问题,能举例的一定要举例。举例子,才是最能体现出候选人能力的,否则全是浮于表面的大话空话。例如在技术上我想说性能优化,如果只是针对某个场景说有哪些优化的方法,那效果肯定不如举出一个实际的优化案例。面试官一定是更想听在实际工作中,候选人在面对问题时是如何解决的,而不是一味地讲方法论。又例如在做团队内的代码评审时,我们要举例说明在团队里具体做了哪些事情,而不是简单地说做代码评审有什么好处。
其实就像这篇文章一样,我在说每一个点的时候都尽量地加入一个我的真实体验作为案例,这样才能让整篇文章的内容更具有说服力和可信度。
总结
Anyway,面试对于多数人来说都是一段比较长的事情,拿到 offer 不是最难的,最难的是找到一份各方面都契合的工作,这里面不仅有实力的成分,更有运气的成分,可能最契合自己的岗位是在自己入职新公司之后才出来的。所以持续工作,持续关注市场行情,不要滥跳,但也不要太过于委屈自己了。希望所有人都能在渡劫和修行之后找到最合适的工作~
后记
后来在脉脉上发了个匿名贴讲了下最近一次面外企的经历,有个老哥的回复还挺中肯的,说面试官想要的是前端带来的业务价值,而不是自动化测试和前端监控。这倒也是没错,现在行业情况所导致不再需要前端做过多的超出自身职责的内容,特别是在非互联网行业的公司,他们应该更关注 ROI,而且他们的项目都是以 SaaS 平台或大型官网为主,这些项目不是说不需要自动化测试和监控,而是他们更需要挖掘前端的业务价值,或者说他们需要一个对业务价值很了解的前端。
可以挖掘的点包括:
1.哪些事情是主动做的?
2.在业务需求的开发中,作为前端开发,对业务做了哪些推动作用的事?
3.如何和产品 argue 需求点?依据是什么?
4.是否有技术创新?这项创新给业务带来了什么改变?
从这个角度看的话,我的简历确实没有体现出业务价值这块,再去好好思考下。