好久不见,甚是想念。这段时间没有更新什么文章,其实是因为我跳了一波槽,出去面了一圈后,也顺利拿了不少架构岗位的offer。
正好马上要金九银十了,相信有不少小伙伴们估计也有跳槽涨薪的想法,那么就从我最近的经历出发,说说我的一些建议。
简历
简历作为敲门砖,能够给用人单位一个最初的直观印象。这两年互联网的就业环境远比不上前几年,很可能一个岗位一天就会收到几十甚至上百份简历,而HR阅读一份简历可能只花个不到一分钟的时间,能否收到面试邀请就在这一分钟内决定,所以请大家务必用心雕琢简历。
一份完整的简历,大概可以分为基本信息、教育背景、专业技能,工作经历、项目经验几个部分。基本信息和教育背景部分没什么好说的,保证信息属实就可以,重点在后面三个部分。
专业技能
专业技能方面,主要是列出开发技能清单,也是对面试岗位的技能要求的一个响应,有时候可能还需要根据岗位的招聘要求差异做一下动态的修改。
首先,不建议堆砌太多没有竞争力的技术,否则不仅看上去没有重点,而且会掩盖核心的技能不利于让面试官发现。举个例子,如果你要表现自己Java功底扎实,那么就可以突出擅长多线程、I/O、GC、JVM等方面,而像类似于集合的使用或者GUI这种过于细节或者不那么重要的内容就可以不写。
其次,对技术的掌握程度描述一定要慎重,例如“了解”、“掌握”、“熟练掌握”、“精通”所代表的掌握程度就是不一样的,如果你某项技术写了“精通”,碰巧又是面试官擅长的领域,那么后续就可能要面对连环炮的轰炸了,表现的不好就很容易被pass掉。
最后,对于技术名词的拼写一定要规范大小写,例如MySQL、Spring Boot、RocketMQ等,大小写或空格不规范的情况会让面试官觉得你可能对于技术并不严谨。所以就当是为了给面试官留一个好印象,在写完简历后也要多检查几遍基本的拼写。
工作经历
工作经历方面,建议以时间倒叙的方式来进行介绍,主要介绍一下自己在一段时间内在什么公司、担任什么职务、主要做了什么工作。这一部分可以描述一下你承担了什么责任,如果有什么突出业绩能写上更好。
项目经历
从我之前面试别人时收到的简历来看,一般都会描述3到5段项目经历。这块内容主要是通过项目描述、涉及技术、主要职责将自己在项目中发挥的作用更好的展示给面试官。
项目描述不建议太长,一般在两行内将项目的内容、模块简单介绍清楚就可以,涉及的技术就是说一下项目中用到了什么技术,前面这两项一般不会有什么问题,关键看一下主要职责部分。
最主要的还是,不要纯粹的堆技术栈,我看过很多简历在这一部分说自己用什么技术实现了什么功能,例如:
-
使用MyBatis-Plus实现数据持久化操作
-
使用Sentinel实现服务的限流与降级
这些技术功能罗列就属于无意义的描述,涉及的技术栈中只要写上这些技术就可以了,不需要重复介绍它们的功能。针对这一块的优化,建议大家挖掘一下项目中的亮点,例如自己用什么技术解决了什么技术难题、带来了什么突破,例如:
-
使用xx解决了xx问题,使接口查询耗时减少了50%
-
项目中引入xx优化了xx模块,使系统线上QPS达到1W
除此之外,个人在项目中的收获或是项目成果如果比较亮眼的话也可以写上,同样不建议太长,简单描述即可。
聊点题外话,比较戏剧性的是,我在面试一家企业的时候,首轮技术面的面试官居然是我认识的哥们。
事后闲聊的时候,这个哥们告诉我,他们会根据简历先进行第一轮的筛选,把候选人分为正式合同员工或是派遣制合同员工,我们都知道派遣制的弊端,而他们在面试之前就做好了这个判断,所以说简历的重要性还是毋庸置疑的。
八股文
技术面的很重要一个环节就是八股文的博弈,一张图足以形容技术面的现状。
从最近的势头上来看,一上来就直接问八股文的面试官确实已经不多了,他们更多是从你简历的项目中用到了哪些技术作为切入点,有迹可循地查看你对这些知识的掌握程度。
比如你的项目中写了做过MySQL的调优,那么就很可能接下来就要被问到explain执行计划、存储引擎、索引、B+树的相关知识点,所以凡是大家写在简历上的东西,建议都做一下充分的准备。
所以,虽然对背八股文这个事你和面试官的心里都有数,但八股文该背还是得背。当然了,背八股文也是讲艺术的,个人非常不建议死记硬背,面试官希望听到的更多的是能够结合实际中的问题的回答。
如果你能够在解释完相关原理后,顺带说明一下自己在实践中应用它解决了什么具体问题,不仅能够证明自己的基础扎实,也能体现自己解决实际问题的能力,这样就非常的nice~
开放式问题
设计思路
如果你在简历中写了设计过xx系统、或封装过xx组件,那么面试官就很有可能会问你设计这个系统、组件的思路是什么。通常这是一个考察个人全面思考能力的问题,是从考虑问题、到解决问题的方法、再到方案的落地的一个系统的流程。
如果你设计过某个业务系统,那么就可以从下面展开:
-
如何确定业务需求,根据业务功能拆解,进行子系统的划分
-
如何做好数据模型设计、业务架构模型设计,通常可以从较小规模架构开始设计,后续根据业务量级进行扩展
-
如何做好技术选型,选择适合业务的技术栈
-
如何做好非功能方面的设计,例如安全设计、容灾能力等等
-
……
同理,封装某个组件的思路也可以详细的讲一讲,假如你在简历中写了自己封装过一个缓存组件,那么如果让你阐述设计思路,就应该尽量全面的描述,例如:
-
如何保证的缓存和数据库的一致性
-
何时只使用远程缓存,何时使用本地加远程的二级缓存
-
本地缓存是非常宝贵的资源,如何设计本地缓存的过期策略
-
集群环境如何保证本地缓存的一致性及正确性
-
如何应对缓存穿透、击穿、雪崩
-
……
综合能力
因为现在的面试不只是技术面,有可能还会有hr面、总经理面等环节,有时候会考验到个人的综合能力。
例如面试官可能会给你一个完全不熟悉的领域情景,让你考虑如何做好一个系统从设计到落地的工作,由于并不是你实际做过的项目,更考验的是你过往的沉淀和随机应变能力。
在这种场景下,你要做的就是发现并界定问题,然后给出解决问题的方法。总的来说这个环节面试官不会太为难你,即使没有说出实际的落地方案,如果能够条理清晰的说明白自己的设计思路也是可以的。这方面的能力更多的还是依靠个人平日里能力的沉淀,这就要求我们在平常的日常工作里,在业务和技术架构方面都多多锻炼一下自己,而不是终日做一个CRUD Boy。