我1月2号已经投了简历,本来想找个寒假实习的。但谁能想到,3月下旬才面试(服了(O_O)?)。不过,最后拿到offer了,就不说什么啦。
实习一面
介绍项目
介绍 Reactor(项目中)多进程版本跟多线程版本的区别
耗时任务怎么处理?(工作线程池)线程池设计
在线程池中回写数据,会有什么问题?(线程安全问题,将实际工作转移到 IO 线程)
收到的数据不是一个完整的请求数据(TCP字节流的特点导致的)
发送二进制流(协议开始是n个字节表示数据长度)
定时器怎么实现的?
有没有做benchmark?(说了压测结果)
vector 和 list 的区别
内存管理,多线程下加锁的问题(提到tcmalloc)
c++ move语义
map 的底层实现(红黑树)
红黑树查找的时间复杂度、与 AVL 树的区别
了解 B+ 树吗?在哪里应用了 B+ 树?(数据库索引)为什么不使用红黑树?
LRU 的怎么实现?(链表 + 哈希表)
哈希表冲突
top k
排序稳定性
场景题:为游戏排名系统设计数据结构。面试官点出了难点,当一个玩家的分数改变之后,一般的数据结构会导致大部分玩家的排名的改变,这里需要时间复杂度为 O(n) 的调整操作,能不能设计一种数据结构,将调整操作的时间复杂度降到 O(logn)?(不会,只说到了排序树,说不下去了。面试官说先到这里,可以回去想想这个问题。)
提问环节
面试过程体验比较好,面试官会跟我交流他的看法。早上面试的,下午收到了hr电话,约二面时间。
实习二面
- 自我介绍
- 介绍项目
- 多线程、多进程版本的区别
- 条件变量为什么需要传入互斥量?
- tcp和udp的区别
- 常见的基于TCP、UDP的协议(提到DNS)
- DNS为什么不使用TCP?(不懂)面试官引导:qq可以使用TCP和UDP,为什么qq支持UDP?(答了服务器维护长连接时的内存和文件描述符消耗。DNS大概也是这个原因,同时教科书上提到DNS会建在网络的边缘,避免给网络带来很大的负担)
- 设计一种数据结构来过滤弹幕敏感词。(字典树)最后扩展到有拼音的情况,例如xi安、西an。(不懂)
- 提问环节
实习三面
- 项目和muduo的区别
- 除了Reactor模式,还知道其他模式吗?
- epoll的实现机制(原理)
- c++线程的使用方式,线程安全问题
- c++资源管理
- 模板
- 数据库缓存方面(redis)
- 微服务
- 最近看什么书?
- 提问环节
hr面
hr面都是常规问题,hr介绍部门是公司的核心部门,并且实习生的培养机制都比较好。
总结
面了几家公司了,我自己是很看重面试体验的,所以没加公司都会评价一下面试体验。虎牙在面试体验方面,三面下来,我感觉面试体验比较好。面试时,面试官会跟我交流,甚至会给我介绍我不懂的知识。
因为已经拿到其他公司的offer了,所以虎牙的整个面试过程中,我的心态都比较佛系。心态放松了,三面的表现也不比之前的差,所以没有必要过分紧张。如果因为过分紧张,导致发挥失常就得不偿失了。还得练习练习心态的调整呀。
全部评论
(4) 回帖