首页 > 字节跳动客户端-视频架构三面面经,HR已口头offer
头像
guirunxiang
编辑于 2020-07-14 22:22
+ 关注

字节跳动客户端-视频架构三面面经,HR已口头offer

我投递的岗位是上海的字节跳动客户端-视频架构,今天下午算是走完了字节提前批的所有流程,整个过程算是有惊无险吧,三面刚结束hr就发消息来说面试通过了,不得不承认字节的面试效率,就像火箭一样快。
下面是我面试过程的一些记录。第一次写面经,肯定有叙述不清或者表达不当的地方,欢迎各位小伙伴在评论区发表自己的看法。

1.背景

我是一所985高校的硕士,本科是211,技术栈是存粹的Java,别的语言基本没用到。当然,字节是不在乎面试者的语言的,无论什么语言,只要用的好,没有优劣之分。在这里不得不承认我也许在学历上有所占优,但我要向广大牛油们分享的是,学校对于互联网企业来说真的只是敲门砖,特别是像字节这种特别看重代码能力的公司,好的学校或许能帮助你更快的通过简历筛选,但其余的优势就不是很大了,如果算法不会写,再牛逼的学校也不能保证一定能拿到offer,同样的,学校不太好的牛油们也完全可以通过技术弥补劣势,所以希望大家把心思放在提升技术上,例如备战字节,主要是要把精力放在牛客或者leetcode刷题上,千万不要以学校好为资本而骄傲自满,或者以学校差为借口而妄自菲薄,只有脚踏实地提升技术才是王道。

2.一面和二面(7月9号)

我是6月24号投递的简历,过了两天就有hr联系说要约个面试时间,因为6月底的时候学校还有一门考试,所以就约了7月9号进行的一面,一面结束后大概五分钟马上就二面了,下面是面试的具体情况。

首先是一面,一面的面试官的面试风格跟我之前在牛客网上看到的还是很不一样的,他或许看我本硕都是计算机专业的,就问了我一些比较主观的问题,比如问我为什么对计算机专业感兴趣,在本科阶段参加过哪些比赛,本科时期让你印象最深的经历是什么等等,这些问题太主观了,我就不展开讲了,但是在回答这些问题的时候,我多嘴说了一句“大一的时候第一次接触C/C++语言的时候让我印象挺深刻的”,然后这回答就太坑了,我当时确实是实话实说,但我也很久没用C++了,C/C++相关的都忘了,但面试官就开始揪着C/C++问了好几个问题,比如C语言里是否有 long long 类型,long类型占几个字节之类的问题,我赶紧向面试官解释说C/C++这块我好久没用了,能不能问些Java相关的,面试官这才放过我。面试官接着问我平时是怎么学习的,有没有写博客,然后我就回答说自己会经常在掘金或者极客时间找点干货,偶尔写写博客。然后面试官就让我讲讲博客里写了啥,我就巴拉巴拉说了一堆博客里东西,这部分还是挺主观的,感觉一面完全就是我说了什么面试官就问什么,所以在这里我要奉劝大家,千万千万管住自己的嘴,不要仅仅是听说过什么或者简单使用过什么就全说出来,在说出一项技术之前,一定要保证自己对这个技术特别熟悉,千万不要给自己挖坑。
然后面试官看我简历写着熟悉Java基础语法,于是就问我,重写Java类的toString()方法里返回this,会有什么问题嘛?大概就是下面这种形式:
@Override String toString() {
  return this + "";
}
我当时见到这个挺懵逼的,感觉这样写法不行,但没回答出具体原因,然后面试官非常耐心地告诉我说确实不可以,这会产生一个无限递归的问题。
再之后就是写题了,一面的题中规中矩,先是手写个单例模式,然后是不使用Java容器类实现一个循环队列,都不难,这里我就不展开了。

然后是二面,字节的面试效率很快,一面结束立马就二面了。二面的画风正常了不少,基本是面试官问什么我就回答什么。二面针对计算机网络问了很多问题,可能因为我面试的部门是做视频架构的,所以对网络很重视吧。面试官首先问了一下tcp的拥塞控制,然后问了tcp里的ack和nack(不知道是啥)的区别,再然后面试官讲了一下当前tcp协议的一些缺陷,问我有什么改进的地方。说实话,这些问题除了拥塞控制之外,我回答的都不好,大家还是去搜索引擎自行查阅吧。计算机网络相关的问题问了之后,二面的面试官问了一些Java虚拟机相关的东西,主要是问我引用类型有哪些(强引用,软引用,弱引用,虚引用),对JNI是否熟悉(不熟悉)等等。然后又是紧张刺激的做题环节,第一题就是给一个矩阵,从右上角往左下角一层一层斜着遍历,类似于这样:
输入:
 1  2  3  4
 5  6  7  8
 9  10  11  12
 13  14  15  16
输出:
4 3 8 2 7 12 1 6 11 16 ...
说实话这道题我刚拿到手里是不太会的,因为我感觉要有个数学公式来找规律,但是我想不出这样的规律,于是我就用了一种很投机的方法,就是将矩阵每一行逆置之后,从左上角往右下角一层一层斜着遍历,这就好写很多了,当然面试官很不满意(知道更好解法的牛油们可以在评论区多多赐教),然后又给我出了一道层次遍历二叉树,这题秒了,然后二面结束了。二面结束当时我以为自己已经凉了,因为前面的基础问题都没回答好,程序写的也不怎么样,但没过多久hr就跟我说二面过了,然后约了7月14号三面,我挺意外的,不过hr也指出了我的问题,就是面试官普遍反映基础不扎实,让我认真准备一下专业基础(这里的基础应该主要就是计算机网络),同时也要加强自己的coding能力,不得不说字节这个安排真的挺人性化的,面试体验确实好的没话说。

3.三面(7月14号)

紧张刺激的三面终于来了,面试官很准时。三面的面试官看着也很面善,上来就问我项目,这一块问的挺多的,前后大概有15分钟是在问项目吧,不过我这个项目也比较主观,我就不展开说了,在这里我想向大家分享的是,字节对项目不是特别看重,但是要保证项目的细节都能说清楚,里面用到的一些技术原理要很熟悉,比如我的项目里用到了redis,面试官就对redis问的很深,比如redis的线程模型,然后就是问了一下select、poll、epoll的区别之类的。项目问完了之后,面试官就开始对我简历上写的东西开始选择性的提问了,比如计算机网络里的滑动窗口机制是怎么实现的,Java虚拟机的垃圾回收算法有哪些,这些问题都不难,感觉三面反而是最轻松的了。接下来还是做题了,两道题,leetcode 236leetcode 62,很快就秒了。然后三面结束立马就收到了hr通知说面试通过了,字节效率真的高。

附录

这两篇博客能帮助大家构建一个整理的技术框架,当然网上还有很多类似这样的博客,大家随便找两篇看看,都差不多,不过千万不要以为掌握了博客内容就完全足够了,毕竟博客是非常浓缩的,深度有所欠缺,更多的内容还是需要大家自己发挥自主学习能力,多做总结。这些博客指明学习的方向是没有问题的,大家可以把这两篇博客作为提纲,自己在学习技术的过程中再进行深度挖掘。
当然除了看博客,看面经,最重要的还是要刷题,刷题是终极奥义,比如我就在leetcode上刷了500多题。这个题量大家自己参考一下就好,因人而异,有的人比较聪明,可能稍微刷刷就摸清了套路,像我这种比较普通的人,就需要刷多一些才能摸到门道,题量的多少大家自行体会,千万不要惟题量论,关键是要通过刷题理解算法的本质。





,

更多模拟面试

全部评论

(17) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