JackyLove 的技术人生

人生艰难,唯有一技傍身才能慢慢走向通途。个人博客,记录生活,分享技术,记录成长。专注全栈技术,next技术。

第77章—面试篇-五千字的面试技巧分享

首次发表于 2024-07-29, 更新于 2024-07-29

前言

本篇我们聊一聊面试技巧,分享这个并不是帮助大家“包装自己”,亦或者“投机取巧”。实力不济被淘汰固然可惜,但真正可惜的还是能力达标,却因各种原因没有发挥出自己真正的实力。

其实无论是写简历、还是面试都是有一定技巧的,本篇就和大家聊聊我的思考。

1. 项目经历如何写?

在回答“项目经历如何写”前,我们需要先知道,哪些项目经历是可以写在简历上的?

以 Next.js 为例,如果你只是看过这本小册或者官网,写过一些简单的 Demo,没有真的使用 Next.js 做过项目,那我建议还是不要写了。

简历中甚至可以不提及 Next.js,因为如果你写了 Next.js,就要做好被提问的准备。如果只是为了彰显自己厉害而凑数的技术栈,一旦被提问,回答得乱七八糟,只会是大大的减分项,进而让面试官怀疑你其他技术栈的真实度。

那你可能要问,简历里都不写,那我岂不是白学了?简历里不写,并不代表回答的时候可以不说,你可以假装无意的提及到自己对 Next.js 的涉猎,出于兴趣学习过 Next.js,这样反而会是一种加分项。

当然写也是可以的,只是不需要做过多笔墨,比如在技术栈部分写上一句如“熟悉 Next.js + Prisma + Mongodb + Vercel 开发流程,实现过自己的技术博客”即可。不过写了就要做好被提问的准备,比如准备一段实现技术博客经历描述、看看这本小册的面试题回答等等。

如果你在项目中确实用过 Next.js,那就可以写一写。在我看来,简历的一大作用是引导面试官进行提问(那些按照题库面试的就没办法了,至少阿里的面试官都是根据简历进行提问的),而其中项目经历又是重中之重。

一个好的项目经历该怎么写呢?

这个问题的本质问的是其实是一家公司想要什么样的人?所以你可以把这个问题换成:如果你开了一家外包公司,你想招什么样的人?

最基本的肯定是这个人能够按时完成自己的工作,其次在工作之余,能为公司考虑,创造更多的价值。再往后的就比较黑心了,就不多说了……

反过来也是一样的,当写在简历上的时候,完成公司的项目只是最基本的要求(当然有很多人连项目都完成不好,但是他们不会写在简历上),所以只是简单的介绍下项目以及在项目中做的事情和用到的技术栈,其实并无亮点可言。你要重点描述的是:你在完成项目之外做了什么?

给大家看个实际的例子就明白了:

这就是一个不错的模板。在言简意赅的介绍项目之后,可以讲讲在项目中遇到的问题,自己是如何优化解决的,带来了哪些价值,为了增加真实度,最好有数据支撑。

那你可能要问,我没有做过什么优化,该怎么编呢?

这我就不知道了……因为我分享的并不是包装简历,而是告诉你什么是好的“简历”,什么是好的“回答”。

这些准备其实不是在面试前简单学习一下就能做到的,而是要在日常工作中就开始为自己的简历,为自己的“价值”铺路,如此才能在关键的阶段将自己推上更高的位置

优秀的人往往有一些独特的品质,比如行动力强、学习快、爱折腾、举一反三等,这些结果其实是品质在日常工作中的开花结果。面试只是透过题目和交流挖掘面试者的优秀品质而已。但这并不是说,你没好的项目经历就没有好的品质,而是说,每个人都有优势和劣势,如何扬长避短,发挥出自己的优势,在项目中留下印记是一件日常就需要思考和准备的事情。

完成一个项目经历的书写只是一个开始,作为提问的重点,面试官会通过询问你具体做的事情,了解项目经历的真实度和所做内容的含金量。

那具体的项目经历该怎么回答呢?这就要说到老套的 STAR 法则(其他公司我不清楚,但阿里的面试官在做面试官之前都要过一个面试官培训课程,其中就明确的讲到这个原则)。

所谓 STAR 原则是结构化面试当中一个非常重要的理论,它是 Situation(情景)、Task(任务)、Action(行动)和 Result(结果)四个英文单词的首字母组合。

  1. Situation:事情发生的情境
  2. Task:你的任务是什么
  3. Action:你的行动是什么
  4. Result:结果如何,你取得了什么成果

《金字塔原理》中的 SCQA 模型也是差不多的:

  1. S(Situation)情景:由大家都熟悉的情景、事实引入
  2. C(Complication)冲突:实际情况往往和我们的要求有冲突
  3. Q(Question)疑问:怎么办?
  4. A(Answer)回答:我们的解决方案是什么?

