5

【第四十五期】社招面经-后端开发 PINGCAP

 2 years ago
source link: https://studygolang.com/articles/35570
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【第四十五期】社招面经-后端开发 PINGCAP

itmrtan · 1天之前 · 290 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    

一面 面试官给的项目要求大体是这样: 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 了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK