作者:拭心
前段时间组里有岗位招人,花了些时间面试,趁着周末把过程中的感悟和槽点总结成文和大家讲讲。
简历书写和自我介绍
1.今年的竞争很激烈:找工作的人数量比去年多、平均质量比去年高。裸辞的慎重,要做好和好学校、有大厂经历人竞争的准备
2.去年工作经历都是小公司的还有几个进了面试,今年基本没有,在 HR 第一关就被刷掉了
3.这种情况的,一定要走内推,让内推的人跟 HR 打个招呼:这人技术不错,让用人部门看看符不符合要求
4.用人部门筛简历也看学历经历,但更关注这几点:过去做了什么项目、项目经验和岗位对不对口、项目的复杂度怎么样、用到的技术栈如何、他在里面是什么角色
5.如果项目经历不太出彩,简历上可以补充些学习博客、GitHub,有这两点的简历我都会点开仔细查看,印象分会好很多
6.现在基本都视频面试,面试的时候一定要找个安静的环境、体态认真的回答。最好别用手机,否则会让人觉得不尊重!
7.我面过两个神人,一个在马路上边走边视频;另一个聊着聊着进了卫生间,坐在马桶上和我讲话(别问我怎么知道在卫生间的,他努力的声音太大了。。。)
8.自我介绍要自然一点,别像背课文一样好吗亲。面试官不是考你背诵,是想多了解你一点,就当普通聊天一样自然点
9.介绍的时候不要过于细节,讲重点、结果、数据,细节等问了再说
10.准备介绍语的时候问问自己,别人可以得到什么有用的信息、亮点能不能让对方快速 get 到
11.实在不知道怎么介绍,翻上去看第 4 点和第 5 点
12.出于各种原因,很多面试官在面试前没看过你的简历,在你做自我介绍时,他们也在一心二用 快速地浏览你的简历。所以你的自我介绍最好有吸引人的点,否则很容易被忽略
13.你可以这样审视自己的简历和自我介绍:
a. 整体:是否能清晰的介绍你的学历、工作经历和技能擅长点
b. 工作经历:是否有可以证明你有能力、有结果的案例,能否从中看出你的能力和思考
c. 技能擅长点:是否有岗位需要的大部分技能,是否有匹配工作年限的复杂能力,是否有区别于其他人的突出点
面试问题
1.根据公司规模、岗位级别、面试轮数和面试官风格,面试的问题各有不同,我们可以把它们简单归类为:项目经历、技能知识点和软素质
2.一般公司至少有两轮技术面试 + HR 面试,第一轮面试官由比岗位略高一级的人担任,第二轮面试官由用人部门领导担任
3.不同轮数考察侧重点不同。第一轮面试主要确认简历真实性和基础技术能力,所以主要会围绕项目经历和技能知识点;第二轮面试则要确认这个人是否适合岗位、团队,所以更偏重过往经历和软素质
项目经历
项目经历就是我们过往做过的项目。
项目经历是最能体现一个程序员能力的部分,因此面试里大部分时间都在聊这个。
有朋友可能会说:胡说,为什么我的面试大部分时候都是八股文呢?
大部分都是八股文有两种可能:要么是初级岗位、要么是你的经历没什么好问的。哦还有第三种可能,面试官不知道问什么,从网上搜的题。
在项目经历上,面试者常见的问题有这些:
1.不重要的经历占比过多(比如刚毕业的时候做的简单项目花了半页纸)
2.经历普通,没有什么亮点(比如都是不知名项目,项目周期短、复杂度低)
3.都是同质化的经历,看不出有成长和沉淀(比如都是 CRUD、if visible else gone)
出现这种情况,是因为我们没有从面试官的角度思考,不知道面试的时候对方都关注什么。
在看面试者的项目经历时,面试官主要关注这三点:
1.之前做的项目有没有难度
2.项目经验和当前岗位需要的是否匹配
3.经过这些项目,这个人的能力有哪些成长
因此,我们在日常工作和准备面试时,可以这样做:
1.工作时有意识地选择更有复杂度的,虽然可能花的时间更多,但对自己的简历和以后发展都有好处
2.主动去解决项目里的问题,解决问题是能力提升的快车道,解决的问题越多、能力会越强
3.解决典型的问题后,及时思考问题的本质是什么、如何解决同一类问题、沉淀为文章、记录到简历,这些都是你的亮点
4.经常复盘,除了公司要求的复盘,更要做自己的复盘,复盘这段时间里有没有成长
5.简历上,要凸显自己在项目面试的挑战、解决的问题,写出自己如何解决的、用到什么技术方案
6.投简历时,根据对方业务类型和岗位要求,适当的调整项目经历里的重点,突出匹配的部分
7.面试时,要强调自己在项目里的取得的成果、在其中的角色、得到什么可复制的经验
技能知识点
技能知识点就是我们掌握的编程语言、技术框架和工具。
相较于项目经历,技能知识点更关键,因为它决定了面试者是否能够胜任岗位。
在技能知识点方面,面试者常见的问题有这些:
1.不胜任岗位:基础不扎实,不熟悉常用库的原理
2.技术不对口:没有岗位需要的领域技术
3.技术过剩:能力远远超出岗位要求
第一种情况就是我们常说的“技术不行”。很多人仅仅在工作里遇到不会的才学习,工作多年也没有自己的知识体系,在面试的时候很容易被基础知识点问倒,还给自己找理由说“我是高级开发还问这么细节的,面试官只会八股文”。框架也是浅尝辄止,会用就不再深入学了,这在面试的时候也很容易被问住。
第二种情况,是岗位工作内容属于细分领域,但面试者不具备这方面的经验,比如音视频、跨端等。为了避免这种情况,我们需要打造自己的细分领域技能,最好有一个擅长的方向,越早越好。
第三种情况简单的来说就是“太贵了”。有时候一些资深点的开发面试被挂掉,并不是因为你的能力有问题,而是因为岗位的预算有限。大部分业务需求都是增删改查和界面展示,并不需要多复杂的经验。这种情况下,要么再去看看更高级的岗位,要么降低预期。
在我面试的人里,通过面试的都有这些特点:
1.技术扎实:不仅仅基础好,还有深度
2.解决过复杂的问题:项目经验里除了完成业务需求,也有做一些有挑战的事
有些人的简历上只写项目经历不写技能知识点,对此我是反对的,这样做增加了面试官了解你的成本。问项目经历的目的还是想确认你有什么能力,为什么不直接明了的写清楚呢?
软素质
这里的「软素质」指面试时考察的、技术以外的点。
程序员的日常工作里,除了写代码还需要做这些事:
1.理解业务的重点和不同需求的核心点,和其他同事协作完成
2.从技术角度,对需求提出自己的思考和建议,反馈给其他人
3.负责某个具体的业务/方向,成为这个方面所有问题的处理者
因此,面试官或者 HR 还会考察这些点,以确保面试者具备完成以上事情的能力:
1.理解能力和沟通表达能力
2.业务能力
3.稳定性
第一点是指面试者理解问题和讲清楚答案的能力。遇到过一些面试者,面试的时候过于紧张,讲话都讲不清楚,这种就让人担心“会不会是个社恐”、“工作里该不会也这样说不清楚吧”;还有的人爱抢答,问题都没听明白就开始抢答,让人怀疑是不是性格太急躁太自大;还有的人过于能讲,但讲不到重点,东扯西扯,让人对他的经历和理解能力产生了怀疑。
第二点是指在实现业务目标的过程中可以提供的能力。 业务发展是需要团队共同努力的,但有的人从来没这么想过,觉得自己上班的任务就是写代码,来什么活干什么活,和外包一样。
业务发展中可能有各种问题。定方向的领导有时候会过于乐观、跨部门协作项目可能会迟迟推进不动、产品经理有时候也会脑子进水提无用需求、质量保障的测试同学可能会大意漏掉某个细节测试。这个时候,程序员是否能够主动站出来出把力,帮助事情向好的方向发展,就很重要了。
遇到过一些面试者,在一家公司干了好几年,问起来业务发展情况语焉不详,让人感觉平时只知道写代码;还有的面试者,说起业务问题抱怨指责一大堆,“领导太傻逼”、“产品经理尽提蠢需求”,负能量满满😂。
第三点是指面试者能不能在一家公司长久干下去。 对于级别越高的人,这点要求就越高,因为他的离开对业务的发展会有直接影响。即使级别不高,频繁换工作也会让人对你有担心:会不会抗压能力很差、会不会一不涨工资就要跑路。一般来说,五年三跳就算是临界线,比这个频繁就算是真的“跳的有点多”。
针对以上这三点,我们可以这样做:
1.面试时调整心态,当作普通交流,就算不会也坦然说出,不必过于紧张
2.回答问题时有逻辑条理,可以采用类似总分总的策略
3.工作时多关注开发以外的事,多体验公司产品和竞品,在需求评审时不摸鱼、多听听为什么做、思考是否合理、提出自己的想法
4.定好自己的职业规划(三年小进步、五年大进步),在每次换工作时都认真问问自己:下一份工作能否帮助自己达到目标
总结
好了,这就是我前段时间面试的感悟和吐槽。
总的来说,今年找工作的人不少,市面上的岗位没有往年那么多。如果你最近要换工作,最好做足准备。做好后面的规划再换、做好准备再投简历、经历整理清楚再面试。
下面推荐一些复习文档:《Android 八大知识体系》:https://qr18.cn/CyxarU
+《2023版Android 最新面试题(含Java基础、Android基础、性能优化、Framework……)》:https://qr18.cn/CgxrRy