下午4点接到一个杭州打过来的电话,阿里巴巴一面。持续时间半个小时。
面试官是阿里云KVStore组。
1.自我介绍,说一下项目
说了下之前在公司做的手绘几何图形规整输出的项目,提了下当时遇到的问题,以及用到的解决方法。也说了下现在组里面在做的表情识别的项目。讲了8分钟的样子。
2.C++STL标准库里的知识
sort的时间复杂度。
这个好简单,O(NlogN),然后我补充了下sort是快排的思想,然后是不稳定的排序算法,是基于泛型编程的思想,除了支持基本的STL中的数据类型,还支持自定义的数据类型进行排序。传进去的是迭代器或者指针,直接操作的地址,然后支持重载,第三个参数可以重写cmp排序规则。
Vector的增长模式。
首先vector是一种顺序容器,动态数组,在声明的时候可以调用构造函数直接开辟一定大小连续的空间。当空间满的时候,重新申请一个2倍的空间,将原来的所有数据考呗过去。
Map底层
红黑树,比较复杂,和multimap的区别。
3.平常怎么调试代码,主要在那个平台
平常主要用vs,Windows下,用过mac下的clion。编译出错,先看是不是语法错误,如果是逻辑错我,通过打log、打断点,定位错误的地方调试。
4.内存泄漏的问题
我只答出了数组越界,指针作用域之外指向地址不明,变野指针,复杂度太高递归次数太多爆栈。答得不好,后来查了下,发现还有好多没说到,C++内存泄漏的几种情况。
5.有了解C++的发展么
现在出到了C++17,上一个版本是C++14,17不了解,出了什么智能指针,方便管理内存。我用过的只有aotu关键字。
6.网络编程
问epoll和poll,最近在补,还没看到那块,说了下自己写的TCP的Socket编程,服务器端和客户端的业务逻辑。
7.Linux
同步互斥 文件加锁解锁,线程安全 猝。
我提问环节,让面试官介绍了下他所在部门主要做哪方面。
KVStore,做redis数据存储的,平常是在linux上对内核进行开发优化,也做一部分远程运维。