首先正常自我介绍
面试官让我详细介绍Minik8s项目,我比较轻松的handle住(印象分++)
Q:K8s有哪些组件?
Q:介绍一下输入域名之后解析到各个Pod上的过程
Q:Controller Manager干嘛用的?
Q:有没有看过什么开源项目?
Q:使用kubectl部署Deployment的过程?
Q:容器的核心技术?
Q:有哪几个比较常用的Namespace?
Q:Minik8s和K8s有什么差别,为什么要再写一个?
然后是算法题环节:
Leetcode25. K个一组翻转链表(Hard)
然后我寄了...瞎写,结果写错了...
之后还有OS和计网的问题:
Q:常见的网络虚拟化技术?
Q:Https和TLS的区别?
Q:常见的进程间通信的机制(深追共享内存)?
Q:启动一个TCP Server所用到的系统调用?
Q:什么是Syscall?
Q:进程&线程&协程的区别?
Q:TCP/IP四层模型中中应用层的协议有哪些?
首先非常成功地把面试官引导到了相对熟悉的k8s区域,让面试官问了很多和k8s相关的问题,好感度++
同时这也稍微掩盖了一些算法题没做出来的瑕疵,一面最终顺利通过...
问题是,计网这一块的漏洞实在太大,很多东西问出来完全不知道,只能口胡...(幸亏问的东西还能搭一点边)
还有算法这一块,刷题的量还是太少,第一次直播做题也让人压力很大...任重而道远...
一开始面试官让我介绍自己擅长的三种领域...
我:要不我直接自我介绍吧
面试官:啊~ 行,穿插着讲一讲吧
我:blabla(和一面一样,将三个领域分为C/C++, Golang, Web开发)
面试官:你对哪个方向最感兴趣?
我:K8s相关的开发&OS底层的开发,Web开发的话不是非常有兴趣
面试官:这些东西我们组都有在做的
我:那挺好(内心os:看来我选对了地方)
开始提问:
Q:虚拟机和容器有什么区别?
Q:K8s有哪些组件,它们各自的作用是什么?
Q:进程和线程的区别?
Q:什么是中断的上半部和下半部?
Q:Spinlock和Mutex的区别?
然后面试官问了问我毕业时间,实习时间的打算,还问了大四有什么课以及毕业论文的情况
最后我追问面试官是不是二面过了,他说从他的角度看,在技术上是过关了,HR可能还会有一些考量,让我等后续通知
面试官上来要求进行自我介绍,我balabala介绍了一通
然后开始对着简历提问
Q:在做Minik8s项目的时候,你们是怎么进行分工与合作的?
Q:听过分布式锁吗?(我:没有)那讲一讲你对锁的一些理解吧
Q:不同的锁分别在什么场景下应用?
Q:讲一讲特权级切换的时候发生了什么
Q:物理内存分配中,Buddy System里面主要的数据结构是什么,起到什么作用?
Q:讲一讲内核启动的过程,从第一行代码开始
Q:为什么启动的时候是一个CPU先启动,然后再由这个CPU去初始化其它的CPU,不能同时启动吗?
Q:做完Chcore项目之后你有什么收获吗?(接着对这个项目的背景进行了一些追加提问)
Q:内核中的SD Card Driver的工作原理是怎么样的?
Q:SD Card Driver向操作系统提供了什么接口?(接着追问编写SD Card Driver中我们做了什么,我如实回答)
Q:SD Card Driver读取数据是按byte读还是按block读的?
Q:Linux常用操作熟悉吗?(我:还算熟悉吧)现在比如说出现了网速特别慢的问题,你打算怎么调试?
面试官切到代码题
Q:C++里面const变量的值能否通过一个如下的指针(普通的指针)修改?
我答不能修改(貌似错了),面试官追问为什么不能修改,我说编译过程中const应该被放到只读区域了,不能修改...
面试官追问ELF文件格式,我勉强说了几个,又问.bss
是干嘛用的,我答出来了
Q:快速判断一个机器是big endian或little endian
OS相关的如特权级切换、内核启动以及物理内存分配并不是非常熟悉,需要加强
SD Card Driver什么的既然完全不熟悉,就不应该去强调,不能给面试官问到的机会
Linux常用操作感觉也需要好好加强一下
C++相关的八股文也需要好好看一下
这一轮的面试官水平很高,而且应该是做OS底层优化的工程师,问到的问题完全不和容器/K8s搭边,一直怼着OS相关的东西问,把我问得极其难受,漏洞百出。我发现不仅仅是非常超纲的SD Card Driver我答不上来,就连老师讲过的特权级切换、内核代码启动、物理内存分配我都答得不是很好。基本功不牢靠,真的是要地动山摇...