拼多多 服务端开发实习 一面面经(C++) 3.30
楼主是科班双非本985硕。
- 打过招呼后首先让自我介绍,我把实验室的课题项目大概讲了下,讲完之后面试官问我还有补充的吗,本科的经历呢?我说本科因为考研所以做的都是小课设。
- 然后面试官就开始问项目了,我的项目是用机器学习算法预测集群负载,面试官问如何选择这些特征进行模型训练(我就说一开始还是就根据直觉选择比较重要的那几个性能指标,然后又说了其他几个特征)。然后问如何调整参数的:我说因为这个项目是和一个学硕的同学一起做的,调参这个我也不太懂,是他在进行的,我主要是建模,把阿里云开源的数据集预处理成一个个状态,作为时间序列来用于预测。
- 问到项目中的一个工具, 我解释了一下为什么用这个工具。还问到是否已经应用到实际环境中,如果应用到实际环境中,要怎样收集集群的状态来进行预测。还问了,集群状态由多个因素影响,如何分配各个因素的影响权重?我说主要还要看这个集群最终执行的任务大多是什么类型的,因为我们项目最终是应用于某个场景的,所以根据任务的类型来决定,是IO密集型还是计算密集型。
- 因为拼多多技术栈主要是JAVA,所以面试官就没问我C++语言的问题。问我MySQL索引是怎么实现的,我说只知道是B+树实现的,具体细节并不清楚;问知不知道Redis速度为什么快(不知道有没有记错)。问完面试官看我不太了解,我就解释了下项目没用到数据库,所以不太了解,面试官也就没有继续追问。
- 然后问数据结构,让我讲一下常见的数据结构,由易到难,我就从数组开始说:数组(讲了静态和动态数组)、栈(讲了递归、表达式求值)、队列(讲了消息队列)、堆(大小根,然后面试官问了下知道优先队列吗,我说底层应该也是堆实现的,然后不知道为啥没有继续追问)、二叉树(后面想了下应该说图和树的)。然后面试官补充说map,我说只知道底层是红黑树,具体太复杂不了解,只会用。然后面试官问了hash冲突怎么解决的,我说拉链法和开放定址法,面试官补充说其实map在hash冲突的时候用的拉链法是用的红黑树,因为很快。
- 问了动态链接和静态链接(我给忘了,就讲了下每个进程虚拟地址空间里边有个共享库区域,映射到模块的内存地址,还讲了下修改代码不需要重新编译整个工程)
- 问了计网,七层模型,让我从IP层开始讲,我忘了,后来经过提醒想起来IP层一些路由协议,讲了下路由的过程。问了TCP的连接与断连,以及断连后为什么要等待2MSL。问了浏览器访问一个网站这个过程发生的事情。顺势问到DNS服务器的结构。
- 还问了同步IO,异步IO,阻塞IO,非阻塞IO
- 算法题,有序的矩阵查找target(类似于二叉搜索树的解法);然后面试官想问我设计模式,我说不太懂,就让我口述下算法题了:判断链表是否有环(快慢指针);找到环的起点(这道只讲了下应该是根据快慢指针的步数可以得到某些信息,由此求解)
- 面试过程体验还是很好的,面试官很nice,会根据简历发问,面试过程中还给我提了学习建议。