让 BAT Offer 不再难拿

1,271 阅读9分钟

原文地址

最近有幸受老师邀请,总结一篇关于应届生校招求职的文章,我将它分享出来,希望可以帮助到跟我曾经一样找工作迷茫的同学。

个人介绍

首先介绍一下个人情况,我是某双一流大学的学生,专业是软件工程,在大学期间一直学习从事 Web 前端相关的工作,大三暑期曾在深圳腾讯实习三个月,秋招非常荣幸先后收获阿里、腾讯、头条、美团等企业 offer,最终选择到阿里工作,接下来我就从一名前端工程师的角度来谈谈一名应届生应该如何去获得大公司的校招 offer。

面试流程

大公司面试无论是实习还是校招,普遍存在面试轮次多,面试周期长的特点,就拿腾讯来说,如果你想成为暑期实习生,大概需要四到五轮面试,3-4 轮技术面+一轮 HR 面试,每次面试时间大概在 0.5-1 小时之间,推荐对自己能力没有把握或者缺少工作经验的同学尽可能在大三下学期找找实习,去自己想去的公司实习,因为大三的暑期实习既可以丰富你的履历,并且实习期间好好表现都是可以相对容易地通过转正,拿到校招 offer。

在申请实习或者校招 offer 的时候,尽可能多找人帮忙内推(ps: 实在找不到人的话可以找我),因为大公司部门比较多,你如果直接从官网上网申的话,简历不容易被人查看,找认识的师兄师姐帮忙内推的优势在于:

  1. 能够更有效增加你的简历的曝光,让部门主管能够直接查阅到你的简历
  2. 加快面试进度,联系师兄师姐提前知道面试结果

内推或者网申(可能有笔试)完之后,就等待面试官打电话给你,一般他们会跟你通过电话或者短信确认现在是否方便或者约个时间进行面试,面试的方式也分为电话面试,视频面试,现场面试等等。

无论是哪种类型的面试,内容大致上都是一致的(除了现场面试可能要求你手写代码外),我将专业技能面试分为以下几个部分:

  1. 自我介绍
  2. 计算机基础知识
  3. 前端知识
  4. 面试者提问环节

自我介绍

首先是自我介绍,面试前最好能够准备一段不少于 30 秒的自我介绍并对着镜子反复练习,可以介绍介绍你的名字,学校,专业,对你投递岗位的理解等等,在面试过程中尽可能流利地叙述,而不是介绍时磕磕碰碰,给面试官留下不好的印象。

计算机基础知识

第二部分是计算机基础知识,对于应届生来说,面试官无非喜欢考察计算机网络,操作系统,数据结构与算法这三大类。当然根据你应聘的岗位有所不同,如果你是应聘一名前端工程师,考察网络的知识相对较多,对于操作系统、数据结构和算法的考察会相对较少,如果你是应聘一个后端工程师的话,那么涉及到操作系统的知识肯定会相对更多。同理算法工程师就会涉及到更多数据结构和算法的知识。

面试网络知识的话,可以多准备 HTTP/TCP 相关的知识,比如我就常被问到:

  1. HTTP 状态码,从浏览器打开一个网址背后都经历了什么
  2. TCP 与 UDP 的区别,为什么 TCP 需要三次握手,四次挥手等等

前端知识

第三大块也就是你应聘的岗位相关的知识内容了,比如拿前端来说,一般前端知识可以分为三大块:语言基础,框架以及实践。

语言基础一般会考察你对 JS 语言本身的理解,比如说:闭包,继承,作用域,this 用法,ES6 语法等等,也会问你关于 HTML/CSS 的基础知识。

框架的话不仅仅是局限于考察对框架的用法,一般是结合你的简历内容来进行提问,比如你在简历上写你熟悉 React,面试官可能就会问你 virtual-dom 是怎么实现的,Redux 设计思想等等,如果你简历上写熟悉 Vue,那可能就会问你数据双向绑定是怎么实现的等等。

还有就是你的实践部分,这部分面试官会结合你的简历提到的一些经历,比如你有什么实习经历阿,或者在学校做过什么项目来进行提问。可能会像这样问你:

  1. 你在这个项目中(或者实习经历)遇到最大的挑战(难题)是什么,你怎么解决的
  2. 你在项目开发的过程中运用了什么技术,为什么会使用到这些技术等等

