怀着忐忑的⼼情,我来了B站实习,B站后端⽇常实习⾯经分享!
写在前⾯:
lz⼤三,专业课还没上完,为了⾯试⾃⼰提前看了计⽹和OS。因为是第⼀次实习,简历也不太会写,之前投了很多家公司都被秒拒了,投的字节也是。后来字节的hr给我打电话说我的简历⾥没有项⽬是会被系统⾃动拒掉的,所以瞎写了⼏个项⽬,被捞起拉去⾯试了从⼤概11⽉初开始⾯字节,第⼀次⾯三⾯后挂了,然后⼜被hr捞起来⼜⾯了⼀次,这次四⾯过了,可能这个部门真的很缺⼈吧hhh因为时间久远,好多细节记不得了
⼀⾯:
我这辈⼦第⼀次⾯试,特别紧张,设备没有调试好,⾯试官那边听不到我声⾳,所以就推迟⾯试了,耽误了⾯试官的时间。
第⼆次上来问了:
项⽬
TCP握⼿挥⼿
⾯试官看我没啥经验,项⽬做的也不怎么样,于是说“做两道题吧”
判断平衡⼆叉树。我确认了以下定义开始写,因为太紧张把java的语法都写错了hhh⾯试官跟我说不⽤紧张
请写出⼀个⾼效的在m*n矩阵中判断⽬标值是否存在的算法,矩阵具有如下特征:
每⼀⾏的数字都从左到右排序
每⼀⾏的第⼀个数字都⽐上⼀⾏最后⼀个数字⼤
⼆分,⾯试官说我逻辑写复杂了
然后第⼀次⾯试就结束了,全程基本就是在做题,没有问操作系统。可能公司⾯对没有开发经验的候选⼈就会让他做题吧。
⼆⾯:
⼆⾯⾯试官看起开不太开⼼,上来问了我点Java相关的,我答得不好,我跟他说我平时⽤Java只是刷leetcode,他说那咱们做两道题吧。。。
⼆叉树的最⼤路径和,Leetcode hard原题,还好我前⼏天刷过⼀遍,我感觉这个⾯试官不怀好意,上来就⼀道hard,说好的循序渐进呢
给定⼀个字符串m(只含有26个⼩写字符,假设m的总长度不⼤于1000),要求在字符串中到最长的⼀个连续回⽂⼦串k,返回其长度。其中连续回⽂⼦串 k 需满⾜以下条件:
(1)整个字符串是回⽂串(从前往后和从后往前看字符串是⼀样的)
(2)该字符串中的任意相邻字符在ASCII 码表中也是相邻的
(3)字符串中字母序必须是且只能是先升序后降序,且字母序只能改变⼀次
我拿到题很开⼼⼼想这不就是最长回⽂⼦串吗,这个我会!然后就要DP。⾯试官说停停,你再看看这题需要DP吗?我⼀看,噢,原来⼀遍遍历就⾏,然后就开始写,期间写了很多bug,都被⾯试官挑出来了
go和java后端开发劣势做完两道题才开始问⼋股⽂
数据库的隔离级别
解决幻读需要什么隔离级别
外存排序,归并
Top K问题,快排+剪枝。如果数据量很⼤没法快排呢?维持⼀个堆。因为那段时间我Java⽤的⽐较多,⼼⾥想的是代码,上来就说PriorityQueue,⾯试官没听懂我要⼲啥,问我学过数据结构没,我说哦哦哦⽤堆,他说你早说⽤堆不就完了
然后第⼆次⾯试就结束了,还是做题,做题,做题
三⾯
上来先让我⾃我介绍,我就把学过的课程说了说
聊到语⾔,⼜说到了Java,我说我这个就是刷题⽤的,暗⽰他别问了,他说刷题为啥不⽤c++,我说好久没⽤忘了
可他还是要问Java(╯▔⽫▔)╯
Equals和HashCode⽅法,⾃定义数据结构放在HashMap⾥需要重写哪个。我学Java的时候记得,后来忘了。。
HashMap扩容策略,我说链表转红⿊树,他说如果红⿊树变得很⼤呢,我说我真不知道别问了
他说好好好不问了,咱做题吧。
最⼤⼦序和,leetcode经典中的经典,直接背出来。他说如果我不仅想要最⼤的和,还想要区间范围呢,我就⼜改了改。他说⾏,下⼀题吧。
⼀个先升序后降序的数组,出某个值在不在这个数组内。⼆分魔改过了,期间他⼀直引领我,我说您说的我没太听懂,我按照我的思路写可以吗,他说好的好的,不打扰你了,然后我就给他边写边讲我的思路,他说也⾏
做完了题问我打不打ACM,把我乐的够呛,说我刷题才俩⽉,哈哈
问我⽤过Linux吗?答⽈学计组和OS的时候会⽤ubuntu,但命令⾏不太熟
会git吗?不会
⽤得惯苹果系统吗?我说我俩电脑⼀个win⼀个mac,会的
然后结束了愉快的⾯试,第⼆天收到了拒信
后来我就去B站先实习了,那边⽤的也是Go
过了两周,⼜被hr拉去⾯另外⼀个组,说缺⼈,我⼀开始是不想去的,但还是同意了⾯试
⼀⾯
聊天聊到了我现在的实习,于是问了我点Go相关的
在公司都写什么东西了
ConcurrentHashMap如何保持⼀致性。我说全局⼤锁,他说注意性能问题。然后我说能给点提⽰吗?他说如果这个HashMap数组特别长呢?我问那可不可以分段加锁?他说可以。后来我回去查了查⽼版本的Java真的是⽤的分段加锁,我可真机智
slice了解吗,我说暂时没⽤到过。被“嘲讽”了,他说在字节的节奏会快很多,你过来学两三天就要⼲活了。
Goroutine为啥轻量
进程线程相关的,问的⽐较深⼊。他说:你刚才提到了Goroutine对于操作系统是透明的是吧,那么操作系统如何向某个Goroutine发送时钟中断呢?如果不能发送如果有某个Goroutine⼀直执⾏怎么办?这个我不太会,他说没事,回去查查
HTTPS握⼿,我说不了解握⼿,简单地说了对称加密算法和⾮对称加密算法
ARP协议是什么,我说还没学到IP层,不知道
然后就开始做题了。感觉这个组⾯的基础知识⽐较多,⽽⾯的算法都很简单
两个排好序的链表排序并去重,我⼀边讲思路⼀遍写。tips:写题的时候⼀定要和⾯试官说明⾃⼰的思路,不然⾯试官不知道你在⼲什么
就这⼀道题
我问了他们组是做什么的
⼆⾯
这时我经历过的最难受的⼀次⾯试,⾯的东西我基本全没答出来
⽽且⾯的时候我的电脑死机了,赶紧借室友的电脑⾯的,耽误了五分钟,回去发现⾯试官还在等我
HTTPS怎么握⼿,我说不知道,他说以前不是问过你吗?我才知道他们有记录的,就说忘了去查了(后来⾯完去查了
ARP解析,我恰好下午看书看到那,就回答出来了,他说你是回去看了吗?我说我只是恰好学到这。。
Cookie了解吗。我把Cookie和session记反了,说cookie是存在服务器端的,他说你确定?我说emmmm…(后来回去⼀查这么简单的问题都没答对他居然放我过了。。
他说之前问过你的,你有没有回去查过哪些?我就答上次的那个Goroutine相关的问题,说Goroutine之间是协作式调度,如果某⼀个Goroutine⼀直在占⽤CPU⽽不阻塞那么他是不会让出去的(这是旧版本的特性),他说那这样的情况就⼀直占着?不能强⾏执⾏调度吗?我说好像是的。后来我回去看了看最新版本的特性,发现可以抢占式调度了。。
Go如何利⽤多核性能?不知道。(也是回去查,学到了GMP模型,⼀开始会分配GOMAXPROCS个Processor
设计⼀个秒杀系统?不会不会不会
做题吧
荷兰国旗问题。这个我做过,但时间久远,现场做的时候还是做了挺久的,边做边想肯定去不了⾃⼰了,在B站实习也挺好的/(ㄒo ㄒ)/~~
他说你等⼗分钟三⾯吧,我Σ(っ °Д °;)っ,居然还有三⾯
三⾯
HashMap扩容。所以我发现他们真的很爱问之前你没答上来的东西。我说不会。。他说没事你⾃⼰设计⼀个,然后我就⾃⼰设计了⼀个,他指出了不⾜,我就⼜接着改,改了好⼏个版本他说⾏
设计⼀个调度系统。我⽤的多级动态优先级队列+堆,操作系统课刚讲过的
他似乎问了不⽌两个问题,但我有些记不得了
算法:
最⼤⼦序和。我说之前问过了,换⼀个吧(当时我好呆啊,万⼀换⼀个我不会咋办(╯‵□′)╯︵┻━┻
矩阵内的最短路径,只能向下或向右⾛。这个⽐较简单,⼀个DP搞定
三⾯结束
HR⾯
HR来势汹汹,语速很快,期间跟我聊了项⽬,性格等等好多东西,劝我如果想⼯作的话尽早脱离学校的环境等等。。然后说你没有⼯程开发的经验,我们北京这边北航和北邮的学⽣来的时候都有相关开发经验的,他们上⼿会很快。我⼀听这不是要把我给拒了吗,赶紧说我在B站实习了hhh因为B站的技术栈和字节的技术栈很像(都是Go)我上⼿也会很快的blabla,她听了很开⼼,说你等通知吧!但其实我上⼿会很慢(●’◡’●)
写在最后
B站这边还有很多校招hc(以转正为⽬的的实习应该也是可以的)。字节这边也很缺⼈。⼤家如果感兴趣可以私信我哦~我可以把简历直接发给HR
总结
另外我这⾥为⼤家准备了⼀线⼤⼚⾯试资料和我原创的超硬核PDF技术⽂档,以及我为⼤家精⼼准备的多套⼤⼚⾯试题(不断更新中),希望⼤家都能到⼼仪的⼯作!
有需要的朋友
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论