关于面试,做一些经验分享。
过年时候默默给自己定下了3个目标。第一个就是2023要换一份喜欢的工作。没想到在4月就提前实现了这个目标。
是一个我很看好的大厂,期待的岗位、看好的方向,薪资涨幅也比较给力。最近这段时间没空发文章,如果是已经在粉丝群的小伙伴可能已经知道,我最近一直在忙离职、搬家、入职新公司的事情。
文章目的
如果你最近也在关注市场的机会,那你可能会发现这个“金三银四”并没有想象中的热闹,岗位依旧不多,似乎比起去年并没有多少好转这篇文章的目的正是为了激励那些和我一样在一直努力的人,回答一些常见问题,如何准备面试、如何面试,分享一些最近的心得和经验,给大家做做心理按摩。(不涉及具体技术细节)
面试整个面试分为三个阶段:准备阶段,投递简历阶段,面试阶段,这三个阶段又可以做细分,我会分别聊聊注意的事情。
以下都是自己的一些拙见,如有不同见解欢迎交流和补充。
准备阶段
机遇大于准备,但是功在平时
说实话,这次面试我等于是“裸面”的,年后几乎没花太多时间准备,只是看了看自己做过的项目,在技术细节、八股文、算法这块我等于是一点没看。面试有时候谈到一个细节,有时候一拍大腿,这东西我以前不是深入研究过吗?但是很多东西我忘了……
能进这个部门,多少是优点“运气”,部门正好缺人,面试的时候 HC 充足,互联网大公司背景,这些都是我的优势,并且我很喜欢这个方向,所以当我看到机会的时候果断投递了简历。
但是“运气”也是留给有准备的人的。比如算法,虽然今年我没做,但是去年下半年的时候我每天坚持一两道题,今年虽然做起来没那么快吧,但是思路是有的。虽然技术细节我忘记了很多,但是因为我一直有持续学习的习惯,对知识有过系统的梳理,我还是能用自己的语言组织起来去把厚的知识点说薄,能表达一些是一些。没准备不代表我真的什么都不会。
如果你是平常都在积累,但是对于面试提准备不够充分的人,那我建议你看到喜欢的机会直接冲,尤其是那种匹配度很高又刚好放出来的岗位。需要掌握的知识点繁杂,面试永远没有准备好的那一天,机遇更重要。
PS:最近得知一些公司招聘标准进一步提升,时间真的不等人。
如何准备?
八股文准备:有人可能会觉得面试造火箭,工作拧螺丝,这点也许在应届生方面体现会更明显。但是如果你工作够久就会感觉到,这些所谓的八股文其实更像是一块牢固的基石,在你 今后遇到问题的时候会为你提供多种解决问题的思路,在你学习新技术的时候也会举一反三,一眼看到实现的关键和各种框架之间的联系。所以在学习基础知识方面,不要抗拒。
如果你不清楚需要掌握哪些内容,有两个办法:
查看你向往岗位的JD信息,根据JD要求有针对性的学习。
根据你的项目来,简历提到的关键词和技术都要深入搞清楚。
项目准备:认真梳理最近的或者最拿得出手的项目,从梳理项目的背景开始,项目是如何产生的?为了解决什么问题?提供怎样的能力?核心业务模型是什么?如何建模的?架构如何?如何分层?每一项技术是如何选择的?为什么不用别的技术框架?核心业务流程是什么?对于业务你有什么思考等等。对于项目准备,你要不断地提问自己问题,并且尝试做出满意的回答。只要再提问的过程中涉及到不懂的点,马上记下来,然后去查阅、解决,然后重复这个过程。
这里我只是抛砖引玉,总之对于项目准备一定要非常充分,太多的人对八股文花费了大量时间,而在项目上却没有足够的准备。项目准备的重要性在我看来占一半。笔者在面试的那几个星期里,基本处于吃饭走路都处于不断提问自己的状态,很多问题自己刚准备了晚上面试就被问到了。
算法准备:这一块面试前建议不要浪费太多时间,重在平时准备,一天一道题保持手感就好。如果时间紧张,可以优先把每个类型的题目做一道。
投递简历阶段
简历怎么写
简历的质量会直接决定你是否可以获得面试机会,我们可以把自己想象成一件商品,想办法把自己推销出去。
我的简历是这样写的,按照模块先后分为:联系方式、个人信息、专业技能、工作经历、项目经历、工作期望和自我评价。
联系方式和个人信息:这个一定要放到最前面,方便hr联系你,并且可以一眼看到你的教育经历、工作地等最重要等信息。如果有个人博客和Github也可以写,证明你持续学习的能力。
专业技能:这个模块也属于优先级很高的位置,可以根据你想去岗位的JD信息将高并发、GC、多线程、SpringCloud、深入阅读源码等关键信息写出,让HR一眼看到这些用于筛选简历等关键词。
工作经历:如实填写工作经历,建议不要和项目经历混到一起,可以让人一眼看出你有哪些任职经历。
项目经历:这块内容是重中之重,并且尤其要好好写最近一两份项目经历。这块容易有一些误区:
我看不少人把项目的概要介绍写了一大堆,没必要,重点简要描述你做的项目在整个业务中的角色,以及你的角色。
写工作内容的时候可以参考STAR法则,情境(situation)、任务(task)、行动(action)、结果(result),这是很经典的描述方式。
描述工作内容要用简练语言描述问题和你的解决方案,以及这样做产生的价值,最好是可以量化的数据。比如接口性能提升多少,业务增长如何,效率节省多少。方案的价值就是你的价值。
不要简单的写项目CRUD……在我看来简直是大忌。意思等于我很平庸,项目无趣。
项目所用的技术栈可以写,在工作内容描述也可以详细写技术细节,让内容更丰满,对自己专业技能描述的内容做一个支撑。
通过上述这些内容,体现出挑战,体现出你在项目中的重要性。记住,你在简历中所有夸自己的点都需要具体事情来证明。
投递简历
切忌海投,面试是一个很费精力的事情,如果集中投递太多会导致面试安排太多,无法有充足的时间对每次面试结果复盘。当然,如果你的竞争力相对不高,简历通过率太低,那另当别论。
对于喜欢的公司来说,投递的岗位一定要明确,通常把机会留给那个和自己背景匹配度最高的岗位,从它的任职背景或者岗位要求中找到你优势最明显的,这样你的简历通过率更高。
还有一点,可以尽量找那些自己部门招人的岗位,这样简历更容易通过,后续流程跟进也更方便。
面试阶段
心态
重要的事情说三次:自信!自信!还是自信!
既然已经进入面试,那你唯一能做的就是做到最好的自己。很多人面试的时候没底气,对自己的答案不肯定,总觉得面试官比自己厉害很多。其实完全没有必要有这样的顾虑,这只会让你在回答的时候底气不足,从姿态上就会让人觉得你不是一个能力很强的人。另外面试是一个交流的过程,你来我往,好的面试对彼此都是一次学习。你的自信和对答案的肯定会让人感受到你的价值。
千万别忽略这点,有些人不知道为什么就挂了,感觉答得也还行,可以考虑是不是这里除了问题。面试不只是技术的展示,也是个人魅力的总体展示。
自我介绍
总的来说,一般自我介绍就是为了大家进入一个面试状态,对你有个基本了解。自我介绍时可以简单说一下你的工作年限,工作经历,以及工作岗位,主要使用的技术栈是什么,自己擅长什么,最近一份工作的项目是什么。
通常来说,我不会在这个阶段做项目的详细介绍,只是用一两句话简单介绍下,除非面试官做出了明确要求。一般来说,在后面他会专门提问你项目经历,或者问你有没有遇到过什么难点。我会将项目介绍放在这里。
项目描述
项目描述这块是重中之重,一些关键点:
关于怎么准备项目,准备些什么我在准备阶段已经说过,这里需要的就是你有逻辑的表达出来,参考STAR法则。
主要核心有这几个内容:项目名称、背景是什么、目标是什么、项目架构是什么、技术栈、你承担了什么角色、你解决了什么问题、有什么成果。
除非你们的业务背景相关度很高,否则不要说太多具体业务上的介绍,大概讲清楚核心功能就好。
所有提到的技术栈都是你熟悉的内容,后面大概率会顺着你的业务和提到的技术栈提问。
关于项目难点
对于面试中问你项目难点的时候,很多人不会回答。其实没那么难,不要觉得自己认为的难点太简单会丢人,好好准备一下选个最难的。比如微服务下的分布式事务问题、遇到的SQL优化问题、分库分表、项目架构问题、生产中遇到的线上Bug、接口响应时间如何优化、业务设计难点等等。
如果你还是觉得不知道怎么去做,可以去好好思考一下自己的项目,给自己创造问题。
比如如果你们的系统QPS提升十倍,系统可以撑得住吗?如果承受不住,你会从哪些角度解决问题。即便你做的系统没有QPS压力,具体到功能上有没有更好的设计方案?比如用户系统就很简单,那它就没有难点了吗?接口权限系统你怎么设计?密码交互怎么保证安全?敏感数据安全?如何保证服务的可用性?作为基础服务如何保证可靠性?
注意事项
这里我说一些暂时想到的比较关键的点。
1.对于每一个问题,一定要做尽可能详细的回答
这是展露你自己实力的机会,避免出现一句话回答的情况。比如面试官问你用过Redis吗,你说用过;问你知道Redis的为什么吗,你说知道;MySQL事务的有几种隔离级别,你就说四种。看起来这种对话很搞笑,但是却实实在在存在。如果真这么聊,话题就没法进行下去了。正确做法是完整的回答这个问题,对这个问题的设计的知识点进行发散、深入的回答,这样才能体现出你对比其他候选人的优势。
2.不要回答的太流利
参考了第一点,你可能又会在面试的时候对于一个知识点,面试官还没有深入去问,过于流利和完整的回答。就像是面试官问你你叫什么,你连自己爸妈和家庭情况都介绍了。对于这种情况面试官可能会有一种判断:你是个面霸,这些知识点都背的滚瓜烂熟,以至于无法考察你真正的水平。
这对后续的问题很不利,他可能会加大难度加深难度继续考察你。如果你真的水平很高,当我没说这点。但是如果你就是个普普通的开发,乖乖的该低头低头,适当收敛。对于每个问题,应该回答的略有停顿,要表现出自己在回答过程中的思考。
看到这点,你可能觉得我是个面霸。其实并不是。
对于各种知识,太细节的东西我也记不清,或者忘了。很多问题我也是一边推理,一边思考来回答的。
面试本来就是一个交流和考察的过程,把他变成应试死记硬背答案,那它也失去了原有的效果,毕竟生产中的问题千奇百怪,我们无法预知所有的答案。
3.对于不确定的问题,表现自己的推理过程
有一些面试的问题是没有明确答案的,或者相关具体细节记不清,笔者建议如果有思路,你可以尽可能的去回答。尤其是要体现出你的思考和推理过程,这是你解决问题能力的具体体现。相比完美的答案,这个过程也很重要。如果是有经验的面试官,他不会单纯通过你知不知道这个答案就直接否定你的。并且如果有至少两种以上的思路最好,每种方案的优缺点是什么,不同情况下你会选择哪种。
4.凡是在面试过程中提到的技术名词,至少要熟悉
谨慎提及面试过程中的技术名词,每一个你提到的内容都有可能被详细考察。比如你不熟悉 Dubbo,自己项目用的是Feign,但是在提及RPC技术的时候提到了Dubbo,明明自己用的RocketMQ,非要提一嘴Kafka。那真的是自讨没趣了,很可能会问到你相关技术的对比甚至具体实现原理,问到了就剩尴尬。
5.思考清楚再做回答
对于每一个会的不会的问题,都要思考清楚再做回答,注意自己的逻辑,内容的递进性。否则,张嘴就来很容易让人觉得你思维混乱。并且要注意自己的表达能力,实在不好对着镜子多练习,或者找朋友模拟面试也可以。
6.态度坚定,不要含糊不清
对于自己答案的坚定,这是传达对自己实力的自信。还是那点,自信,自信,自信!
7.熟悉你要面试的公司和岗位,表现出强烈意向
很多人忽略了这点。比如面试官可能问你,你了解我们公司吗?如果你只是能简单对答几句,只能说明你在这些竞争者里很普通,这个公司不过是你随便投递的一个岗位而已。面试是一个双向选择的过程,你越想来,我也越想要你,大家都不愿意招一个对自己不感兴趣的人。当你的实例和其它一些人差不多的时候,做到这点会让你在面试官心中的优先级提高。
笔者面试时候有两个问题是回答的不太好的,但是最终面试却通过了。我复盘时候认为在面试中我表现出对这个岗位的热爱、对这个行业的理解、这个公司的的深入了解,是面试官让我通过面试的原因之一。
8.不漏痕迹的说面试官爱听的话
这是一个总领全局的思路,核心就是表现你的能力,表现你对于这个岗位的向往。比如在项目中你说自己做了很多不属于自己的事情,这是责任心和团队配合的能力;比如你在介绍项目的时候说自己对于不同方案的准备,这体现你思维的严密性和解决问题的能力;比如你说遇到某个问题下来研究了相关技术,这是你的学习能力;比如问起你跳槽原因的时候你说渴望加入优秀的团队和团队成长,这表现你对面试官团队的赞美和重视团队。
大家自己结合实际情况如何去回答。
9.真诚
我说了这么多跟具体技术没关系的要点,貌似功利、更注重技巧性。但是其实这一切的前提是你对于每个答案都要真诚,从自己内心发自内心的相信。
及时复盘
每次面试不仅是一个应聘的过程,其实还是一个学习和交流的过程,因为这个过程并不只是你在单方面输出,你可以从面试官身上得到反馈。无论是对于以后的学习还是后续面试的准备,及时复盘一次面试过程中所涉及的知识非常重要,这可以让你获得成长。
另外,从准备面试的高效性来看,复盘一次面试中答得不好的那些点可以让你的下次面试准备更充分。毕竟你的项目经历不会变,简历也总体不会变,下一次面试的时候,面试官通过已有的信息很可能会问你相似的问题。所以,及时复盘可以起到事半功倍的效果。
笔者每次面试都会提前打开手机的录音功能,全程录音。在面试后我会把语音内容整理成文字,
提问面试官
提问就是问你关心的问题,但是不要问会让人反感的问题。
比如可以问了解下这个岗位的职责和定位是什么?部门所做的业务是什么?在公司处于一个什么样的位置?公司这个职位的发展路径是什么?内部有没有什么培训体系?
最后,欢迎大家提问和交流。
加入讨论群是升职加薪第一步!
回复:加群
点赞是一种美德,如对您有帮助,欢迎评论和分享,感谢阅读!
TCC真没这么简单,一文讲透|分布式事务系列(三)
2023-03-29
从二叉查找树到B*树,一文搞懂搜索树的演进!|金三银四系列
2023-03-25
面试官:会SQL调优,那你知道索引合并吗?|金三银四系列
2023-03-21