资源分享地址:【https://github.com/Java9898/Java-Learning-Library】
面试前
蚂蚁的面试挺独特,每轮面试都没有 HR 约时间,一般是晚上 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它时间。
全程 6 面,前五面技术面,电话面试,最后一面是 HR 面,现场面。
一面
- 介绍一下自己
- 问项目经历, 聊"数据同步"
- 接着聊上了 K8S 的项目
- 有没有什么钻研得比较深得技术?(我:kubernetes, golang, prometheus, java)
- kubernetes 的架构是怎么样的?
- 这个问题很大,拆成 apiserver、controller、kubelet、scheduler 讲了一下
- golang 与 java 的比较
- 这个问题又很大,当时主要对比了 vm、协程支持、面向对象和泛型的区别、以及自己对各自使用场景的一些理解
- golang 的 gc 算法
- 知道是三色标记,不过细节说不上来
- 从无限的字符流中, 随机选出 10 个字符
- 没见过也没想出来,查了一下是蓄水池采样算法,经典面试题,没刷题吃亏了
- 怎么扩展 kubernetes scheduler, 让它能 handle 大规模的节点调度
- 单节点提速:优选阶段随机取部分节点进行优选;水平扩展 scheduler 节点,pod 做一致性 hash 来决定由哪个 scheduler 调度
- 你有什么想问我的?
- 一面其实有点僵,我自己完全没放开,面试官对我的回答没有什么反馈和深入,都是"哦好的"然后就过了。所以我当时面完觉得自己其实已经挂了(我自己要是对候选人不感兴趣,有时候也就问完问题走个过场溜了),后来收到二面电话着实吃惊了一下。
二面
- 先聊了聊项目
- 给 Prometheus 做了哪些改动?
- 自研配置中心, 具体做了哪些内容?
- 有用过 MySQL 的什么高级特性吗?