快手c++工程师面经
一面
问题
主要问了我在实习的时候做过的事情,以及在实习的时候遇到的困难是什么,怎么解决的。
算法题
多个有序链表合成一个有序链表
一个差分数组问题,一个贪心问题
反问
问了部门内的业务,说是做直播和音视频开发,后面我说我有过音视频的学习经历但是没有在简历中写出来,面试官说如果看到了会问我ffmpeg相关的东西,快结束的时候我才知道是面的直播那边的部门。
二面
问题
- quic是什么,quic有什么优点,为什么要用quic而不是tcp,quic的拥塞控制算法是什么
- tcp的rtt怎么算出来
- ping的原理是什么
- 协程是什么,协程和线程的区别,协程的实现原理
- 虚拟内存是什么,怎么加速搜索页表项的查找,为什么要使用多级页表
- memory_order是什么
- 虚函数表是什么,虚函数表有什么内容,什么时候需要获取虚函数的其他信息(RTTI)
- 位置无关代码是什么,为什么要使用位置无关代码,位置无关代码怎么实现
算法题
TOP K问题,一个数组中找出前K个最大的数
要使用快速选择算法,时间复杂度O(n)
总结
这一面答的是真的不好,网络那一块没有回答出来,RTTI和memory_order不知道,还有一开始出了一道比较简单的算法题,做了好久。TOPK也没有想到使用快速选择算法,问时间复杂度的时候也想了好久才回答出来,然后又问了快速排序的平均时间复杂度和最坏时间复杂度,就结束了。然后也没有问音视频的问题,可能是不同的组来面的。