【备战春招/暑实】纯干货 | 一篇文章解决备战所有问题

20/2/19 更新:
新写了一篇面经汇总,我面过的所有公司都写进去了:鹅厂、阿里、字节、百度等大厂和一些中小厂都有,冲!
https://www.nowcoder.com/discuss/367567


20/2/11 更新:
鉴于私信有挺多同学问我算法总结、基础知识总结以及我自己的面经,我这几天开始整理了一些内容
放在GitHub上,README里展示了我将会整理的所有内容的目录,非常丰富,并且提供markdown格式,欢迎大家star、下载。
https://github.com/realnumber666/TheCodeGang-Resource-Integration

内容将整合:

  • 优质知识点笔记(包括操作系统、计算机网络、数据库等)
  • 算法题解(均为python版)
    • 一份极其精简的高频分类算法题库,适合在面试前迅速过目
    • 一份自己刷Leetcode实时更新的大题库
  • 我对于校招准备全流程的踩坑经历和建议
  • 我自己面过的所有公司的真实面经

20/2/5 原文

本文将从面试前、中、后期展开介绍,包括时间节点,各轮面试内容,简历(项目经历)准备亮点、坑点,计算机基础知识复习方法进行全方面解答。

纯干货!文章较长,先放一个目录供大家浏览,可以只看自己感兴趣的内容。

如果有文章没解释清楚的其他问题非常欢迎直接在评论区问我。

目录

  • 一、个人背景
  • 二、时间节点
    1)招聘开始~结束时间
    2)不坑自己,合理选择投递时间!
  • 三、前期准备
    1)写好简历,留下好印象
    2)把握自我介绍,把握面试走向
    3)【亮点】用项目/ 实习经历展示自己
    4)做了忘、忘了做的算法题,这样复习就有救啦
    5)零散的计算机基础知识,一个提纲全搞定
    6)编程语言的复习
    7)【亮点】对你感兴趣的技术,深入钻研
    8)写几篇个人博客
  • 四、如何有效整理面经
  • 五、提前了解每轮面试重点
  • 六、心态调整
  • 七、找到优质信息来源并利用好它们

一、个人背景

  • 985,电信本科,后端,两段实习经历。
  • offer:腾讯、百度、华为、美团、流利说。

二、时间节点

1)招聘开始~结束时间

  • 暑实(春招):记忆比较模糊了,暑实申请的跨度很长,从3月初一直到5月中下旬一直都会有。
  • 秋招:19年开始得特别早,7月初~10月初是秋招主战场,但其实10月中下旬以及11月也陆续会有一些机会(一般是秋招主战场那段,面试过了但录用排序没排上的,在这段时间会陆续收到一些offer)。

2)不坑自己,合理选择投递时间

投递时间的选择主要有两种策略:

  • 一种是早早投递,优点是这时候坑位充足,而且大部分提前批不需要做笔试。缺点是提前上战场,意味着准备时间短,而且提前批一起竞争的大佬比较多。不过现在很多公司提前批凉了之后依旧可以投递正式批,但如果提前批面试表现太差记录在面评中,可能就不会再有正式批的机会了。
  • 另一种是压线投递,优点是可以把自己最想去的公司放在最后投,在这之前可以多面一些其他公司积攒经验,多一点准备时间多一点面试经验,缺点是互联网这种人多坑少的行业,尤其后端,压线投的时候很可能该岗位的坑位只有个位数,这时候面试官对于是否选择你会十分谨慎,可能会导致难度加大甚至直接失去机会

个人经验:暑实我选择了早早投递,以至于我在连图遍历都写不利索的时候面了谷歌……,基础知识只是草草过完一遍的时候就面了阿里……,现在看看当时的面经只觉得面试官真仁慈。因此秋招我走向了另一个极端,所有大厂压线投递,八月份结束暑实之后,九月初我开始投递小厂,九月末才开始掐着点投大厂,当时已经出现了一些后端岗位已满的恐怖言论,包括我也确实错失了腾讯、字节、百度提前批的投递机会以及华为的正式投递机会。看着早早投递的同学各种跑线下面试,各种做大厂笔试,而我连简历都投不进,心态是爆炸的。

所以总的来说,一定要提前做好充足的准备,在申请开始的时候就投提前批,摸清大厂提前批是否影响正式批,选择性投递。自己最想去的大厂可以留晚一点投,但一定要看好时间,至少提前截止时间一周前投递。

三、前期准备

1)写好简历,留下好印象

个人博客 or github里有有价值的东西的,写到简历醒目处。

有价值的项目经历、实习经历,简要地写明成果、技术栈。

我个人觉得简历不一定非要只写一面,自己觉得是闪光点的地方一面写不完就多写几面,不过我闪光点也不多,所以只写了一面。

简历一方面是用来简明地把自己的技术栈、输出成果展示给面试官,另一方面也可以用来引导面试官问你问题的方向,自己深有研究的技术or项目,可以做点加粗之类的标记。