我们就以 STAR 原则为例,比如“请讲出一件你通过学习尽快胜任新的工作任务的事”:

  1. 这件事发生在什么时候?(S)
  2. 你要从事的工作任务是什么?(T)
  3. 接到任务后你怎么办?(A)
  4. 你用了多长时间获得完成该任务所必须的知识?(深层次了解员工学习能力等)
  5. 你在这个过程中遇见困难了吗?(了解坚韧性,以及处理事件的灵活性)
  6. 你最后完成任务的情况如何?(R)

当然这是从面试官的角度来看的,反过来从面试者的角度也是一样的。

首先千万不要让面试官这样追问。面试官追问一点你回答一点,如此挤牙膏的感觉就像悬疑探案,你将自己的弱点隐藏起来,面试官一点一点扒开寻找“真相”,这种“着急”的感觉会让面试官在寻找出点蛛丝马迹的时候,就恨不得将你判刑淘汰。倒不如大大方方的跟他直接完整讲述,都扒拉出来给你看,生怕你不知道,发现不了我的优秀……当然这个前提是你做足准备。

其次在面试前,要多准备几段这样的经历,每段经历都按照 STAR 法则编写,最好再口语化、有趣味一点就更好了。其实项目经历是非常容易勾起面试官好奇的部分,也是最容易展现个人品质的部分。写文章讲究起承转合,讲究冲突与矛盾,你遇到的问题其实就是非常好的“冲突与矛盾”,为什么会遇到这个问题呢?你是怎么思考的?你尝试了哪些方法?学习了哪些东西?最后是怎么解决的?解决完后是否将其升华?比如建成工具平台,推广团队业务等等,这些故事化的描述会非常凸显个人能力和品质。

最后,项目经历的回答表面上可以“风轻云淡”、甚至“洋洋得意,颇为自豪”,但内心一定要慎重再慎重。你可以在项目经历上添加一些特殊的技术关键词,吸引面试官去提问。你要知道,那些面试官可都是“老狐狸”,他们特别喜欢在面试者讲述一些抽象事情的时候追问其细节,在讲经历的时候追问技术,以检查其内容的真实度。为了满足他们,你可以故意抛出一些准备好的点,勾引他们提问,所以千万不要“飘”,人一飘,就容易夸耀自己,扯出一些自己其实都不熟的东西,这些东西一旦被抓住,不仅拉低面试分,也是对自己面试状态的损害。

2. 面试心态

之所以将“面试心态”部分单独拿出来讲,是因为面试很考验心态,心态往往又决定了发挥。

有的面试者一开始就心态就不好,紧张恐惧,回答支支吾吾、放不开。有的面试者一开始心态不错,但遇到几个不会的问题就开始丧失信心,气势全无。有的面试者则看人,遇到亲切的面试官能够谈笑风生,遇到严肃的面试官则胆小谨慎。

如果面试前很紧张,分享你一个小技巧:

布鲁克斯设计了一个实验,来寻找答案。她告诉一些要演讲的人放松,通过对自己说“我很冷静”来舒缓紧张。而 鼓励另一些人拥抱焦虑,对自己说“我很兴奋”。

哪个策略都没消除焦虑。演讲前,两组人还是紧张。然而,对自己说“我很兴奋”那些人,感觉更能处理压力。虽然还是紧张,他们自信有能力做好演讲。

面试前紧张其实是正常的,紧张这种情绪的客观目的是为了让人能够集中注意力,调动更多资源处理问题。真到事情开始的时候,紧张往往会消除大半。

但是心态上的问题其实跟人的底层认知有很大关系,一时间也难以改变。与其聊个人成长和心理学,我更想和你聊聊我眼中的面试官。

简单的来说就是,你遇到的 99% 的面试官,都是普通人,没几个真正牛逼的,无论是不是大厂。套用罗翔老师的话就是:

注:其实这样说我心中也有点忐忑,因为中小厂的情况我并不清楚,大厂反正是这种情况。

技术面试官分两种,一种主要考察技术,一种主要考察人。

前者主要在一二面,往往由一线开发同学承担。千万不要觉得在一线开发,技术就很强,他们只是一群加班狗而已。白天开会,晚上写代码,还要忧虑被裁。为了薪资,咬牙坚持、故作工作开心。加上大厂工作强度高、节奏快、压力大,到了周末只想躺平,这种情况哪有什么时间研究技术呢,平时做业务也更多是堆代码,毫无成长可言。毕竟公司雇你是让你干活的,不是让你学习的,付你的工资里本身就包含了委屈费。

那你可能要问,大厂里不还有纯做技术的团队吗?现在大多都被裁了,所以你遇到的概率不大。

