聊聊MySQL DBA的面试与被面试(上)

我在《MySQL运维内参》的“读者对象”一节里面对这本书的定位是这么说的:

“如果你是一名技术管理者,期望本书能帮你建立对MySQL数据库的信心,助你完成对数据库方向的技术体系建设。同时也能助你了解MySQL的原理和架构。其中的知识要点,如果你在面试中使用的话,应该能帮你找到你所渴求的那 1% 的顶尖人才。

如果你是一名架构师,期望本书能帮你在MySQL架构上大显身手,本书中介绍到的MySQL Replication,Semi-Sync Replication,Group Replication,Galera Cluster,几乎囊括了所有MySQL架构的基础,一定有一款适合你。

如果你是一名开发者,期望本书能帮助你在开发过程中,充分理解MySQL的原理,设计出合理的数据库表和索引,很好的去利用MySQL的优势,避开MySQL的劣势,合理使用这个优秀的开源数据库。

如果你是一名DBA,真心的恭喜你,本书的知识能助你成为那顶尖的1%。”

在这段话里面,有两个地方提到“1%”。如果从招聘求职的角度来看,第一句涉及到了招聘和面试DBA,最后一句涉及到了DBA的求职和被面试。有人说,这是你写的书,你想怎么写都行,无非是给自己宣传宣传吧了。我想说,这不是信口雌黄的,下面咱们就来聊聊MySQL DBA的面试与被面试,到现在为止,距我第一次面试DBA大概有七年多时间了,这几年先后以技术主管、总监的身份,再加上参加过的校园招聘,我应该跟几百人聊过。

从用人单位或者招人Leader的角度来看,他们想要招到什么样的人来做DBA呢?

我之前曾经谈到“DBA精神”,这里就不重述了。我们从更实际的角度来看招聘的需求:

一个思想道德品质好的人。

数据库管理员岗位特殊,涉及到了公司机密,用户隐私,除了对其有技术和能力本身的需求之外,大家都希望招聘到一个品质好的人。不能弄虚作假,不能欺上瞒下,更不能窥视隐私、监守自盗。在面试过程中,我会关注求职者简历上所写内容与其现场展示出来的现实是否相符,会看此人是否敢于直言还是趋炎附势。

记得我入职校内网的时候,启荣大师问了我一个问题,他笑嘻嘻地问我觉得他有多大,帅不帅之类。我当时那叫一个纠结啊,此人当时胡子拉碴、黑瘦皱巴,我从心底里也不会有好评价啊。当然,后来才知道,他是连续通宵了一周之后成了那样的。

一个表达沟通能力强的人。

DBA的工作是沟通的工作,特别是涉及到架构更新、SQL优化、版本升级、故障处理等等情况的时候,需要跟兄弟部门合作进行,表达的好、沟通的巧,事半功倍、颇有奇效。在面试中,我会惯例性地要求求职者介绍自己以及自己所做过的事情。

这个过程中,其实不是随便听听的,一方面,我会观察他讲述事情的能力,把一件事说明白,并不是所有人都能办得到。另一方面,会从讲述过程中找到一些问题,随机提问,有些问题可能并非MySQL相关,但往往这个时候更能体现一个人的逻辑思维能力和语言组织能力。

一个博闻强志底子厚的人。

这点大家都能理解,毕竟是技术岗位嘛,技术能力还是要看的,谁都想要招一个一上来就是很牛的人,说啥啥明白,干啥啥精通,独挡一面,摆平一方。但,其实这不是必须的。我觉得知识只有知道与不知道之分,牛人与非牛人之间的区别不在于掌握知识的多少,而在于知识理解的深浅。

在面试过程中,我会问很多MySQL相关的技术点,能答出来当然很好,但答不出来也没啥好自卑的,你或者是一个刚刚毕业的应届生,或者是一个刚刚转行到DBA的其他技术人员,就像我也是码了四五年的代码才转行一样,不可能面面俱到。MySQL的技术浩如烟海,能有几人全部掌握呢?我一直跟人说,你这时候要有杀手锏,这个杀手锏,也就是那1%的潜力。也是能给面试官看到的你能力和潜力。

