字节C++日常实习面经
字节后端存储,base杭州
8.18 19:30 字节一面
1.拷打项目6.s081
- 问xv6的物理内存如何分配的(全局的空闲链表,说了使用vmalloc分配物理内存,然后如果是进程使用系统调用申请的会映射到虚拟地址空间)
- 物理内粗的惰性分配,cow,以及惰性分配的问题(频繁触发缺页异常陷入内核态开销很大) 补:惰性分配的优化方法:预取,根据进程访问局部性预取相邻的多个页,文件映射时,linux默认readahead为128KB
- 定时器回调是怎么实现的(PCB打标记,保存回调函数的函数指针,trapframe添加字段保存陷入时的通用寄存器和pc,然后在usertrap中把pc送到回调函数的地址上)
- 配置环境的时候申请多大物理内存(瞎说的128M,蒙对了),虚拟地址寻址空间有多大(3 * 9 + 12位),有没有实现磁盘的交换分区(没有)
2.拷打项目cs144
- 问tcp连接时候的状态机怎么实现的,快重传怎么实现的,状态机各种情况下的转换怎么测试的 (一个都没实现,汗流浃背,解释说主要是为了通过实验中给出的测试用例,有很奇怪的用例只有一个segment且SYN和FIN被同时置位)
3.ReSampler硬控面试官十分钟
- 演示了一下,然后讲了讲为什么要做这个
- 问对JUCE框架了解多少,我说了解一下,自己重新实现过audiothumbnail,以实现缩略图拖拽逻辑
4.做题
- LeetCode 347.前 K 个高频元素
- 没有复习到,没想起来用堆,写了一个用vector存储unordered_map中的pair再排序的算法,复杂度nlog(n)
5.反问
- 组里做什么业务(分布式存储)
- 组里用的语言和工具链(c++, go,工具用gnu那一套,都差不多)
- 对我个人的建议(项目的细节可以思考的深一点,自己写一些测试用例)
8.20 14:00 字节二面
1.两个机器互相发数据包,期间触发了哪些中断
2.场景题:单台机器在10ms之内发送10G数据,网络条件严重拥塞,如何在协议层面做优化(完全不懂,反复确认了好几遍问题,然后假装思考了半天,终于鼓起勇气开始胡扯,说可以发一些探测报文来检测网络条件,如果全丢包了则退避,如果没丢包认为网络条件好开始发送)
3.手撕,出了一道没见过的题,一个vector里有顺序排列的数据(uint32_t),每两个数之间的差值不超过10000,如何设计一个新的存储结构,使得内存占用在原来的1/2以下,自己设计测试用例(说了思路,多个数一个组,用uint32_t记录每组的第一个数,uint16_t记录组间元素的差值,然后写。写好之后面试官让把每组的元素个数作为模板参数)
4.问如何看待加班(表示自己能接收加班且不反感)
5.最快什么时候入职(说9月中上旬)
6.反问
- 组里重视实习生的培养吗
8.20 17:00 hr面
8.21 oc,收到offer
字节的流程非常快,4天速通。
其他同时沟通的公司有些一面还没开始
#c++##字节##字节实习#