2019虎牙C++后台开发实习生面经

本人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;

如果还有时间的话,打算撸一个数据库引擎或轻量级操作系统,那是最好不过了,而且还能把我的网络库用上去,加深底层理解。

造轮子真的是个非常有趣且有成就感的事情啊!

你可能感兴趣的:(C++,面试,C++,面试)