作者 青鸟

2025 春招快要结束了, 总结一下:收获了b站的offer, 网易和腾讯都到了hr面. 我是个不咋喜欢写总结的人,但学习一下老前辈的精神,留给之后的部门小朋友点云原生行业的春招和面试经验.

春招给我的一个教训就是别急, 还是要淡定的.在春招期间,我投了很多很多简历,b站、腾讯、携程、美团、网易、饿了吗、阿里云、淘天等等互联网大中厂,经历了快两个星期的投递,但是收获笔试和面试的却寥寥无几, 有点急躁了. 现在发现是自己太急了, 在接了b站的 offer 后, 面试的通知也慢慢地发过来了, 腾讯和网易的技术面也顺利通过了. 当然在工作后, 现状也是让我很满意, 让我很庆幸自己选择了b站的 offer.

腾讯的面试其实并不算难,多背点八股和刷点题就可以过了, 面试官人也很好, 非常有耐心, 面试的推进比我想象中的顺利多了, 这里就不再赘述了. 让我印象深刻的是 b站的二面和网易的一面, 这两的难度远远超出我的预期. 在b站二面试结束后, 我已经准备好了放弃从事云原生这个行业, 投向java的怀抱. 结果在吃午饭的时候收到了hr电话, 给我侥幸通过了. 站在过来者的角度, 这两次的面试也是很有复盘的价值, 很多问题从八股衍生到了操作系统和网络的基本原理, 也是对我知识的一次查缺补漏了.这篇文章就简述一下b站二面的面筋.

面试从一个简单的问题说起, 容器隔离的原理. 这个问题很简单, 就记一下八股便可以回答上来,这里就不再赘述. 然后便是追问的问题, cgroup 实现资源限制的原理,这里从 cgroup 的几个子系统回答即可,可以拓展说一下 cpu 子系统的底层原理. 然后是比较难的问题了, k8s中的 request 和 limit 的实现原理, 答案这里不赘述, Kubernetes 资源管理 request 和 limit 原理分析. 这个问题问完又追问了一个资源有关的更难的问题, 当节点资源占用满的时候, kubelet 如何实现自我修复, 答案如下: 节点压力驱逐. 问完这个问题,容器资源的问题就问完了.

接下来是网络相关的问题,也是从一个简单的问题开始,容器中的网络如何初始化, 答案简单来说就是通过 pause 和 cni 初始化. 为什么使用pause 容器来初始化容器网络. 这里简述一下答案. 没有 pause 容器,那么 A 和 B 要共享网络,要不就是 A 加入 B 的 network namespace,要不就是 B 加入 A 的 network namespace, 而无论是谁加入谁,只要 network 的 owner 退出了,该 Pod 里的所有其他容器网络都会立马异常,这显然是不合理的. 反过来,由于 pause 里只有是挂起一个容器,里面没有任何复杂的逻辑,只要不主动杀掉 Pod,pause 都会一直存活,这样一来就能保证在 Pod 运行期间同一 Pod 里的容器网络的稳定. 这个问题结束后,面试官说聊聊一个你最熟悉的 cni 如何分配ip. 这里我说的是calico, 会从ippool中分配ip, 其实这个ippool就是个cidr. nat的原理, 这个比较简单, 不再赘述. 由于项目中提到了 pod 原地重建, 说一下 pod 原地重建的原理和原地重建过程中怎么做到流量无损的, 这个参考 cloneset 的设计思路 , 流量无损是用的readinessGate 去做 endpoint 摘除.

然后就是漫长的拷打项目了, 这里重点拷打的是异构设备在 k8s 中使用. 由于和个人经历有关就不赘述,大概就是异步设备的调度和 device plugin 的设备发现以及多进程使用一个异构设备的原理还有 vgpu 的原理.

由于在之前面试的时候提到了阿里巴巴内核上的优化,就额外聊了下阿里巴巴的内核中的 cpu Burst 原理和 cgroup identify 的原理, 衍生出了什么是 cpu 抑制以及阿里内核是怎么去做 cpu 补偿的.

然后简单写了道LRU算法题.

在最后, 提问了有没有项目上线的经验,有没有做什么准备. 这个把环界云的上线经历拿出来说了. 当然了其他还有很多难题, 像是kubelet中Qos的实现原理, 这些问题比较杂,我面试完心也凉了一半,也就没有仔细记录了.

这次面试的强度还是蛮大的, 面试官很专业, 问的问题在事后复盘中给了我不小的收获. 最后也感谢俺家老🐷和牢肉在春招的两个星期里给我的指点和支持💪. 有空的话会补一篇关于网易一面的面筋.

文章引用: