一面
面试官给的项目要求大体是这样:
K8S 容器化之后应用容器里几乎没有什么可用的调试工具,可以利用容器 Namespace 共享的思路,启动一个包含各种调试工具(比如 netstat, gdb)的容器,加入到 pod 的 pid、net 等 namespace 中, 实现对任意 pod 的 debug 功能。现在希望利用 kubectl plugin 机制实现一个插件,用于 debug 任意一个 pod 里的容器,达到 kubectl exec 的使用体验.
二面
二面是一位 Cloud 方向的前辈面我,全程大概微信语音聊了50多分钟:
问项目经历,聊了两个项目对 Kubernetes 了解怎么样,看过源码吗?
Kubernetes 的 Service 是什么概念,怎么实现的?
你刚说到 Informer,Informer 是怎么实现的,有什么作用?
StatefulSet 用过吗?有什么特点?
StatefulSet 的滚动升级是如何实现的?
现在我们希望只升级 StatefulSet 中的任意个节点进行测试, 可以怎么做?这题没有思路,只好强答用"两个 StatefulSet",后来一想起一个新的 StatefulSet 那 PV 里的数据就丢了,其实正确办法是利用 partition 机制,笑容渐渐消失。
Kubernetes 的所有资源约定了版本号, 为什么要这么做?
第二个拿不准的问题,我面试前就反复告诉自己"不要强答"以及"不知道的题就讲思路",于是就说这块代码确实没看过,但是根据微服务 API 的设计理念,版本号的作用有巴拉巴拉。答完似乎面试官还算满意,于是又往下挖了一句:
假如有多几个版本号并存, 那么 K8S 服务端需要维护几套代码?
这题完全不知道,内心逐渐焦灼,立马走老套路"这我没看过 k8s 代码怎么写的无法确定(想表达自己真正看过代码才会确认,凸显自己严谨...我的妈呀),但假如由我来写这份代码(装作非常自信),我会只会维护一份最新的 Model,然后设计对应一个版本段的 Adpater 将老版本的 Model 转化过来巴拉巴拉"。到这里我已经虚的不行了
OK,那接下来我们聊聊 Golang (我:长舒一口气) 看一下这段代码有没有问题(一段 golang for-range 里 goroutine 闭包捕获的代码),为什么?
goroutine 是怎么调度的?
goroutine 和 kernel thread 之间是什么关系?有什么想问我的?
面完之后感觉答得一般,心里有点忐忑。结果第二天 HR 小姐姐就来安排三面了,长舒了一口气。
三面
三面是和整个大部门的 Leader 聊,面试官很能聊(声音还很好听!)而且技术非常全面,全程大概微信语音聊了80多分钟:
给我介绍 PingCAP 相关团队的职责与挑战聊为什么出来看机会,以及未来的职业规划聊我之前做的一个数据同步的项目,大概内容是订阅 MySQL Binlog,sink 到搜索索引、分库分表以及业务事件订阅流中为什么数据同步里选择了 xxxx 开源项目,优势在哪?
订阅分库分表的 Binlog 怎么订阅?
分库分表的数据源中假如存在主键冲突要怎么解决?
怎么保证下游对 Binlog 的消费顺序?
如何在下游保证消费时的事务原子性?
描述了一下 tidb 的 binlog 架构,问这种场景下怎么保证 Binlog 顺序聊一个上了 Kubernetes 的项目,问了一些细节和坑用 Kubernetes 之后,解决了哪些问题?聊我之前做的监控警报项目,问背景和产出Prometheus 单实例数据量级 hold 不住了,有什么解决方案?有什么想问我的?
简历里的"数据同步"这个项目我是好好复习过自己当年写的调研文档和架构文档的,也做了被问的准备(换位思考,是我我也问。这个其实就是我专门希望面试官来挖细节的项目)。最后确实被问最多的就是这个项目,运气真的不错 😁。
四面
四面到了现场面,有两位面试官一起跟我聊,大约聊了 40 多分钟:
聊"配置中心"项目的细节为什么不用 ZK,要自己再写一个"配置中心"配置中心怎么做服务发现的?
怎么做 failover 的?
用 Kubernetes 碰到过哪些坑?
对 Prometheus 做了哪些改动?
对 Alertmanager 做了哪些改动?监控系统怎么做"自监控"?
跨机房的网络问题怎么监控?有什么想问我们的?
四面是纯项目,里面的经验就不太通用了。但这里面有个细节,就是到中途的时候两个面试官互相对了一下"还有什么想问的吗?"我意识到面试官们想问的问题不多了,可时间大约才过了20分钟(面试时间过短是一个 bad smell)。于是之后几个监控的问题我都尽量说得很细,同时顺便提一下"还有一个方面我们当时也做了挺多工作",暗示面试官往下挖的线索。不知道这招有没有奏效,反正这一面算是有惊无险过啦。
五面
技术面到四面就结束了,五面是创始人面(有幸和崔秋大佬聊了20多分钟人生),面完之后就是 offer call 了。
有疑问加站长微信联系(非本文作者))