字节跳动提前批 实时音视频后端开发(一、二、三、四面)已意向
许愿过四面
——————————————————————————————————————————
面完三面才来写的面经,很多细节已经忘了只写了一些有印象的。。大家见谅
一面(1h30min)
一面上来就是两道算法题,第一道是给两颗二叉树,判断B是不是A的子树。
第二道是合并三个有序数组。 写完之后开始问问题。
计网
内网和外网的区别?
讲一下NAT。
思考这样一个场景,宿舍有一个路由器,寝室有你的电脑和你舍友的电脑,当你往你舍友电脑发包和往百度服务器发包底层的协议过程有什么不同。
操作系统
我们知道操作系统定义了进程和线程,那么区别出进程和线程的目的是什么?
讲一下epoll,select,poll三者的区别和适用的场景。
数据库
联合索引(a,b)和(b,a)有什么区别
一条sql语句慢怎么排查?
场景题
充值卡原先使用卡号和卡密来充值。现在要升级系统,去除掉卡号,需要怎么升级才能保证安全性?
银行卡原先的验证身份方式是磁条,现在发现磁条可以伪造,要将磁条验证升级为IC卡验证,只考虑ATM机器和银行卡,给出一套不影响用户使用的升级方式(即不能强制用户换卡,升级要考虑到ATM机和银行卡)。其实后来本质上就是一个接口升级的问题。
二面(45min)
自我介绍
从项目开始问(主要是websever和CS144的lab)
目前你的服务器的连接数是1w,你觉得瓶颈在哪里?你有什么优化的方法?
你在简历当中提到了事件处理模式是reactor模式,那么你觉得怎么样才能利用多线程提高服务器的处理效率呢?
可以讲一下你项目中是怎么样实现超时重传的吗?
TCP协议中超时重传能保证数据的可靠传输,但是丢包之后一定会有延迟,有没有什么办法来降低这个延迟?
讲一下Linux的文件系统
讲一下Mysql的索引是什么?索引怎么让加快查询的?
索引可以加快查询,那么使用索引有什么缺点吗?
算法
找出数组的第K大元素。
三面(45min)
自我介绍。
我看你的server的业务很简单,为什么只能支持1w个连接呢?
你这个HTTP服务器只能支持HTTP1.0是吧?讲一下HTTP1.0 1.1 2.0 3.0之间的比较大的改变。
(讲3.0的时候忘了提保持连接的特性)四元组标识TCP连接,那么对于QUIC而言,当四元组当中有一个东西变了需要重新建立连接吗?
讲一下HTTPS建立连接的过程吧。
在命令行ping网址的时候TTL是什么东西?
TCP和UDP可以监听同一个端口吗?
讲一下select和epoll的区别和适用的场景。
你觉得对于服务器和客户端而言,支持的TCP连接数受到什么影响?
算法
非递归前序遍历二叉树。
四面(45min)
自我介绍。
结合实习在的组问了两个场景。游戏里面像集市或者公共区域的时候会无法避免的有很多玩家,服务器这个时候是怎么处理玩家的视野可见问题的?要是把所有可见玩家的信息都下发会不会太大?如果只选择一部分的话又是哪些可见哪些不可见?
我看你在实习的时候主要是做了技能相关的模块,大概讲一下技能在服务器这边的执行逻辑大概是些啥?玩家释放一个技能之后要是网络卡顿了3s后包才传到服务器你们是怎么处理这种情况的?会不会出现服务器和客户端状态不一致的情况?
问项目的实现细节,然后问了下压测的原理和改进的地方(从二面开始就在问这个东西了。。)。
问了下项目流量控制的实现。
我们调试程序的时候会打断点,可以讲一下断点在底层是怎么实现的吗?
我们在控制台按下ctrl+c的时候发生了什么?在一个进程收到信号退出的时候我们可能希望做一些数据写回保存等操作,怎么实现?
我们在下载东西的时候会发现刚开始网速很慢,然后逐渐变快,可以讲一下TCP连接底层对应的变化吗?
讲一下HTTP报文的组成?
我们用HTTP协议下载一个很大的东西的时候下到一半暂停了,第二天重新下载的时候会接着从当前进度下载,HTTP是怎么实现这样的功能的?
访问中国银行网站的时候,我们怎么确保当前的这个网站是正规的而不是不法分子伪造的服务器呢?
C++的虚函数的多态是编译时还是运行时?怎么实现运行时多态的?
这段程序执行会有错吗?