本人2021届毕业的C++菜鸡,提前一年感受下面试流程,积累一波经验,在此分享一波虎牙C++后台开发实习生面经,人生第一次互联网公司现场面,激动又紧张。
文章同样发在了牛客网上了,链接:https://www.nowcoder.com/discuss/185349?type=2&order=0&pos=24&page=1
(4.26)
一面(40min):
自我介绍
项目相关:
优雅关闭连接是什么?
线程访问资源相关问题?
worker线程空闲的时候怎么办?
线程解锁和通知的先后顺序问题(不会)
read如何判定接收完成?
为什么选ET模式?LT?
时间轮定时器讲一下?为什么选这个?
基础问题:
讲讲extern关键字的作用
external "C"
析构函数一定是虚函数吗?什么情况下是虚函数?不是虚函数会发生什么问题?
假如父类派生一个子类,子类只增加了一个int成员变量,父类的析构函数不是虚函数,父类的指针指向了子类的对象,析构时那么会不会发生内存泄漏?
STL熟悉吗?vector、list区别?底层实现?迭代器失效情况?最后一个元素插入会失效吗?map底层实现?时间复杂度?
哈希表会吗?哈希冲突的解决办法?
快速排序是稳定的吗?为什么不稳定?
快排是最快的吗?
什么是稳定的排序?
两个有序数组归并排序时间复杂度?
归并k个有序数组?怎么减少额外的内存空间占用?
数据类型全部是int32时,怎么排序最快?(不会)
tcp、udp区别?
tcp为什么是可靠的?
粘包听过吗?怎么解决?
进程线程区别?
两个线程对i加1,结果一定会是2吗?答案可能是多少?为什么?怎么保证是2?哪几种解决方法?
一致性哈希听过吗?(不会)
top K问题听过吗?怎么从海量数据中选出前10大的数?
数据库学过吗?(没有,正在学)
CAP听过吗?(只了解一点点,就直接说不会了)
还有什么问题要问的?
二面(1小时,面试体验很好):
自我介绍
项目介绍
智能指针设计实现(shared_ptr、 weak_ptr)
浏览器输入huya.com,按下回车过程发生了什么(越详细越好)?
还有什么问题?
(4.28,虎牙总部)
三面(10多分钟):
自我介绍
项目:
epoll为什么用ET,什么情况下用LT?
并发量有多少?
开了多少连接?想要支持更多连接怎么办?最大能设置为多大?(我猜应该是想考:ulimit -n)
epoll原理实现,为什么用红黑树,好处,时间复杂度,具体插入过程?
C++11有哪些特性?
智能指针是线程安全的吗?哪些地方需要考虑线程安全?
如何访问非法栈空间?
共享内存了解吗?最大有多大?能不能超过物理内存?硬盘大小呢?
协程了解吗,有什么作用?怎么实现的?上下文切换保存什么内容?
分布式系统了不了解?
看直播吗?看什么直播?虎牙斗鱼直播有区别吗?
还有什么问题?
三面结束后,HR小姐姐说我是2021届的,官网实习只招2020届毕业的,让我明年再战,好吧,其实能到三面已经非常满足了,哈哈~
最后推广一波我水水的GitHub网络库小项目,小伙伴们可以参考!GitHub:https://github.com/chenshuaihao/NetServer
还要特别感谢陈硕的muduo和林亚的分享(https://www.nowcoder.com/discuss/147538?type=2&order=4&pos=4&page=9),对我帮助巨大!
接下来有时间的就继续完善我项目(比如加入log日志系统、内存池、协程、lock-free等等),还有猛刷LeetCode;
如果还有时间的话,打算撸一个数据库引擎或轻量级操作系统,那是最好不过了,而且还能把我的网络库用上去,加深底层理解。
造轮子真的是个非常有趣且有成就感的事情啊!