2)把握自我介绍,把握面试走向

一直到秋招快结束,我才意识到自我介绍不能每次临场发挥简单说几句,而是要提前打好草稿。认真写了一份自我介绍并且每次都照着讲之后,我的面试真的顺利了很多,所以做好自我介绍真的很重要。这是面试中唯一一个你拥有比较大段时间主动引导面试方向的机会。一个好的自我介绍可以把面试向有利于你的方向(你熟悉的领域)引导。

  • 开头:简略介绍一下自己的背景。

  • 中间:详细介绍亮点。就我而言,我在实习or项目经历中遇到了比较大的困难并且通过自己的深入思考等解决了它们,那么我会在自我介绍中重点提到实习or项目,大家可以根据自己的个人情况加侧重点。

  • 最后:需要你提前对面试的公司及部门有资料收集,可以讲一下自己对部门的了解、感兴趣以及技术等方面的match。我个人由于语言和大部分公司后端都不match,考虑到这也一定是面试官会在意的点,我会对这个问题进行一点简短的说明,防止面试官对我有各种不好的误解等等,大家如果有这方面的问题也可以自己在自我介绍的最后主动提及并且说明原因,提出有效的解决方案。

3)【亮点】用项目/ 实习经历展示自己

也是到秋招快结束时我才意识到要把实习经历写书面总结,面试的时候照着讲,而不是想到哪讲到哪。

在二轮及以后的面试基本都会被问到“讲一讲你做过的最有成就感的项目”类似的问题。讲解项目经历是非常好的体现自己逻辑清晰、知识掌握扎实、能够活用相关知识解决问题以及对于项目架构等有深入思考和认知的环节,所以一定要牢牢把握住,不出差错是底线,能够在讲完后让面试官对你眼前一亮才算讲好了

  1. 项目一般会比较庞大,为了让面试官能够理解为什么要做,以及你后续的工作都是在做什么,先从项目的目的、需求入手简单介绍
  2. 通过项目中按照时间顺序出现的几个关键瓶颈,引出你解决问题的能力,展示你的水平。包括你用什么技术、如何设计系统解决它们以及最后的成果,这里面最好可以涉及一些数据,比如数据量、响应速度等等
  3. 系统架构图。一般在线下面试的时候我都会画解决每个瓶颈后系统架构会升级成什么样。

除了讲技术外,也可以通过项目经历的介绍,讲讲自己对于技术的热爱,工作的积极性,比如某些问题、某些优化是你在工作中主动观察提出,主动去解决的等等。

4)做了忘、忘了做的算法题,这样复习就有救啦

先刷剑指offer,看一道做一道可能是全凭瞬间记忆,看完一本再去做可能你根本啥都没记住。所以可以采取看三题,去牛客线上编程做三题的策略,高效地学习别人的思路并且转化为自己的东西。

再做leetcode top100。不能光刷题,光刷题会让你立刻忘光光。要有所总结,我会按基本数据结构以及排序、二分、动规等常见算法,把做过的高频题分类整理好,并且写详细的注释说明自己当下的思路(因为真的很容易忘)和写这道题时犯过哪些错(因为真的很容易在面试写code的时候一紧张就再犯)。

这份算法总结不求量多,每个分类平均收录四五个常见题型就够,关键在于写思路和易错点,方便自己回忆复习。
有这份算法总结的目的是,每次面试前抽30min把自己分类好内容看一遍,那么所有面试中的算法部分你都可以轻松面对,我碰到的70%的题或核心思路都一模一样在自己的题库里收录。

5)零散的的计算机基础知识,一个提纲全搞定

计网、操作系统、数据库等等计算机基础知识,所涉及的点非常非常广,有些点涉及的知识深度也非常大,自己准备总是会有所遗漏,网上各种总结也良莠不齐,看遍(几乎)所有帖子,我找到了全网最全知识点提纲!

https://xiaozhuanlan.com/topic/3057621498
这篇面试知识点提纲,绝对是我准备过程中所有资料里对我帮助最大,最有价值的。照着CyC大佬的这份清单一条一条根据自己的理解、网上的资料整理出答案,面试中的基础知识基本就没啥问题了。

有了这篇知识点梳理后,其实基础知识会很好背,但是这一块也是区分优秀的关键部分,怎么做到比大部分人优秀呢,那就是不要浮于表面,把零碎的知识点、技术博客背一遍就完事,要融入自己平时项目中实践遇到的相关问题,融入自己的理解,在答题时有所体现。

以及博客的质量良莠不齐,经常会出现错误,搜集资料的时候时刻保持质疑精神,可能能帮你深挖到很多有用的知识点加深理解,也可能可以帮你避免掉误导人的博客内容

6)编程语言的复习

我比较特殊,大部分后端同学的语言技术栈应该都是Java or C++,而我因为两段实习的原因,主力语言是 node 和 golang,写算法用python,都是些高级语言,也是大厂用的不多的语言。但是最后准备时间不足,想着这点时间学点java的皮毛,干背面经去面试,不如把自己会的这三个语言好好准备下,这就导致常见的java和c++的面试题我没法回答,如果有情况和我相同的同学,我的建议是

