又是一年秋招季,想起了学弟在去年秋招时面试了50余家,加上暑期实习面试了20余家,加起来也面试了70余场。
基本把国内有名的互联网公司都面了一遍,不敢说自己的面试经验很丰富,但也是不差的。
这次专门把大厂的面试做了个总结,希望帮到大家拿到理想offer。
互联网公司从投递拿到offer的完整流程一般有:
- 笔试、测评
- 面试
- offer沟通、三方
限于篇幅,这篇文章主要讲面试中的那些事。
面试又分为技术面和hr面试,大厂的技术面一般有三面,中小厂通常只有二面。
每轮面试的整个流程一般分三部分,第一部让你做个自我介绍,第二部分面试官考察专业能力环节,最后一部分是反问面试官环节。
第二部分和第三部分,在一面、二面、三面等都有不同的侧重点,下文会详细讲到。
自我介绍部分是非常关键的,用1-2分钟介绍下自己,突出下自己的相关亮点,有几点要注意:
- 面试官在面试前可能没看过你的简历,通过自我介绍的时候了解你的情况
- 可以用最擅长的来收尾,引导面试官的提问
- 别扯没用的经历,比如面试互联网大厂的技术岗,不要讲太多社团经历
- 人菜没关系,学校差没关系,项目low没关系,但一定要自信
推荐一份Java面试题手册给大家:
附一份自我介绍样例:
面试官您好,我叫XXX,是XXX大学2022届的学生,专业是XXX。在校期间,自己的成绩XXX,获得过XXX荣誉;做过XXX项目,项目使用了XXX,完成XXX;参加过XXX比赛,获得过XXX奖;在XXX公司实习,工作是XXX,为了完成这个工作,我做了xxx努力,最后取得xxx成果。
面试经验少的小伙伴,可以在面试前对着镜子模拟面试情景,反复刻意练习自我介绍,这样才能保证面试从容、不紧张。
一面
一面面试官通常由公司技术骨干担任,对于校招来说,一面比较看重基础。
一面通常考察:计算机基础八股文 + 技术栈八股文 + 手撕算法题 + 项目(实习)+ 开放性问题。
计算机基础八股文包括计算机网络、操作系统、数据结构与算法,这些课程在大学都会学到,某些大厂是很看重这些基础的,比如字节。
技术栈八股文指Java、C++、Python、Go等编程语言,比如Java,面试会问 Java基础、Java并发、JVM、MySQL、Redis、Spring、MyBatis、MQ等知识。
八股文知识,在我这份面试小抄pdf基本都可以找到。
手撕算法题,就是写代码,分为线上和线下,因为疫情原因,现在基本都在线上。
在线写代码通常有两种形式:
- 通过一些在线OJ平台,比如牛客网、赛码网,这些OJ平台支持视频面试,OJ平台都有自己的题库,在leetcode上基本都能找到。
- 通过腾讯会议、zoom等在线视频会议系统,面试官会开共享屏幕,在本地IDE写代码。比如写个快排、二叉树的左视图。
手撕算法题现在面试都需要,至少一道起步,像字节这类要考算法题的公司,一般2-3道。
手撕算法题考的题目在leetcode上都可以找到,大多考察easy和medium类型的题目,刷300道高频leetcode题,面试的手撕算法题基本没问题。
数据结构与算法相关面试题:
Tip:
对于自己会的题目,不要高兴过头就立马写代码。相反,留下两分钟思考,组织语言讲清楚思路,再开始写代码,会显得自己头脑清晰。
对于不会的题目、没有思路的题目,不要直接说一句“这个不会”,而是跟面试官交流,让面试官给点提示,一般面试官都会给提示的。
比较好的公司都更会更看重于你解题过程中展现出来的思维能力和思考过程。
有时候你可能并没有得出最优解,但是如果你思路清晰,能跟上考官的提示,与面试官展开一个共同探讨的过程,往往比直接得出最优解更能获得考官的芳心。
项目或者实习在通常在一面中通常问的不会很深,只是简单聊聊项目的技术栈、项目的基本功能、框架的使用等。
最后,面试官会问一句“你还有什么问题要问我的吗?”,这个问题相当于把主动权交给你了,但也要注意,这时候就算不加分,至少也不要扣分。
最好不要问的,比如薪资水平、上下班时间、交通食宿补助、加班是否有加班费。因为这些问题是问hr的,现在问不合适,反而会造成坏印象。
可以问什么?对于一面的面试官,通常是技术骨干或者主管,可以问以下一些问题:
- 部门的主营业务是什么?表达下自己对业务的好奇
- 部门使用的技术栈、编程语言是什么、使用哪些框架、中间件?表达下自己对技术的好奇
- 您觉得我的专业能力有哪些需要提升的,您有什么建议?
- 您刚才那个问题,我想问下您的思路。体现自己好学
最重要的一点,某些同学可能想知道自己此轮面试是否通过,就直接问面试官“我这轮面试通过了没有”,
切记,不能直接这么问!一般公司都有规定,面试官是不能现在跟你说的,会造成很尴尬的场面。
迫切想知道,自己面试的结果,可以问下面试官,多久会有结果、接下来的面试流程是什么。
二面
对于中小厂来说,二面就是技术终面了。
二面的面试官一般是技术leader,更看重解决问题的能力。
二面中,八股文和算法题比一面考察的少些,会更多问项目和实习的问题,还会问些开放性问题。
二面官会以项目为切入点,先问项目本身的背景和基础功能等,在一步步深入,问到项目相关扩展,直到你不会为止。
项目相关的问题可分为两方面,一是项目本身,二是项目扩展。
我汇总了常见的项目问法,可以对照看下,能答上百分之90,项目就能成为加分项。
项目本身
- 项目的背景是什么,解决一个什么样的问题?
- 项目中你的职责是什么?
- 项目的基础功能有哪些?
- 项目使用的技术栈是什么,技术架构是怎么样的?使用微服务了吗?
- 项目是怎么搭建的,机器配置是什么样的,有做分布式吗?
- 项目的具体功能细节,比如论坛项目中评论是如何存储的?怎么展示所有的评论?
- 项目中框架或者中间件的使用细节。项目里怎么用ES的,ES怎么支持搜索的?缓存和DB是如何结合使用的?
项目扩展
- 项目存在哪些问题,你准备怎么解决?
- 项目的具体功能点如何优化?如论坛项目,查询评论是在DB里扫表查询吗?想要查询更快可以做哪些优化?
- 项目中最有挑战的模块是哪个,你是怎么解决的?
- 项目中使用某种框架的原因,比如使用了本地缓存Caffeine,为什么使用这个Caffeine,不使用Guava?
- 项目要增大10倍的qps,你会怎么设计?
- 项目上线后出现线上问题怎么解决?如频繁fullGc,定时任务失败怎么办?
开放性问题就比较灵活了,不要以为开放性问题就放松了下来,也是要认真回答的。
常见的开放性问题有:
- 最近在看什么书?面试官通过这个问题考察你对前言领域、对专业领域是否关注,是新事物理解如何。
- 你了解过XXX技术吗,如了解过Service Mesh吗?还知道有关微服务的吗?看好奇心,是否会主动探索。
- 你平时是怎么学习的?看学习的方法、学习的习惯,学习有没有体系?
- 人生发展、最近五年的职业规划?
- 你实习时或者做项目时,是如何协作的?看团队协作能力。
- 聊优缺点,你最大的亮点是什么?
- 聊在校经历,在校成绩
- 最有成就感的事情,最丧的事情
二面都是主管级别的面试官了,所以二面的反问环节可以比一面更宏观些了,可以问:
- 您面试后候选人,尤其是校招生,最看重什么?
- 如果我有幸进入您的团队,您对我的期望是什么?
- 您觉得胜任这个职位的人什么品质最重要?
- 您对于候选人,尤其是校招生的职业规划有什么建议?
- 这个职位的晋升机制、发展路径是怎么样的?
- 我将要进入的团队有多少人,业务发展方向是什么?
- 公司、部门对于新人的培养是什么样的?
- 您认为我对于这个岗位的差距在哪里,哪些方面需要提升?
三面
进入二面,拿offer的概率就很大了。
三面官一般都是大leader,技术总监这类级别的。
三面通常就不会再问很多基础相关的知识了,三面更看重个人素质,毕竟能通过前面两轮面试的,技术能力肯定是过关的。‘
三面主要考察项目、开放性问题、智力问题,有些公司还会在考两道算法题,问些八股文基础。
智力问题是想考察候选人是不是聪明,这些题目其实就是看过就会秒解,不会一小时都想不出来。
常考的智力题有很多,这里简单列上几个,后面会出个智力题汇总的文章
通过烧绳子判断时间
分蛋糕问题
找出坏球
最快时间过桥问题
家庭聚会握手问题
天秤找出变质的那瓶药
猴子香蕉问题...
HR面
进入HR面试,基本问题不大了。
HR面试主要考察的是候选人的性格、上进心、价值观、工作的态度等
HR面试也要提前准备下,尤其是涉及到对方公司的企业文化、有什么代表性产品、历年的薪资水平等。
HR面试的回答没有什么固定答案,根据实际情况回答就好。
这里有个注意点,HR问到“你最大的缺点是什么?”
千万不要回答没有缺点,我的缺点就是追求完美。只要是人就有缺点,说没有缺点一定会令人反感!
可以采用避重就轻的描述,并且自己还在不断改正,比如说自己性子急、对待效率低下的人,但是我平时和别人聊天的时候会控制自己语速和讲话,慢慢培养自己耐心。