问的主要是k8s相关的东西,问到了源码级别的相关的设计,最后问了下面试官也是开源社区的推动者,入职后也是参与k8s内核源码的开发。
- CRD的原理,问得非常细致,我说分成两个部分一个是client一个是controller,后面试官问api资源从哪里取,队列还是缓存?
- pvc的原理,我说分sc、pv、pvc以及之间的联系。后问是否了解localpvc
- golang中 channel的实现原理
- k8s中阅读过哪些部分的源码,之前看过一点scheduer部分的一些调度算法源码,大概说了下使用greedy进行调度。之后问是否看过scheudler-one的代码,这是啥??看来还得细看啊
- statefulset的原理,如何保证存储与服务的一致
- etcd的原理,cap中抛弃了哪个
- golang gc,三色标记法(感觉就是多步骤的引用计数法),还了解过其他语言的gc吗
- 用golang实现一个消费者生产者模型
- 窗口内的最大值,没有想出最优解,还用到了排序。。
总结:
- 详细看一下k8s schedulerd的设计;
- k8s中一些常见api与controll而对应的逻辑,如statefulset。
- 好久没写题了,有些手生。