Home

Awesome

写在19年初的后端社招面试经历(两年经验): 蚂蚁 头条 PingCAP

去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer。想着可以总结一下经验,分享一下自己这一段"骑驴找马"过的心路历程。当然,一家之言,难免粗浅,如有不妥,敬请指正。

全文有点长,假如只对一家公司感兴趣的话可以直接跳过去:

准备过程

我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找坑的时候是非常非常虚的。迫于心慌,我好好思考了一阵来给自己打气,当时真正找坑和准备面试的过程大概分为这几个阶段:

定位这一步其实花了好几天时间,我先是梳理了自己的项目经历和工作内容的专长,把 Java + Golang,做过的面比较广(业务,中间件,基础架构都做过)以及对 k8s 云原生有专长和兴趣作为自己的"硬招牌"。然后把学习能力强,喜欢沟通合作,渴望挑战作为我的"软招牌",最后把自己定位成一个"在过往经历中展现出了过人学习能力和钻研能力,同时渴望挑战,不愿意呆在舒适区"的形象(妈呀打这段话的时候太羞耻了!!!)。

这个过程中,我的方法论是"换位思考"。自己过去也面试过不少人(所以平时公司让我去面试,虽然累点苦点,但也都是积累呀),并且也和 HR 以及放出 HC 的业务方聊过我们希望放什么样的人进来。因此全程都在以面试官的心态来考察自己:

假如我是面试官,我会招怎样的人进来做我的同事?

举几个例子,下面都是我在这个过程中考虑过的问题(当然只是我自己的喜好):

定位之后,我要找的下一个位置基本锁定在了 PaaS、云原生、中间件方向。那接下来就是找坑了,这段时间"寒冬论"炒的火热,好坑确实挺难找,最后兜兜转转找了四家的内推:Shopee(新加坡)、PingCAP、头条、蚂蚁。Shopee 那边挺遗憾的,12月初投完简历后在1月初进行的第一轮 HR Screen,而当时另几家面试已经临近尾声,于是选择了推掉,后来确认是12月 Shopee 正好在休假,会说中文的 HR 都恰好不在,这也算是机缘巧合了😆Shopee 给我的感觉(虽然只有一面)是非常为员工考虑,HR 小姐姐很客观地帮我梳理了很多去新加坡会带来的利弊得失。大家假如对 Shopee 感兴趣,浩松老师 @haosdent 本人就出现在了 issue 区,可以去找找看😆

这几家的简历投递出去之后,我着重把简历里"埋的几个坑",也就是自己写了"理解并掌握"的语言与中间件以及专门用来勾引面试官问的项目好好复习了一遍。事后发现这一步还挺关键的,很多知识性的内容要是不复习一下真就全忘了,这也算临阵磨枪,不快也光了吧。

接下来就进入正题,逐家讲一下自己的面试体验:

PingCAP

pingcap

面试前

PingCAP 的简历响应是最快的,内推之后第二天 HR 小姐姐就联系了我。电话接通之后先是简单聊了一下人生,然后就是社招三问 ["为啥离职啊?","现在待遇咋样啊?","期望待遇咋样啊?"],天知道这通电话是我开始投简历之后的第一通电话面试,之前还完全没有准备过类似的问题,只能稀里哗啦用["现在自己的技术成长有点碰到瓶颈,加上一直对您公司钦慕有加☺️","我现在待遇是xxx但我司除了base之外还有xxx以及我马上要提薪了🤪","其实比起待遇我更看重平台和挑战(狗头),但是基本的薪资需求我还是希望能xxx🤑"]这样和稀泥应付过去。内心稍稍平静之后小姐姐跟我讲了讲我意向部门的结构和主体业务,然后交代了一下接下来的面试流程,约了"一面"并且加了微信。

"一面"加了引号,这是因为"一面"其实是在微信上布置了一个小项目,然后约定好时间验收。

这里要特别感谢一下 PingCAP 的 HR 小姐姐,加了微信之后全程帮助我协调面试时间并不厌其烦地回答我各种奇奇怪怪的问题,最后谈 offer 的时候还给我准备了一个惊喜。面试体验直接满星<3!

一面

早就听说 PingCAP 一面要写小项目,我自己心里其实是跃跃欲试的。面试官给的项目要求大体是这样:

K8S 容器化之后应用容器里几乎没有什么可用的调试工具,可以利用容器 Namespace 共享的思路,启动一个包含各种调试工具(比如 netstat, gdb)的容器,加入到 pod 的 pid、net 等 namespace 中, 实现对任意 pod 的 debug 功能。现在希望利用 kubectl plugin 机制实现一个插件,用于 debug 任意一个 pod 里的容器,达到 kubectl exec 的使用体验.

