作者:陈同学
说起我字节跳动的面试经历可以说一波三折的,我在字节有经历过「十轮」的面试经历。
我和字节跳动的渊源可以追溯到去年2019的10月份,当时我的水平很菜,由于怕进入字节的招聘系统,所以我最早是选择在boss直聘上投递简历。当时投的是日常实习,以为这样就不会在面试系统上留下我的面试记录,自然就会更保险,但是后面才知道这样还是会进系统的,那个时候正好已经拿到了「 腾讯」的日常实习0ffer。
鉴于此就没有在当时面了,跟字节的HR商量,能不能将面试的时间延迟,也就是2020年的3月份。因为当时预想在腾讯会实习很久,没想到那边HR也同意我往后拖延这么久的一个面试时间。然后在腾讯那边实习到12月份,提前结束,在实习期间主要是用go写的一些组内数据系统和升级一些需求等等。
结束了实习以后开始整理复习自己学过的东西,包括梳理项目等等。一直到了2月份回家。在家中享受着由于疫情导致的史上最长寒假。在这很长一段时间里面,我都没有刷题(3月份之前),而是一直在复习巩固深入前面的基础和顶目部分,所以算法是很差的。这也为我后面字节日常实习面试的惨败埋下伏笔。
这一天,我迎来了我在字节跳动的第一场面试
当时先是问我一些在腾讯实习时侯做的东西
深挖一些业务细节以及深入的挖一些顶目中设计到的技术细节
虽然有对实习顶目有做过梳理,可能还是对一些细节思考的深度不够,回答的还是磕磕绊绊的
顶目讲完了就开始上算法题了
题目是剑指offer原题--栈
旋转数组的中位数
当时是记得有做过求旋转数组的最小值,所以知道大概是用二分法去做,但具体的一个实现逻辑,在那里卡了好久支支吾吾了半天,气氛一度陷入尴尬,面试官说你是不是有点紧张,这样把我先问你一些别的问题,于是就又问了一些常规又基础的问题
三次握手
四次挥手
进程线程
进程同一个主机通信和不同主机通信有什么区别
会经过网卡吗等等
答的还算流畅,答完这些基础以后,又回到了原来的还没写完的算法题上,依旧毫无头绪于是气氛再次尴尬,最后没有说二分,说用堆排序这些,可是代码写着写着堆排序又不会写了
总之就是整段垮掉场面,惨不忍睹最后也毫无悬念的挂掉了,最后反问环节问面试官我有哪些不足时他也给了很多中肯的建议。可能是一开始就对自己不太自信,想着按着按照自己的水平进字节这种大厂肯定是进不去的,能进个二线厂就满足这种大厂面试当是对自己的一个练习吧,所以当初挂了也没有特别的沮丧,但是对于算法这一块确实让我意识到问题的严重性
开始慌了,算法题再不刷就来不及了,但是一开始刷算法题还没摸出门道,和大家一样还是按照传统的模式去刷,每天两三道。于是时间来到了两个礼拜以后,就这样临阵磨枪的刷了两个礼拜的算法题以后已经到4月份了。
当时暑期实习也在如火如荼的展开,本来是决定不再投暑期实习的,觉得自己已经有一段大厂实习经历了,直接安心准备投提前批吧。但是决定还是想摸一摸自己的底,用面试来评估一下自己的水平到底如何。然后牛客上面各种铺天盖地的字节暑期实习招人帖子。字节又是我比较想去的一个公司,所以还是有点按耐不住自己躁动的心,虽然知道那时候自己的算法很菜,但还是抱有有一些侥幸心理。万一呢?万一他出的算法我都写出来了呢?于是乎当时再次在boss直聘上面投递了字节跳动的另外一个部门又开始约面试但是约的还是日常实习。
第二次的字节日常实习面试产品研发和工程架构部,好了在那个平凡的下午面试开始了
老规矩依旧是先自我介绍
深挖项目
深挖实习实习经历
然后问基础问题其中比较崩的一个点是把红黑树的特性说错,但总体我觉得还是聊的挺流畅的没有什么太大的问题然后就开始最担心的手撕算法环节了
当时出的一个经典的二维动态规划的题,力扣原题岛屿数量
对的当时我的水平就是这么菜,挺简单的一道题,依旧没撕出来,依旧面露难色,然后卡了很久直接和面试官说我不会,唉心态都要崩了
字节跳动的两次实习面试就这样以悲惨收尾都是一轮游,更要命的是我以为在boss直聘上面投的简历应该不会记录到系统里,因为我根本就没有在官网上注册过账户。但事实证明我太「天真」了,后面到秋招提前批投递的时侯我才得知,我的这两次没准备就去面试导致的一轮流,其面试表现被原原本本的记录在系统里了。
虽然我没有在字节的招聘官网注册过账户,但是我猜测系统里面应该是和你的名称和手机号相绑定,这样的话只要你后续秋招的时侯在官网注册账户了就会自动关联,我两次一轮游的糟糕表现也给后面提前批的投递埋下了一颗雷,同时痛定思痛在接下来的两个月我开始狂补算法题就像上篇文章所说的用自己摸索出来的独特的高效刷题法
一个月时间刷完了200道题,同时觉得算法题不会再是绊倒自己的一个阻碍了。在此期间抱着想再次摸一下自己的底的想法投递了阿里,华为,贝壳,还有一家不知名小公司的暑期实习,都通过了,也增加了不少自信,心态也不会崩了。时间来到了六月份,提前批的战线已经悄然开启,有些比较早的公司已经在这个时间点开启,在此期间我也参加了挺多其他公司的提前批面试,基本上都通过了像vivo中兴等等,但是就是没有一个大厂offer,于是6月16号字节跳动提前批开始,牛客又开始四处发布者着字节内推的帖子,在经历过前面的大大小小的面试以及拿了几个Offer以后,自己自然跃跃欲试心态甚至都有点飘。
立马在第一时间找到了一个内推人,系统开放以后在官网注册了账户,然后按照内推人给的链接投递了简历,本来以为也会挺顺利但是后面却发生了一件让我很炸的事。我在牛客上找了一个内推人投递的部门是杭州的基础架构部,信心满满的等待约面,但是没想到却等来了“一个坏消息和一个好消息"《内推人原话)
坏消息是简历没有通过,原因是因为实习的面试两次一轮游,是的,简历没有通过,我当时看到这几个字先是心头一紧,然后整个人有点懵“我这心心念念的字节跳动还没开始就结束了?我也太难了吧”然后又反过来安慰自己没事后面还有很多机会。此处不留爷自有留爷处,然后又问好消息是什么,好消息是我帮你争取了一下,虽然一开始面试挂了,但是帮你争取到了面试的机会,这个机会争取的挺费劲的要好好准备,就这样我的心情经历了一个过山车跌落谷底又恢复了,真的实名感谢我的内推人,他真的太nice了然后开始约面试了
从下午四点一直到下午六点
下面是面经
自我介绍
讲讲管道的源码
数掘库哪些引擎
对于文件系统的理解
内存管理
伙伴系统说下
epoll{讲了码实现,
ET和LT在源码层面是怎么实现的
网页输入url的全路历程,深挖细节
实现一个哈希表如何实现
实习顶目细节
内存池顶目细节
有没有了解过别的内存分配器
僵尸进程与孤儿进程
B十树索引和B树对比
信号机制讲了内核实现,些信号是不能捕获的?
还有没有看过别的源码
leetcode零钱变换变种
做完了等二面面试官过来
自我介绍
讲一讲自己觉得有挑战性的项目
从项目目的,解决的问题,怎么解决的,亮点是什么,改进了什么达到什么想过去回答
如果让你设计一个编译器,你如何设计
开始手撕
用互斥锁实现读写锁,然后问了不少延伸出去的内容
树的z字形遍历leetcode原题
·webserver项目细节
长连接短连接
tcp的keepalive和http的keepalive
场景设计题
那边说总共三到四面。刚刚hr打电话来说二面通过了约的本周日三面。字节效睾很高,许三面通过面试完大概几十分钟hr就打电话过来说通过了安排下一面紧接着后天就开始了三面和hr面
3面4面也是一起连续面。字节3面30min。
自我介绍
有没有学过计算机相关的课程
vector实现
C++对象存储模型
STL分配器
RPC调用过程中数据包流程(不会rpc,讲了数据包在网络中的传输流程)组包是在网卡组的还是在操作系统组的?
有没有什么工具可以查看在操作系统协议栈中传输的数据包
epoll内核实现
epoll中tx和rx什么区别(不会)
shared_ptr源码
实习相关-tars框架的tctc_epollserver组件源码
实习的体验和收获
如果收获了字节阿里腾讯offer怎么选?以后的感兴趣的方向?反问环节
介绍一下自己
前面几轮面试体验怎么样
自己最不能忍受的一个点
别人对自己的一个评价
对字节跳动的看法
讲一讲华为软挑比赛
比赛时侯有没有碰到什么难点
如何配合协作
在实习时侯的一些收获
如果自己是顶目组的一个Leader,组内有人进度老是拖延你会怎么办
如果收获了字节阿里腾讯offer怎么选?
能不能来提前实习
反问环节
本来以为hr面差不多就稳了,没想到竟然还加了一轮技术加面,可能是是我实习的两次一游表现的太差导致的吧,也有昕朋友说是会随机抽取10%的候选人来进行加面。总之也就是这个加面再次让我的字节跳动面试之旅再陷险境。
时间来到了两天后
字节五面开始“.也是很常规的一些环节
自我介绍
腾讯实习顶目细节
然后一道算法题
然后我就在算法题这个环节栽了跟头,本来以为都第五轮了怎么还会出算法题,还是一道leetcode没有出现过的题,越是想要的得到心态就越紧张,然后抓耳挠腮支支吾吾了半天以后,心态还是有点崩了,后面卡了很久想出来了一个解法,通过了给定测试用例,但是面试官又给了另外一些用例。却没有通过。
面完了心里觉得有点大事不妙,但是又反过来安慰自己都五轮面试了,而且HR说前面四轮面试官的评价不错,这还会把我给挂了码?于是面完的那将近一个礼拜,就一直心神不宁一直在惦记着这个,每天都回去骚扰内推人和HR洵问结果出来了吗,就一直等了一个礼拜,终于该来的还是来了,依旧是一个好消息一个坏消息,坏消息是我被pending了,也就是还在考虑中但是在这个部门已经挂了。好消息是帮我转到了另外一个部门,视频架构但是前面的面试结果就作废了,一切得从一面重新开始,昕到这个心里还是有点五味杂陈的,难道字节注定与我无缘?都已经面了五轮了还是不让我过,又要重新开,当时心态甚至都有点佛系了唉就那样吧过不过的无所谓了我投阿里去
于是后面的面试的准备自己反而有点心不在焉了,因为再走一遍流程风险系数也大大增加了
指不定我就在那一轮算法被虐没撕出来又挂了
就这样吧随他吧
我开始了我在视频架构部重新的面试流程也是一面二面连着面
字节视频架构部6.30一面
自我介绍
网络第四层和第七层的区别
tcp到ip拆包组包的过程
httpl.1和http2的区别
https加密
数字证书
两道算法题
判断是否是完全二叉树
力扣原题leercode1024视频拼接
有没有拿到其他offer
自我介绍
腾讯实习项目介绍
数据库的ACID
mysq膈离级别
b+树索引
select/poll/epoll
一致性哈希
算法题
手撕单例模式
leetcode105
反问环节
说实话一面表现的并不好因为自己的佛系心态,间隔的这几天根本就没有复习
连基本的http都答的磕磕绊绊,视频拼接那道题也只是说出了思路没有写出来
本来以为自己凉定了,没想到面完了一会还是给我二面,面试就是这么的玄学
然后又问了一下面试官后面还会有几轮呢?不会又给我加面吧?实在顶不住了
面试官说后面只有一轮技术面了,hr面在上个部门聊过了不用再面了,很开心后面不用再那么折腾了只要拿下最后一轮可以了
在7.2号
我迎来了我在字节跳动的最后一战
具体面经如下
自我介绍
介绍腾讯实习顶目
问了go的一些问题偏场景设计
场景设计题
负载均衡的权值轮询
算法题
股票买卖只能买卖一次
股票买卖能够买卖多次
反问环节
对蛮简单的,也没太为难我,就这样愉快的结束了,然后又进入了漫长的第二次等待过程
真心希望不要再出什么幺蛾子,最后自然是一个大圆满的happyending,虽然等待的过程很焦灼,每天都在骚扰内推人和hr,迫不及待的想知道结果,终于在一个礼拜后hr告知进入offer审批流程,努力和坚持终究还是没有被辜负,在几天后加了部门hr的微信,和他说了个人的身份信息,然后他询问我能不能提前去实习,然后立马收到了意向书
我的十轮字节跳动面试过程就这样划上课圆满的句号,这其中的一些小小的个人经验
一般大厂的面试每一轮面试官是会写面评的,所以如果你在实习面试或者提前批面试表现太差的话像我一样实习面试两次一轮游,是肯定会后面的秋招有影响的像我一样差点提前批简历都没筛选通过多亏了我有一个nice的内推人所以且面且珍惜自己评估要不要提前投
对于阿里来说有些部门会在秋招或者实习前线下进行开展一些面试,这些面试是不进系统的抓住这些不进系统的机会是对自身水平评估的最好机会查漏补缺
不要觉得自己有了大厂实习面试会稳,最决定面试能不能通过还是看你自己的水平
如果一开始你没有经历过面试或者对自己水平不自信千万不要上来就投递自己想去的公司可以那那些自己不想去的公司或者不知名的公司练手打怪升级摸清套路
找到一个好的内推人还是蛮重要的就像我的内,推人实在是太感谢他了
计算机网络
《网络是怎么连接的》《tcp/ip详解》卷一
算法与数据结构
《大话数据结构》,极客时间王大佬和谭大佬专栏,《剑指offer》
mysql书籍推荐
《mysql必知必会》《高性能mysql》
操作系统
《Linux内核设计与实现》《深入理解操作系统》
LinuxC/C++应用编程
Linux基础命令推荐书籍:《Linux就该这么学》
Linux应用编程推荐书籍《后台开发应用与实践》《Linux多线程服务端编程》
补充资料:gdb手册和makefile详解
大数问题
大数问题通常的套路是hash,分治,布隆,bitmap,如果推荐的话还是上面数据结构相关资料.当然如果能了解下比如hdfs文件系统,mapreduce,spark/flink流式计算最佳哈
分布式/中间件
推荐书籍:《redis设计与实现》《从0开始学架构》《docker入门到实践》《大型网站技术架构-核心原理与案例分析》
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️