例如,在《MySQL运维内参》中,我们仔仔细细地介绍了“InnoDB日志管理机制”,这里面包括InnoDB Buffer Pool的背景和实现原理,InnoDB物理事务概念和原理,日志原理和机制,日志恢复原理,数据库回滚原理等等一系列的知识点。你可能答不出Group Replication的使用,但如果你能把上面日志的各种机制描述得清清楚楚、明明白白,我相信任何一个面试官不会轻易把你放过。

又例如,我们在《MySQL运维内参》中,详细阐述了InnoDB的B+树的原理。可能几乎所有的MySQL从业者都知道InnoDB是使用B+树做索引的(这个不知道的可以直接祝路上走好了),但每个人能把这个知识点讲到多深的层次,则大都不尽相同,就是面试官也不见得都很清楚,如果表达得当,这是能在面试中一白遮百丑的亮点,希望大家能好好把握。其实,这对面试者来说,也是很好的一个能过滤那1%的人的方法。

一个聪明智慧有爱好的人。

MySQL的发展日新月异,新技术层出不穷。所以合格的MySQL DBA绝对不是墨守成规、裹足不前的人。我们需要聪明智慧的人,需要真正的爱好者,能随着时代和技术的发展,吐故纳新、不断进步。

我在面试中一向有个看家的问题,那就是问问应试者对目前MySQL新技术或者开源方案的看法或者理解。当然,如果你啥都没有关注,那虽然你可能在我这里可以得60分、70分,但绝对不会90分、100分。在《MySQL运维内参》中,我们介绍了半同步复制,多线程复制,MySQL最新的Group Replication,介绍了对JSon以及NoSQL的支持,介绍并行复制的Galera,介绍了审核工具Inception,这些都是目前此领域内的热点,如果你一无所知,或者一知半解,没有理由拿到90分吧。

那么,怎么来面试一个应聘者呢?

我在去哪儿网长期采用了“三堂会审”的方式。这个词有点严肃了,其实说得轻松一点,就是几个人坐在一块随便聊聊而已。我们没有固定的面试题,更没有笔试题,也没有固定的套路和人员组成,也不需要一面、二面、三面之类繁琐的程序,每次面试,我会至少找3个人。跟应聘者坐在一起,大家轻松愉快地聊天就行,当然,也有不轻松的,有个女孩,聊到最后都声若游丝、恐惊天上人了。后来她说,当时她觉得她肯定挂了,但庆幸的是,这人自始至终没有瞎说,相当诚实。

在面试的过程中,一般的问题会是这样:

首先,请你介绍一下你自己吧。要是连自己都介绍不明白的人,就很难往下聊了。

其次,请你介绍一下你的经历吧。这个时候,大部分人都会顺着简历上写的内容,依次说一些工作经历和项目经验。其实对我来说,具体在哪里干过是无所谓的,我没呆过外企,也没进过BAT,无权要求别人必须要咋地咋地。但我要关注几点:

  • 一是你得诚实,会的就说会,不会的就别说。你做的你写,非你做过的,基本上一问就能问明白。

  • 二是你得能说明白,把自己的经历表达出来,不要求你口吐莲花,但也得逻辑清晰吧。

  • 三是,你得能随机应变,面试官有三个人,每个人都会从你说的每一句话里面找出面试的问题。防不胜防。

再次,我会就你写的或者你说的知识技能方面,让你聊聊你的强项。这是门槛问题,也是你脱颖而出的机会,一般来说,在MySQL这个话题上,能聊出来原理和源码的,都会让人刮目相看。这点上,不管是官方文档,还是目前业内有点名气的所谓培训班,都是不能让人满意的。

最后,我会问我的看家问题。你发挥吧,你所说的也许我不知道,但我知道也不会太少,对于上面提到的一些要点,我还是认为一个有爱好的DBA是需要了解的。

作为一个应聘者,我们怎么去准备MySQL DBA的面试呢?上面的内容已经有一些说到了,限于篇幅,我找个时间再单独聊聊吧。

也请看到本文的读者们都来聊一聊,自己是怎么样面试的,你参过过什么样的面试。欢迎留言回复,大家的积极参与是我努力的动力,我们集结成文,把大家的意见一并分享出来,谢谢。

欢迎关注的微信公众号:formysql

    原文作者:周彦伟
    原文地址: https://zhuanlan.zhihu.com/p/26630753
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