字节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++##字节##字节实习#
全部评论
定时器回调是什么?作业里有这个吗?你做的哪一年的?
1 回复 分享
发布于 08-25 10:07 山东
楼主大三或者研二吗
1 回复 分享
发布于 08-22 23:19 陕西

相关推荐

个人bg: 27届xdx找日常实习,项目是mit6824的Raft共识算法,cmu15445的bustub数据库,还有一个知识星球上面用go写的仿微信聊天室项目,主要语言是C++,会用go。由于一面把项目问的很详尽了,二面就主要问一些C++八股。面试拷打:1. 说一下模板类型推导。(这里我还拓展了auto类型推导以及二者关系)2. CRTP了解过吗?(知道是奇异递归模板模式,和enable_shared_from_this,但是细节不记得了)3. 说一下静态多态和动态多态的区别。4. 假设有一个子类继承自一个基类,那么我给这个子类加final关键字,有什么作用,编译器会进行什么优化。(面试官引导下推出了可以做静态绑定,减少虚函数表查找开销)5. 在多态中,我为什么要使用基类指针指向子类对象去调用对应方法。6. 如果基类的析构函数不是虚函数,那么在多态中的子类一定会发生内存泄漏吗,假如子类里面有一些int和double数据成员,谁来回收这些。7. 你知道folly库吗,使用过吗。(不知道)8. 了解folly库的promise和future吗,他们与标准库有哪些不同。(只和面试官说了标准库的promise和future)9. folly库的future可以设置回调函数,如果要给标准库的future添加这个功能,你会怎么实现,有什么思路。(在future里面加一个回调函数,增加一个call成员函数,当get成功时就调用回调)10. 知道brpc库吗,使用过吗。(不知道)11. 你有自己用C++实现一个线程池吗,是怎么实现的。(没实现过,和面试官说了一下猜想的思路)12. 用线程库时有没有关注过线程的使用率,没到100%怎么办。13. 了解C++多线程编程吗,说一下无锁编程。(说了atomic,CAS指令)14. 展开说一下atomic变量的内部实现。15. 知道C++的内存序吗。(完全不知道)16. 说一下可拓展哈希,知道线性可拓展哈希吗。17. 知道一致性哈希吗。(知道是一个哈希环,但是细节想不起来)18. 你使用过OLAP型的数据库吗,对于OLAP数据库一般有什么可以做的优化。(只知道列存储和分表)19. 看你项目中用到火山模型,那你知道向量化吗。(不知道)20. 你一般会怎么优化你写的代码。手撕:假设有一个数组,长度为N,这个N很大很大,使用C++多线程编程开32个线程对这个数组进行排序。(从来没手撕过这种题目,想写多线程归并但是当时人已经懵了,写不下去)。小结:通过这次面试知道了自己还有很多不了解和了解不够深入的知识,后续会补C++多线程编程和一些常用开源库方面的知识。面试官小姐姐很友好,会引导你做出回答,后面手撕给了挺多提示,但是当时人已经懵了,实在写不进去。二面结束后没说结果,多半是凉了。
发面经攒人品
点赞 评论 收藏
分享
评论
2
26
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务