面试者提问环节

一般面试结束后面试官都会问你,还有什么问题想问我,这时候你可以就你感兴趣的内容进行提问,比如我一般就会问下面类型的问题:

  1. 如果我有幸被录用了,我会从事什么样的工作内容
  2. 团队组织结构是怎么样的,主要负责什么样的产品
  3. 工作平时加班多吗,一般几点下班
  4. 就刚才的面试来看,你觉得我有什么不足之处

这就是标准的面试过程,面试结束后如果你通过面试的话,一般一周内会给答复或者进行下一轮面试。

最后需要强调的是,公司面试周期一般都会比较长,可能你从二月底开始面试,到了四月份你才会收到 offer,所以你应该多投投几家公司,不要在一棵树上吊死,不要抱着非 xxx 公司不去的心态,因为面试这种东西其实是很玄学的,七分实力,三分运气,可能你觉得良好,但是面试官却把你 pass 掉了,所以放平常心,多试试几家公司,说不定会有意外的收获。

面试准备

前面介绍了面试流程中的一些注意事项,下面就来说说如何去做面试前的准备。我将面试准备分为三个部分:

  1. 准备简历
  2. 专业知识梳理
  3. 面试结束后

准备简历

我看很多人写的简历,发现他们写的都很啰嗦,让人一眼看过去抓不住重点,我建议最好把简历精简一下,控制在 1-2 页,写的经历和项目跟你应聘的岗位有强相关,无关的经历就不要写了,写了反而显得啰嗦。像我百用不烂的的模板就像下图这样:

另外还有三点需要注意:

  1. 描述经历或者项目的时候尽可能描述跟自己负责的模块,无关的内容就不要写了,不然被问到了可能会问惨你
  2. 写完简历的时候最好以 pdf 的格式进行存储,这样保证面试官打开的时候排版不会乱掉
  3. 简历名称最好写成像 姓名-应聘岗位-xx大学-xx专业-手机号,这样方便 HR 保留存储你的简历,不要直接取名为简历就直接发给 HR

简历是你获得面试的第一步,简历的好坏需要自己用心准备,希望同学们提前认真地准备好一份觉得让自己满意的简历,以免到时候太仓促。

专业知识梳理

这部分内容肯定是需要通过自己的不断积累的,不可能说你看了两天 JS 语法就跑来面试,学了两天 Java 就来面试后端工程师。

我们经常会通过网上文章学习内容,我的建议:善于使用浏览器的书签帮助你自己整体知识。

  1. 比如说你今天看到一篇文章,但是没时间看完消化,你可以把它放到一个书签(do it later)以免之后找不到,等自己有时间了再回过头来继续看
  2. 将自己看过的,觉得不错的文章进行分类整理放在书签中,方便以后面试前可以复习

网路上学习技术的途径也很多:

  1. 如果想看别人写的文章,可以多逛逛掘金、知乎专栏等等
  2. 如果像通过看视频来学习的话,可以通过慕课网平台,上面有不少高质量视频可以学习
  3. 遇到问题善用搜索引擎,基本上你遇到的问题都可以通过谷歌/Stackoverflow 上得到答案

每个岗位都有自己不同的知识体系,在其它领域我也不是专业的,就不班门弄斧了,我就拿前端工程师角度来看,作为一名应届前端工程师,至少要对整体知识体系有自己的理解(如果不是从事前端开发的可以跳过):

每个岗位都有对应的知识体系,我这里提供一个思路,不管是你在准备面试还是平时技术积累,通过对自己领域的知识梳理,知道自己不足的地方,对自己不熟悉的知识进行查缺补漏。(如果你对整个前端知识体系也不是特别了解,也可以照着我整体的知识体系来进行准备)

面试结束后

面试其实很多情况下都是很类似的,有的时候一面和二面的面试官都会问到相同的问题,所以在面试结束可以总结总结刚才面试中遇到的问题,为什么答不上来,如果是之前没准备的知识,可以去复习复习,这样下次再碰到类似的题目,你就可以对答如流了。