程序员面试那些事儿

2,375 阅读7分钟

作为一个参加过十几家大厂面试,且几乎零失败的选手,今天想跟大家聊一聊「程序员面试的那些事儿」。

面试流程

首先说一下「面试流程」,大家心里有个底。一般大厂的面试流程主要包括:

投简历 -> HR和部门经理筛选 -> 3-4轮技术面试 -> HR面试 -> 聊薪资 -> 发offer。

1. 投简历

投简历分为自己投和内推。自己投简历,可以去脉脉、boss直聘等网站上找相关企业的招聘岗位,然后直接线上投递简历。

如果公司里有认识的人,可以找他们内推。如果不认识,也可以去脉脉上找这些公司的人内推。内推可以赚内推费,一般大家都很愿意内推。

内推的好处对应届生还是蛮大的,有些公司可以「直接免笔试」,进入面试环节。

对于社招的话,好处应该是过HR的简历关比较容易(有些内推可以直接给部门Leader),且后续有人可以帮忙跟踪面试进度。

所以如果能内推,最好还是走内推的途径。

社招也可以找猎头,一般猎头手里会有比较多的岗位,而且有些猎头会帮忙去argue薪资,不过这个很看猎头的水平。

2. 简历筛选

一般公司的简历都会经过HR的初筛,主要看学历、背景是否符合岗位要求。

然后HR会把简历给到用人部门的经理,进行二次筛选。如果部门经理觉得ok,会交由HR来跟进面试流程。

3. 技术面

大厂技术岗位通常都有3-4轮的技术面。职级不同,可能数量会有所不同。

第1-2面:基础技术面

  • 面试官通常是跟你同级别的同事,有些公司可能只有1轮。
  • 主要考察「计算机基础」、「八股文」、「项目经历」等。
  • 通常会有写「算法题」的环节。

第3面:深度技术面

  • 面试官通常是你的上级,可能是你的「直属上级」。
  • 主要会围绕你之前做过的项目进行「架构层面」的考察,比如「如何做技术选型」、方案的优缺点比较等。
  • 可能会出算法题,但是算法题一般不难,更多的是看你对项目的理解。

第4面:技术架构面

  • 面试官通常是你的+2,也就是上级的上级,很可能是部门的「技术负责人」。
  • 这一轮面试很少会涉及具体的技术细节,通常会就一些「大的方向」展开讨论。
  • 比如对xx技术的看法、印象最深刻的项目、未来职业发展规划等。

4. HR面

HR面就比较轻松啦,主要会问一些比较主观问题,比如个人的优缺点、如果意见和上司不一样怎么处理、为什么换工作等。

关于「为什么换工作」这个话题,通常不要说当前公司如何不好、领导如何差劲等理由,最好是从个人发展的角度出发,找一个理由。

比如觉得公司晋升无望、发展天花板比较低、做的事情和自己的个人发展方向不匹配等等。

5. 聊薪资

到这个环节,恭喜你,offer基本就稳啦。

通常是负责招聘的HR来谈薪资,大概会问你现在的总包多少,在这个基础上希望涨幅多少等。

这个时候提的涨幅,尽量比你的「心理预期要高一些」。

可以提前准备一下当前的「总包」数据,包括月薪、奖金、股票、期权等等。股票按照当时的价格进行计算。

面试准备技巧

1. 准备简历

准备简历是找工作的第一步,也是一个很好的梳理自己做过的项目,整理知识体系框架的好机会。

简历主要包括:

  • 个人信息
  • 教育经历
  • 专业技能
  • 工作经历
  • 项目经历
  • 荣誉奖项(可选)
  • 研究成果(可选)
  • 专业认证(可选)

1)个人信息

个人信息需要包括名字、联系电话、邮箱、求职地址、求职岗位等信息。

PS:联系电话一定要填写正确,HR会通过这个电话和你进行后续的沟通。

2)教育经历

这个没什么好说的,就一句话:「如实填写」。

因为一般大公司在入职之前都会进行背调,简历造假是很难通过背调环节的。

3)专业技能

这个地方列出来的专业技能,一定是你「非常熟悉」且「有把握能讲好的」。

因为面试官大概率会拿着你简历的这部分,挑选他感兴趣的内容,向你提问。

所以,你可以有意的,在这里列出「擅长的方向」,「诱导」面试官往你擅长的领域去提问。

这个部分在你的面试过程中是需要「动态调整的」。

比如在面试的过程中,发现自己对某知识点掌握并不深入,总是容易被面试官问住。那么就可以将这个技能点先从这一part中移除,避免后续再被问到回答不上来。

4)工作经历

工作经历部分也是「如实填写」即可。

5)项目经历

项目经理部分是整个简历的最「重点部分」,也是需要花费最多时间的部分。后面我再单独出一篇文章讲讲项目经历应该怎么写。

2. 准备面试

一般客户端面试需要准备以下几个方面的内容:

  • 刷题算法
  • 项目经历
  • 基础知识

1)刷题算法

可以参考我前面的一篇文章Grind75题目总览来准备,先把「Grind75」的题都刷一遍,找到自己薄弱环节在哪,再针对性去补充相应的知识点。

如果是第一次准备算法的同学,建议先去看看相关「书籍」,对基本的数据结构和算法有了解了,再开始刷Leetcode。

不建议基础不好的同学直接去啃「算法导论」这种书籍,因为这本书难度还是比较高的,而且需要花费很多的时间。可以从「剑指offer」,「程序员面试宝典」等开始看起。

2)项目经历

简历上写的所有项目,一定要能解释清楚,所有用到的技术都要会。

有些同学可能觉得自己都会了,但其实一问起来就漏洞百出。可以找相同方向的同学、朋友等,帮忙进行「模拟面试」,来测试自己是否对简历中所写的项目完全掌握。比如Android开发的同学,就可以找一个同是Android开发的朋友,来帮忙进行模拟面试。

另外,需要重点准备几个「亮点项目」,比如最难的项目、最有成就感的项目等等。这些项目面试的过程中肯定会被问到,所以最好提前准备。

需要重点准备的项目:

  • 时间近的项目:越近期的项目越容易被问到
  • 和面试岗位交集多的项目
  • 独立负责的项目

3)基础知识

关于基础知识八股文的准备方法,我认为最好的方法就是「列大纲」,进行系统性复习。后续文章我会分享我在找Android高级工程师岗位时准备的复习大纲。

总结

今天的文章就先写到这里啦~

后续我会出几篇相关的文章,包括「项目经历如何写出彩」,「面试如何超常发挥」等等,也会分享我当时准备面试收集的「面试素材」给大家~

感兴趣的同学可以先点个关注,我们下期再见~!