2021届,双非二本的阿里云C++面试之旅
阿里云一面:
自我介绍
epoll原理
epoll、select区别
项目的特点(有没有考虑高并发),项目花费时间
断点下载(没答上来)
竞赛经历
C++中new和delete与malloc和free的区别
子类析构时是否调用父类的析构函数
多态的理解
引用和指针的区别
重载和重写
个人优势
在校期间觉得学的较好的课程
如何理解go中的Goroutine(刚学go所以没答好,此处面试官应该想问这个底层的调度器)
Docker底层原理的理解
Docker的隔离机制的理解
内存泄漏的理解
堆和栈的理解(栈用来保存什么)
死锁的看法和理解
性能问题的调试方案和平时用什么方法debug(gdb之类的)
性能方面的研究(抱歉三连)
数据库相关
Int在32位和64位机器上的不同(gcc编译)
反问评价
一面接着就是一个在线笔试,几道简答题几个编程题,在那个阿里伯乐系统上,我这边写那边面试官可以看见
阿里云二面:
自我介绍
有序数组中找一个数(二分)
对项目里的一些点进行考察
tcp三次握手和四次挥手(好像问了)
c++相关(记不清了)
docker中知道什么相关的技术(就记得这个了,我当时答了cgroup、namespace、ufs和那个写时拷贝)
两个有序数组合并之后的中位数(leetcode4,当时思路不是特别清晰,说的不是很好,口胡了个二分)
日常反问评价
二面之后有了测评链接和笔试链接
笔试做的是7.20那场,a了第一题,第二题0通过
阿里云三面:
三面面试官在北美,电话打过来信号不好,故换了微信进行面试。
自我介绍
为什么笔试没有ak(菜的真实,泪目T_T)
介绍一个自己擅长的算法(当时说的ac自动机,并且用子串匹配举例。但是在这我给我埋了个坑。因为ac自动机不能很好的解决“一个串是否是多个串中任意一个串中的子串“问题。当时愣住了,面试官说面试完之后想想能不能解决,在给他发代码)
一个url在浏览器会经历什么过程(中间跳到了中断上面)
键盘输入一个字符到浏览器输入框内经历了什么(我回答会发生中断)
中断机制是怎么实现的,中断之后,cpu怎么处理的(答的不好,之后就跳到了内核态与用户态)
内核态与用户态怎么区分的,区别是什么(答的不好,回到问题4,然后说到了dns)
DNS域名解析的过程,客户机如何找到dns服务器(手动设置和自动找,自动找涉及到了IP的广播)
tcp三次握手(重复)
tcp的拥塞控制和可靠传输(记不清了好像是问了可靠传输)
谷歌的bbr加速技术(使用过,没接触过原理,抱歉三连)
https过程(主要是那个加密过程)
反问评价
面试结束后,思考了一下,发现自己那个ac自动机挖的坑。只能用笨方法,将所有的后缀插入trie中,然后对于需要查找的串与trie进行匹配。写完之后,向面试官积极承认之前的错误,并将代码发给面试官。
然后发了个ac自动机真正的用途代码。
阿里云交叉面:
自我介绍
在一个二叉树中,给三个节点,根节点和任意两个节点,找两个节点的最近公共祖先(lca问题,我首先说了朴素的暴力搜索解法,然后说了基于二进制的倍增解法。讨论了各个算法的时间复杂度问题。还有倍增法中dp数组的构建。)
问题2的变形,在一个二叉搜索树中,求lca(我说了直接使用二叉搜索树的性质,对两个节点与根节点比较且往下递归进行寻找)
小球问题,我们有一个楼和一个球,球在一定高度的地方会碎,现在要找到这个高度,求最小次数。(单球就是o(n))
四问题变形,球的数量变成两个,求最小次数。(答的不好)
操作系统有了解吗,线程和进程的区别
反问评价
听说牛客许愿挺灵,许愿HR面
面经还没发出来就收到通知过了交叉面,这也太灵了!
#面经##校招##阿里巴巴##C++工程师#