阿里蚂蚁金服C++1、2面

一面:简历评估
1:实习经历,简单问了一下学的rtmp协议,讲了直播时,用udp与tcp区别,rtmfp为什么用udp
2:tcp基础知识,问了三次握手序列号问题
3:stl中map为什么用红黑书
4:用C++哪个版本,使用C++11哪些功能
5:简单介绍一下快排
6:linux虚拟内存分布,局部变量在哪个段
7:系统设计,单机图书系统,只考虑书名,所有数据可以存在磁盘上,但放不到内存中,实现书名的查找插入删除
8:数据库,不了解

二面:
先问实习(主要问rtmp协议和直播方面可以做的优化,大概聊了40分钟)
你看rtmp协议有啥感受,rtmp为什么适合多媒体传输,说了主要是分组和流的复用,可以用来实现不同类型消息之间优先级发送。
如何要在tcp上实现流复用,怎么实现?然后聊了很久关于rtmp及协议设计一些细节(其中包括粘包问题等等)
问:你觉得在整个直播过程中,那些可以优化的地方,聊了动态码率实现,丢包等问题
问的整个过程主要是问些能触发你思考的问题,给你提供一个场景,让你给出个解决方案。

然后问快排与归并排序(接近20分钟)
快排与归并比较:快排比归并快,归并比快排稳定。
然后分析了2者时间复杂度,问什么快排比归并快。
归并可以进行外排序,快排不行。
归并空间复杂度为O(n)
如果是链表,会有什么区别:
我的回答:归并空间复杂度会变成O(1),二者时间复杂度不变。
面试官补充:快排在数组情况下,由于计算机内存访问局部性原理,会比归并在这方面更快,而在链表中,这种优势不再存在,
加上归并空间复杂度变为O(1)和快排的稳定性,所以一般在链表排序中都使用归并排序。
补充:如果进行递归版的快排,可能会出现栈溢出情况。

不同排序各有优势让我实现一个通用排序库,
我:数据比较小用插入,中等用快排,比较大,用归并。
问:为什么比较小是用插入而不是冒泡
想了几分钟,面试官说过了。

问了map实现,几种实现好坏。

了不了解tcp源码,没看
poll,epoll效率上差距体现在哪(2各方面:等待队列回调函数和系统调用数据拷贝)


开始问C++(答得很差)
C++11用过没,就跟他讲了一下右值引用的作用,还准备继续问下去,我说没了结果其他功能。

模板:说了一些模板元编程坏话,感觉面试官不是很开心

3个类A类继承B类和C类,每个类中都有个名字不同虚函数,问内存布局(忘了,给了一种我觉得可能对的(其实是错的)模型,并分析了一下,面试官笑了)
delete数组为什么加[],没回答上来,也分析了一通,面试官说思路大概正确,然后今天就聊到这里。


昨天刚面的2面,最近在复习,没时间整理面经,这是面完粗略写的,比较简陋,还有很多错别字,先发出来,大家不要介意。
全部评论
是校招还是实习?
点赞 回复
分享
发布于 2018-03-21 20:25
今天在群里看见这个面经了,看来是一个学校的
点赞 回复
分享
发布于 2018-03-21 23:13
滴滴
校招火热招聘中
官网直投
蚂蚁金服有c++岗吗?还是你投的java岗,问的c++
点赞 回复
分享
发布于 2018-03-23 10:33
楼主过了咩?
点赞 回复
分享
发布于 2022-03-11 16:38

相关推荐

2 44 评论
分享
牛客网
牛客企业服务