面试时间:应该是19年7月初

岗位:容器云研发相关岗位

形式:现场面试

一面

1.自我介绍

2.介绍进程,线程,协程?有什么区别?java,C++, python, go中的线程有什么不同

3.进程间的通信方式有哪几种,线程呢?

4.操作系统虚拟内存的工作流程,有什么好处?

5.描述一下一个二进制文件变成线程这个过程发生了什么,越详细越好?具体使用了哪些系统调用?

6.TCP,UDP的区别?三次握手,四次挥手?

7.C++ 中vector的底层实现?扩容策略?

8.二叉树的先中后序遍历

9.算法题:二分查找的变体题

二面

1.自我介绍

2.讲一下k8s吧,具体有什么组件,他们的作用

3.K8s创建job的整个过程

4.进程,线程,协程

5.为什么k8s中gpu只能一个任务独自用,其他人不能用

6.docker的底层实现

7.cgroup, namespace能不能具体讲讲,源代码有没有读过

8.kubelet,apiservice的源代码有没有了解过,有没有改过k8s代码

9.看过哪些linux的书,能不能讲一下linux偏底层的东西

10.算法题: 有一个int型数组,假设是1,3,4,2,5,7,9。要求对它进行重新排列,最后的数组的的格式是:每一个元素,比它前一个元素和后一个元素都大,或者都小。例如1,3,4,2,5,7,9。最后的形式是:1,5,2,7,3,9,4。

要求:时间O(n),空间O(n)

思路:快排的变体,先找到数组中的第n/2大元素,这样就将数组分为两部分,第一部分都是小于4,第二部分都是大于4。然后每次从第一部分取一个数,然后再从第二部分取一个数即可。

一开始没想到,想到的是nlogn的算法。提示了一下才想到。然后考虑一个边界卡住了,最后被他打断了,说时间来不及了。

总结

这是正式的第一次面试,最终未通过第二轮面试。后面在10月中旬的时候,通过头条的同学,又得到一次正式校招的面试机会,因为已找到满意工作,故放弃了面试。

个人对头条的印象很好,前台非常热情。一面面试官人非常好,看我非常紧张一直在安慰我,最后出的算法题也不是很难。