美团到店软件开发一面C++
80min
面试官很和蔼,上来先说一下面试分成三个part,①互相了解;②基础知识考察;③提问交流。
1.首先面试官介绍了一下自己这边的部门情况,就是美团到店一系列的业务,种类非常的繁多,TOB TOC都有。具体的部门还是要到时候和HR交流,第一次遇到面试官介绍部门介绍那么多的,听起来就觉得很有意思。
2.然后是基础知识环节
(1)操作系统:
①内存页面置换算法:最佳页面,先进先出,最近最久未使用,最不常用,时钟页面置换(这个忘了具体是啥了,没介绍出来);
②进程调度算法:先来先服务,最短作业有限,高响应比优先,时间片轮转,最高优先级调度算法,多级反馈队列调度(这个又忘了,晕了);
③上难度:详细介绍I/O多路复用,epoll select poll都说一遍。这块有个问题,面试官质疑我说select底层数据结构是bitsmap,他说是数组,我应该没记错啊。。。
(2)计算机网络:
①TCP三次握手,为什么不是两次还是四次?这里我说的有点墨迹,面试官还帮我概括了一下,建议我说的可以简洁一点,总之就是让通信双方确定报文可达,而且同步序列号。
②TCP的可靠传输,流量控制,拥塞控制全都详细说一遍。
(现在复盘才发现,面试官问的不多,但是能说的真的好多......)
(3)C++:(这块面试官也记不太清了哈哈)
①运算符重载和函数重载的区别。我一开始有点懵逼,感觉这俩一个重载运算符,一个同名函数重载,没啥可比较的啊。跟面试官说了一下,他说他可能也记不清了。我就都介绍了一下。
②讲讲构造函数和赋值构造函数,顺便我还说了一下move。
③C++的异常处理,断言、try catch throw
④聊聊C++的基本数据类型,int char double都占多少位,指针多少位
⑤上难度:多线程,thread库。这个答的不好,因为没用过,只能从理论上来说一些东西,面试官最后给了我个场景,以抓包为例,要抓的包有很多,怎么用多线程让抓包快一点。要用多线程并发抓取
(4)Mysql Redis:
①讲讲索引,索引的底层结构,为什么用B+树,和红黑树对比。索引优化怎么做
②问了问我Redis学了什么:数据结构,缓存,过期删除内存淘汰......
(5)数据结构和算法
①讲讲红黑树,我只说了思想,面试官想看看我五条性质会不会,我说不会,然后我和他都笑了哈哈;
②海量数据TOP K问题,堆排序和减治法快排,时间复杂度。这块一开始说错了,经过提醒又改了。
③海量数据查找,布隆过滤器。本来面试官想问我考虑内存和不考虑内存的,结果我脱口而出说了布隆过滤器......应该是把他整无语了
④手撕代码:层序遍历二叉树。
(6)实习:实习期间遇到的难点,怎么解决的。
(7)反问:①C++面这个问题大吗?语言什么的不成问题,把基础知识,尤其是Mysql好好学学就行;②美团用的什么中间件:说了一些自研的,我也没听过,不过有一个是和Kafka很像,还有Mysql改的什么的。