当时因为工作日抽不出时间,就隔了几天到周五晚上开始写,周六晚上写完并且把 项目地址 分享到了 Reddit 上。没想到运气不错收了 100 多个 star,这下我就觉得"哦豁,这轮应该稳了吧!"(结果后来发现这几乎是我唯一一把觉得自己"稳了的"面试...)

二面

二面是一位 Cloud 方向的前辈面我,全程大概微信语音聊了50多分钟:

面完之后感觉答得一般,心里有点忐忑。结果第二天 HR 小姐姐就来安排三面了,长舒了一口气。

三面

三面是和整个大部门的 Leader 聊,面试官很能聊(声音还很好听!)而且技术非常全面,全程大概微信语音聊了80多分钟:

简历里的"数据同步"这个项目我是好好复习过自己当年写的调研文档和架构文档的,也做了被问的准备(换位思考,是我我也问。这个其实就是我专门希望面试官来挖细节的项目)。最后确实被问最多的就是这个项目,运气真的不错😁。

四面

四面到了现场面,有两位面试官一起跟我聊,大约聊了 40 多分钟:

四面是纯项目,里面的经验就不太通用了。但这里面有个细节,就是到中途的时候两个面试官互相对了一下"还有什么想问的吗?"我意识到面试官们想问的问题不多了,可时间大约才过了20分钟(面试时间过短是一个 bad smell)。于是之后几个监控的问题我都尽量说得很细,同时顺便提一下"还有一个方面我们当时也做了挺多工作",暗示面试官往下挖的线索。不知道这招有没有奏效,反正这一面算是有惊无险过啦。

五面

技术面到四面就结束了,五面是创始人面(有幸和崔秋大佬聊了20多分钟人生),面完之后就是 offer call 了。

PingCAP 小结

一些主观评价:

这里真的想夸一下 PingCAP(因为面试体验超棒呀!)。投 PingCAP 的初衷是觉得这个团队的工程师文化非常浓,大牛云集,同时 TiDB 够牛逼,项目开源的模式我内心也很认可。只是挂羊头卖狗肉的公司也不少,好多 JD 上写着工程师文化浓郁,其实很多根本不是那么回事儿。但是经过 PingCAP 的五轮面试之后,我实打实地感受到了工程师文化:面试里没有任何一个"刁难人的问题",每一位面试官感兴趣的是我的工程思维、学习能力、技术见解,同时还非常热衷于与我讨论和深挖一些坑与技术决策。这种感觉就很爽:面试官是懂我的,我作为工程师的思维能力与技术见解得到了认可与尊重。 这种氛围是口号喊不出来的,因为它的硬性指标就是这其中的每一个人要热爱技术并且工程经验丰富。

蚂蚁

ant

面试前

蚂蚁的面试挺独特,每轮面试都没有 HR 约时间,一般是晚上 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它时间。

全程 6 面,前五面技术面,电话面试,最后一面是 HR 面,现场面。

一面

一面其实有点僵,我自己完全没放开,面试官对我的回答没有什么反馈和深入,都是"哦好的"然后就过了。所以我当时面完觉得自己其实已经挂了(我自己要是对候选人不感兴趣,有时候也就问完问题走个过场溜了),后来收到二面电话着实吃惊了一下。

二面

题目是这样的:

启动两个线程, 一个输出 1,3,5,7…99, 另一个输出 2,4,6,8…100 最后 STDOUT 中按序输出 1,2,3,4,5…100

我: 我用 Go 实现吧

面试官: 不可以,用 Java 的 notify 机制实现

我: (还没意识到问题的严峻) 那我用 Java BlockingQueue

面试官:说不可以, 要求用 Java 的 wait + notify 机制来实现

我完全没写过 wait + notify,只能表示不会(菜鸡本鸡了), 面试官说那行吧你可以用 go 写

最后用 go channel 实现了一版, 不过给的网页上不能运行代码,也不知道写得对不对,然后面试结束。

这一轮面试官延续了一面的风格,问完一题就赶忙下一题了,似乎没有表现出对我的回答有兴趣或认可。因此这轮面完,我又觉得自己挂了...

三面

这轮聊得顺畅多了。同时发现蚂蚁的面试官似乎挺喜欢让你自己评价自己的:"你觉得自己 xxx 掌握得怎么样?"(只有五位面试官,样本不够大,不能作数哦),这类问题其实我慌得要死,怕自己吹过头了答不上来,面试挂了事小,丢了面子事大。早知道就预习一下怎么吹嘘自己了。

四面

这一轮全程问的基础知识,基础扎实的话就没问题了,不过个人感觉有一点像校招的问法。