至于后者,主要在三四面,往往由团队 leader 承担。这种技术上就更不用担心了,他们很少问技术类的问题,就算问了,也只是问问而已,他们自己可能自己都不知道答案。

哪怕他们曾经技术很强,从团队中脱颖而出,但作为 leader,工作的职责就不再是研究技术,技术上注定是要弱于一线开发同学的。阿里的很多技术 leader,大团队是会要求每年至少一次参与到实际业务开发的,结果上,无论 P7、P8、P9……,写的代码不多,还 bug 一堆,P 级越高,bug 越多。

所以我朋友圈发过防割韭菜小技巧:

但我说这些并不是让你睥睨面试官,只是想告诉你,平台牛逼不代表个体牛逼,面试官也是普通人,会内耗、焦虑、忧虑、恐惧,技术上也不一定全面牛逼,顶多在某个细分的技术领域上有些经验。

如果你把面试看的太过重要,把面试官看的太过神圣,把他当成高高在上的决定你“未来生死”之人,那大可不必。绝大部分的面试官在作为同事相处的时候,都非常融洽随和。职级越高,越是如此,因为越是在大厂职级高,越是需要跨团队协作沟通,高冷之人是混不下去的……

但这也不是说,上来就把面试官当成朋友看待,无话不谈。面试官在面试的时候是“无情”的,千万不要通过所谓“真诚”来打动面试官,聊着聊着就开始抖出自己的底子。

真诚确实是一张好牌,它跟任何一张牌一起出都是王炸,但唯独单独出的时候,是一张废牌。所以真诚也要建立在能力过关的基础上。君子有所为有所不为,面试有所谈有所不谈。原则性的东西更要坚守,比如不要泄露公司机密信息、不要过多抱怨上家,尤其是谈跟上家撕破脸的事情。(维护自己的利益当然是你正常的权利,我只是建议面试的时候不要聊这些,没什么价值,回答不好还降低印象分)

3. 面试题该怎么回答?

回答面试题我们通常理解为“背八股”,确实,很多面试题看似都有标准答案,但这些标准答案其实只能算一个 60 分的回答。面试题考察的不仅仅是面试者的知识储备,更要通过面试题发现面试者的优秀品质。

比如“性能优化”是一个非常经典的面试题,大家搜一搜回答,总结整理一下,便能对这个问题回答的头头是道。但是面试官真的是在问这个问题本身吗?反正我遇到这个问题的时候,会追问面试者:“停停停,你说了这么多,我想想问你在项目中具体用到了哪些性能优化?性能优化的效果到底怎么样?最后带来了哪些收益?”

所以面试官看的其实并不是这个问题的标准回答,而是看面试者是否真的为自己的项目思考过,进行过优化,并带来了收益。如果你在之前的公司能够做到这些,那就可以认定你的积极主动性是满足要求的,自然也会在新的公司创造收益。

那你可能要问,带来收益的又不止性能优化,我就非要做性能优化?确实不止,所以你就更要在其他的回答中体现出来呀,如果你都不能体现出来,可不是只能问“性能优化”这种最常见的问题吗?

所以面试篇里的问题,我会给大家一个“标准答案”的同时,我也会给一个实际回答用于参考,你可以在比较中感受两种回答的差异。

最后,如果面试中遇到不会的该怎么回答呢?引用《淘系前端校招负责人直播答疑文字实录》这篇文章里的回答:

元彦:面试中遇到问题不会回答,这是非常正常的,毕竟大家在学习过程中遇到的问题,跟我们在工作中遇到的问题是非常不一样的,除此之外,我们看问题的角度,也是有差别很大的。

举个例子,很多人都在看 React Fiber,但是如果问你们,为什么要有 Fiber 这个东西,可能很多人都回答不上来,因为大家只在社区里面看到说,Fiber 是怎么工作的啊,但是为什么要有 Fiber?如果没有会怎样,而这种思考,其实是非常底层的。我相信,很多人可能都没有思考过。

那如果遇到的问题不会,你可以先选择不会,说我觉得自己没有信心能答出这个问题,当然我更希望听到你说,我现在不会,但是你给我两分钟思考一下,我想一下这个问题有没有答案?我觉得这是一个很好的思考习惯,首先你在面对不会的东西是坦然的,我当下不会,很正常,我之前没有思考过这个问题嘛,那我们再花两分钟思考一下,给一个初步的答案。

所以说遇到问题,也不用不会就不会,也可以有一个积极的方式回应。

其他

过往我也写过一点面试相关的文章可以参考:

  1. 《前端,校招,面淘宝,指南》
  2. 《前端,社招,面淘宝,指南》
  3. 《你累死累活做业务,绩效还不怎么样,我只能帮你到这了……》
  4. 《淘系前端校招负责人直播答疑文字实录》
© Copyright 2025 JackyLove 的技术人生. Powered with by CreativeDesignsGuru