背景
今年校招渐渐走向了***,实验室的学妹学弟纷纷开始躁动了起来。于是我也心血来潮写一篇实习生面试经验,希望能帮到后辈。
本人是2021届北邮信通研究院的。自己专业是搞通信网络的,就那种要有多硬件就多硬件那种。要说我为什么入了字节的后端研发。那还是我的学长打比赛给我硬从硬件拽过来,哎,那一刻我就在程序这条路上越走越远。咳咳,跑题了。。。相信大家都有听大家说互联网公司火,工资高,干代码有成就感。没错,我也是这么才选择了做程序员。但这万丈高楼平地起,自己一个门外汉进来还是需要高人指路了。所以拉我入坑的学长就顺利成章成为了我的指(bao)导(fu)导(dui)师(xiang)。想想程序这东西还是得多问,闭门造车是真不可取啊。就这样自己用学校的比赛和项目练手搓项目,也和同系学长学姐交流了不少。一来二去,到了研一放暑假的时候,我自信的拿着简历去了网易。当然跪了orz,还是跪的彻底那种。所以说不能不管基础!!不能不管基础!!不能不管基础!! 多说都是泪啊(TAT)
后来,自己也是恶补了计算机的知识。到了11月,自己也算是勉强算看了《深入理解计算机系统》、《计算机网络》、《C++ primer plus》。12月初,终于我踏进了字节的大门 (≧▽≦)/ x
前期准备
字节跳动是非常重视基础的,而且大厂们都是非常重视基础,所以说大家千万不要“裸考”!本人经历的网易、腾讯、百家云、字节这四次面试来说。面试大致就三部分:项目、理论、算法题。
项目
在这里我需要再次强调,不要不管基础!!。对于喜欢项目的同学,不要展示太多项目,最好能准备好一个项目,从主干逻辑、细节优化、项目应用价值几个重点方向入手。对于项目经历少的同学,不要气馁。比较快速赶超的方法就是,找个开源项目,主干逻辑、细节优化、项目应用价值几个重点方向入手。如果时间紧张,找个小网页、小框架的demo也是个不错的选择。
理论
需要学习的范围,一般是需要在招聘信息里会写,按照要求项目的顺序就是面试考察的优先级。对于一些同学来说,如果更擅长靠后的要求项目,说明你比较靠近公司项目细节部分,面试官也是非常欢迎的~对于大部分同学来说,字节跳动主要考察是
- 自己熟悉的语言语法
- 并发编程
- 网络基础
- 数据库操作
对于理论部分,还是希望大家准备越深越好。情况允许的情况下,最好也能来一波理论与实际结合。讲一讲,实际代码逻辑是如何实现理论。理论的重点可以自行拿捏,大家不要误解认为面试像高考,面试官在出题,你答不出来就跪。很多时候,面试只是要你尽可能展示出你所掌握的知识,对于不理解、不会的部分要快速给出自己实际的掌握程度,必要的时候可以向面试官提出自己擅长的方向,忌讳高考考场的“蒙一个”。在这样的环境下,自己准备的越深,面试的其他部分容错余地空间就越多。总之,千万不要面试说自己4个都懂点,然后个个被问倒。
算法题
在算法题这里,我要提醒同学们,字节跳动的代码/算法题的比重是非常高的。这些题目不但会考察本身的正确性,还会考虑资源占用、代码习惯、思考能力、甚至是和面试官的交流能力。同学们在求职之前一定要在牛客、leetcode刷刷题,学习高效算法、熟悉常用库,规范代码命名,不要来“裸考”算法题。字节跳动的面试流程比较短,但相对的,对于求职者强度非常大,有些不幸的同学(比如我),就被一天安排了“五面六将”,考完回宿舍人都糊了。
此外,第一次求职的小白要特别注意,面试算法题是用纸和笔的、是要自己写完讲思路的、是要自己演练推算结果的。写的时候想不起来库名,面试官想救都救不了(QAQ)。
面试流程
于前一日通知,周日到公司面试
一面 10:00 初审(H2)
在北京海淀的盈都大厦,初面很简单。主要进行了
1. 介绍自己2. 项目介绍
我开头问了一下面试官希望考察的方向,得到明确的回复是考察逻辑,所以我就掏出了讲稿,就简单讲了立项的理由与逻辑框架。
顺便一提:介绍项目这部分很抽象,同学们可以弄一个框架图/或者解说稿。不贴在简历上,而是背过去,用的时候拿出了讲。
3.理论概念
- 网络五层体系结构
- TCP通信过程,3次握手,4次挥手
- Http 与TCP 的不同
- mysql 事件
- 进程、线程、协程
- 进程、线程共享内存
- 并发锁
网络部分对于大部分公司的面试都会问,自己相对准备多一些,面试过程也比较顺。数据库Mysql自己也就是增删改查的水平,面试时我就直接和面试官明说了。后面面试官开始问并发相关内容,在这个环节因为我并不了解go的协程,所以多讲了讲C++里的进程、线程,并且也结合项目经历,讲了自己踩的一些坑。总的来说,当时理论部分准备还是有些欠缺的。
4. 算法题 热身
比较简单 就是自己写个链表,并不断提出需求让你加功能,主要考察你的思维逻辑。
二面 算法
一面结束后,我就被HR领到下个房间了,心理准备还没好就到了重头戏——面试算法题。
1. 第一题 判断是否回文链表
这个是个双指针的解法。需要先将前半段链条反转,我在动笔之前先与面试官先对过了思路。得到认可后顺利拿下。
2. 第二题 求逆数对
这题我当时只想出来用for循环的O(n2)的方法。这个显然不对,被面试官拦下了。但是后来查了一下应该使用的是归并排序
3.第三题 动态规划
这道题有点像自己追加的吧,因为第二跪了,我跟面试官交流后,给了我一道我擅长的动态规划。本质上就是01背包的变种,这模版题我就谢谢考官了(其实当时我以为这是道回家题QAQ)
三面- 14:00 项目
面试官一上来就表明要面的就是项目经历。这次我又掏出了我的讲稿,但是稿子被没收了。。。但是项目自己做的就不怕被问。这一面扣项目细节扣的很细,从总体流程到你的实现方法再到底层逻辑,项目场景、应用价值、表现情况、bug处理,多个纬度的问题会对你的项目来个“饱和轰炸”。但是,学弟学妹们不要怕,这个环节主要考察我们分析、处理问题的能力,面试官会去关注你的关注点、思考面、处理问题的能力等等方面。像应用场景专业分析或是非常底层代码逻辑,有些问题我们确实是答不上来的,但答不上来也应该给出自己的意见与态度。
整个过程下来基本就是在打辩论,双方正反角色频繁变换,反复推敲一个项目的价值点。算是整个面试里最最刺激的环节。整个房间打得非常火热,就是我没想到这个环节面试官是我未来直属leader Σ(っ °Д °;)っ
四面 -16:00 交叉面试
去了北京海淀区中航矮楼,进行了交叉面试。交叉面试气氛相对缓和一些。但是还是要做题。
1.第一题 最大化股票交易
2.第二题 最大化股票交易(有限交易)
后来发现这是个leetcode原题。第一题怀疑人生好久,后来面试官告诉我就是所有的正差求和。第二题改版是自己的拿手的动态规划。动笔前提前和面试官对过思路后顺利拿下。
3.介绍项目
四面还是要讲项目,我再次拿出了稿子。面试官直接拿过去看了5min问了几个关键点就平稳度过了。
五面 - HR会谈(H2)
其实到这一环节就很平稳了。问我很多对公司的看法之类的。
要不要做一名字节跳动程序员(H1)
相信各位点进来看到这里的客官们,那肯定都是有心人。如果要问字节的条件待遇。我可以说,工资大家都做过功课:那要不是业绩最高的,也是业界顶尖的了。待遇的话~管饭+管零食+下班公司打车管优享专车!如果要问自己要不要做一名程序员,程序员是累了些。但要是说程序员24小时盯电脑敲码,那可真是误会了。字节是弹性工作制,各位不必将自己逼的太紧张啦~
如果还想了解更多消息的同学还可以点开下面的链接:
总结(H1)
- 理论要深,多结合实际;算法多刷,不打无准备之仗;
- 灵活面对“临时差错”,从容面对高压提问
- 不要气馁,只要没让回家,就要精神饱满面对下一场
全部评论
(17) 回帖