if 时间还早:
    java或者c++选个认真、深入学一下,虽然大厂基本都表示不介意语言,但毕竟水平相同的两个人,一个语言方向和部门match,一个不match,大部分人还是会选择那个match的,我也确实因为语言不match吃过挺多亏

else: 
    来不及学java和c++的同学,重点关注这几个高级语言之间的异同和优缺点,比如静态、动态,强数据类型、弱数据类型,编译型、解释型,各自的优缺点,某些特点。 
    同时一定要融入自己的实践、见解等,才能帮你的语言不match扳回一城

7)【亮点】对你感兴趣的技术,深入钻研

对 Docker 和 Redis 有比较多的使用、理解以及对他们底层实现的熟练掌握,是我觉得自己面试中的加分点。所以在平时自己实习、做项目的时候,大家可以重点关注自己比较感兴趣的几个技术,去深挖一下底层,并且整理出高质量的文章放到自己的博客里。

除了在面试中向面试官展示自己这种功利性的目的外,你真的可以从这些成熟技术的底层中学习到好多好多超级优秀的解决方案!

8)写几篇个人博客

如果有闲工夫,写几篇有价值的博客,可能会对你的面试有意想不到的帮助!

四、如何有效整理面经

面经,一种你用好了能带你飞的东西。那么如何好好用它们呢?

针对不同的公司进行不同的准备。除了前面提到的对于不同科目知识点的笔记整理外,我会在每次接到面试通知后,立刻开始整理这家公司这个岗位的面经。

我会以公司为大目录,基础知识科目为小目录(比如“腾讯/操作系统”、“腾讯/计网”、“腾讯/数据结构”……)分类整理牛客上搜到的面经,然后一科一科地看自己是否还存在知识漏洞,有的话进行相关的扩展学习。而且其实可以从中发现这家公司的提问重点等等规律,甚至可能可以预测到你即将被面试的原题。

每一场面试后记录自己被面的所有问题这是必须的,因为多面几场你就会发现,不同的面试官根据你的简历提出的问题,其实大都差不多,自己的面经才是最有价值的面经~

在每场面试开始前把收集整理的面经都看一遍,offer几率++!

五、提前了解每轮面试重点

提前摸清每轮面试考察重点并且在面试前有针对性地复习
每轮面试考察重点

  • 第一轮:简历面+基础知识+手写算法
  • 第二轮:基础知识+项目+手写算法
  • 第三轮:项目+系统设计(海量数据题)+手写算法
    ……
    (可能还有第四轮、第五轮之类的)

六、心态调整

不要飘,也不要退缩。
一定要重视、珍惜每一次面试机会,千万千万不要放弃,不要产生觉得自己没准备充分或者希望渺茫就随便去面面的心态,你的一丝丝争取都可能会给你换来一个offer!

七、找到优质信息来源并利用好它们

  1. 牛客
  • 讨论区的面经、内推、其他同学收到面试、offer的时间节点
  • 题库区的剑指offer在线编程题
  • 求职区的内推、校招日程(藏得比较深、但很好用!)
  1. qq群
  • 加一些优质的招聘交流群,让自己保持信息通畅,多交流
  • 欢迎加入GANG'S 校招 | 技术交流群,一起监督、交流:1045497369
#腾讯##百度##美团##校招##面经##春招##面试流程#
全部评论
同学写的特别好,我看offer里面没有阿里的,有没有兴趣来试试我们的春招呀?
3 回复
分享
发布于 2020-02-05 17:52
真幸运能看到你的帖子,解答了我之前的很多疑惑,真的太感谢了
2 回复
分享
发布于 2020-02-05 23:02
小红书
校招火热招聘中
官网直投
1 回复
分享
发布于 2020-02-05 19:28
想问一下楼主最后去哪里啦~
1 回复
分享
发布于 2020-02-05 20:44
谢谢!非常受用!
1 回复
分享
发布于 2020-02-05 21:25
楼主太强了!
1 回复
分享
发布于 2020-02-06 12:07
楼主很强,看了受用无穷,想请问一下楼主实习期间没有感觉做的东西价值不大,怎么往简历上写呢?
1 回复
分享
发布于 2020-02-06 14:27
不知道是不是本人呢,有个公众号发了一样的文章😳链接贴这里给作者看一下https://mp.weixin.qq.com/s/pqwwK2yaUpYyhPEshz3JBQ
1 回复
分享
发布于 2020-02-17 17:27
sp吗
点赞 回复
分享
发布于 2020-02-06 19:41
问下像第三面这种系统设计题应该如何准备呢,每次问都很难受
点赞 回复
分享
发布于 2020-08-27 16:15

相关推荐

头像
03-18 09:09
Java
点赞 评论 收藏
转发
65 539 评论
分享
牛客网
牛客企业服务