五面

五面最后的三个吹水问题我还挺感兴趣,可惜面试官只是听我讲,没有跟我讨论。还有就是问了面试官才知道,二面四面的面试官是 PaaS 平台那边的,因此主要问 Java 没有涉及到 k8s 和 go。

六面

HR 面,之前就听说过阿里系的 HR 是来"闻味道的"(看你是否适合阿里的风格),而且有一票否决权。所以还是挺有压力的。

整体聊了 40 多分钟,话题挺广的,面试官也说了系统部这边压力挺大的,优秀的人才才能留下来。个人觉得 HR 面里除了谈薪酬的部分没有什么可准备的,想说什么直说就行。因为到了 HR 面至少证明你的技术没什么问题,直说出来方便 HR 判断两边的价值观是否合拍,假如真的不合拍,那其实在 HR 这一面挂了比起进去之后再后悔又跳槽要好很多,毕竟大家都不喜欢频繁跳槽的简历。

小结

一些主观评价:

蚂蚁的面试风格比较"高冷",面试官给我的一致感受就是很强,卧虎藏龙。面试内容上在基础知识部分相对考察得多一些,没有偏门和猎奇的问题,基础知识扎实的同学可以大胆投投看蚂蚁。

头条

bytedance

面试前

头条每次面试前会有 HR 约时间,并提前发一个 zoom 地址过来,三场技术面与一场 HR 面全都是视频面试。不得不说视频面试体验比电话面试好很多(尤其是对我这种很关注面试官反应的),假如有 HR 同学看到这篇文章,推荐考虑一下用视频面试取代电话面试,效率会更高。

头条的三场技术面风格都很类似:

  1. 问项目,抓出一些你擅长的领域或场景
  2. 问系统设计题,每题都会不断深化需求让你应变和权衡
  3. 问一道算法题(不难不偏),先看思路,再要求写一下伪代码看边界条件能不能一次过

这个面试流程我自己也一直在用,尤其是系统设计加上不断的需求变更,能比较全面地考察后端的基本功和工程思维。因此头条的面试套路很对我胃口,甚至好多类似的问题我自己也都问过候选人。

一面

限流,分布式锁,UUID 都属于后端的经典面试题,这轮面试的参考价值挺大的。

二面

二面问了好多中间件的基础知识,最后都没有时间问算法了。面完之后心里就想:头条的面试真是耿直啊,Java 的 HashMap、锁机制、CAS 到 MySQL 的索引,Redis 的 zset,再到 LSM 树,全都是后端或中间件相关的热门面试题。当然这些问题热门也是有原因的,即使候选人准备过,多扣一点细节也能很快就能看出来候选人是真的理解还是仅仅只是看了相关资料。

三面

我觉得三面这个架构设计问得还不错,一个问题把后端的工程能力考的很全面了。

HR 面

大同小异,问经历,问离职原因,问职业规划,问待遇,问期望。

小结

头条面试流程很专业:每轮都会提前约好时间,面试时长都在40~50分钟,按时开始面,每轮之后发反馈短信邀请候选人评价面试,精准地过两天再约下一轮。整个像一台精密运作的机器。头条的面试我个人挺欣赏的,考察得比较全面,面试官会抓住你没有说清楚的地方来深入或者变换场景让你应变,大家可以试试看去面一下,即使不打算去也可以作为一次免费的能力评定。

再说说面试官,每位面试官都听得出来是在一线写代码的,而且很认真地在听我说话(这当中有视频的功劳,我可以看到面试官在认真听),感觉工作中也都会是好相处好合作的类型。

总结

回头看面试的过程,有好多不尽如人意的地方,不过最后能够拿到三家的 offer 还是很幸运。最后再做一些补充性的小结:

一些经验:

一些各领域的资料与心得:

repo 关闭了 issue 功能, 您可以在 我的博客 中进行相关讨论(不过目前 heading anchor 还没加上, 阅读体验不如 github 的 md), 也可以直接通过我的邮箱(见 profile)进行交流, 感谢您耐心地看完全文!

补充

笔者最后去了 PingCAP, 原因也很简单, 大公司想去总是能找到机会去的, 而登上 Rocketship 的机会可不多

这里也打个广告, 假如想一起来搞 TiDB, 欢迎发送简历到 wuyelei@pingcap.com, 我帮您内推😆(多嘴提一个邮件礼仪的小建议: 标题一定要写清楚😂), 这里是 相关JD

另外, 蚂蚁的 Kubernetes 调度部门也在招人(社招校招都有), Leader 是我一个很靠谱的学长, 大家可以直接发送简历到 tongkai.ytk@antfin.com 内推. 相关 JD

(全文完)

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