本文起源于有同窗留言回复说想了解下MySQL DBA面试时可能涉及到的知识要点,那咱们今天就来大概谈谈吧。mysql
MySQL DBA职位最近几年特别热门,很多朋友让我帮忙推荐什么的,也有不少公司找不到合适的DBA。缘由很简单,优秀的人才要么被大公司圈起来了,要么被创业公司高薪挖走,若是你既不是大公司,又不能出得起高价钱的土豪公司,想要找到优秀人才的概率堪比买彩票中奖的几率,哈哈。面试
本文能够做为MySQL DBA面试官,以及候选人的双向参考 :)sql
接下来先说下我以往在作MySQL DBA面试时的过程(套路):数据库
1.先自我介绍后,再让候选人花2-5分钟作下自我简介安全
有很多人可能对自我简介这个环节嗤之以鼻,以为画蛇添足,尤为是技术能力相对较好的更是如此。其实否则,经过短短2-5分钟的自我简介,很快就能考察出候选人是否有用心准备本次面试,其概括总结能力,以及我的自信心等多方面信息。服务器
所以,若是候选人看中此次面试机会的话,还请好好作下功课,作足准备。好比了解下目标公司的大体状况,主营业务,产品特点。可能的话,找同行打听可能的面试官背景信息,没准是校友、之前在同一家公司呆过、或者有其余共同点,这可能会使得面试过程更为顺利。网络
有心的候选人在面试官自我介绍时,就能够趁机也考察对方的状况。一般第一轮面试官极可能是你将来的直接主管,从面试过程当中你和对方的沟通交流是否顺利也可预见到将来工做上配合的顺利程度。数据结构
2.暖身完,就开始进入主题,从候选人的简历入手,挑选其中感兴趣的关键点逐条交流,有几个要点:架构
和应聘职位关联性较高的技术要素,须要逐个过一遍,大体了解候选人对于这些技术要素的掌握程度;运维
挑选2-3个技术关键点,对候选人穷追猛打深刻探讨,了解其真正的掌握程度,是泛泛的了解,仍是知其因此然的那种,由此也能够考察候选人的学习方法、心态,是随波逐流抑或专精专一。
候选人每次跳槽经历也须要关注,究竟何种缘由致使跳槽,每次跳槽是否其职业层次也跟着提升。由此考擦候选人的职业规划是否清晰,是否过于随性(任性)。不然的话,可能在下一家公司也待不了多久就会由于各类缘由(最多见的就是薪资、或者对主管不服气)而跳槽。
候选人简历中特地说起的重点项目、事件、荣誉,也能够作深刻的交流。
3.重点技术要素考察完毕,能够聊聊职业发展等其余方面的话题,好比
为何选择我司;
若是还有其余公司的机会,如何权衡选择哪一个offer,最主要的判断标准是什么;
指望什么样的工做环境,团队环境,以及哪一种风格的主管;
对什么事情最在意,或最不在意;
除了薪资福利,对公司、工做的指望是怎样的。
具体到技术实力考查上,一般能够关注几个要点:
基础知识,尤为是一些理论知识,例如:
MySQL有哪些索引类型,这是个半开放式命题;
从数据结构角度可分为B+树索引、哈希索引、以及不经常使用的FULLTEXT索引(如今MyISAM和InnoDB引擎都支持了)和R-Tree索引(用于对GIS数据类型建立SPATIAL索引);
从物理存储角度可分为汇集索引(clustered index)
、非汇集索引(non-clustered index)
;
从逻辑角度可分为主键索引、普通索引,或者单列索引、多列索引、惟一索引、非惟一索引等等。须要掌握这些不一样概念之间的区别,例如主键索引和惟一索引的区别是什么
。
为何InnoDB表最好要有自增列作主键;
为何须要设置双1才能保证主从数据的一致性;
有几种binlog格式*,及其区别是什么;
如何确认MySQL replication真正的复制延迟是多少;
有过哪些印象深入的实践经验。
经过考察候选人的基础知识掌握程度,可侧面反映候选人对学习的态度,是否仅浅层面的了解。
核心关键技术能力,例如:
怎么作的MySQL备份恢复方案及策略,为何那么作,用什么工具;
MySQL主从复制的具体原理是什么,实际使用过程当中,遇到过哪些坑,怎么解决的;
对一个大表作在线DDL,怎么进行实施的才能尽量下降影响;
MyISAM和InnoDB都有哪些不一样之处;
InnoDB的体系结构是否能讲的清楚,至少说出个大概;
假设如今服务器负载很高,都有哪些性能问题排查思路,以及优化的方案;
什么是死锁,什么是锁等待,如何优化;
关于MySQL及InnoDB优化,讲讲本身的看法或者实践经验;
如何肯定及实施MySQL高可用方案,不一样方案的优缺点对比;
必定规模的MySQL自动化运维经验如何;
在SCHEMA设计方面的经验如何;
基于MySQL所作过的一些数据库架构方案设计、实施经验。
经过考察候选人对这些核心关键技术的掌握程度,可知晓候选人对深层次知识的掌握状况,除了实践,理论方面掌握了多少。
发展潜力以及学习能力,例如:
对Linux的掌握程度,以及
Shell
、Python
、Perl
等经常使用运维开发语言的掌握程度;对服务器硬件设备,存储设备的了解程度;
对信息安全,网络知识的了解程度;
其余语言,例如
C
、C++
、JAVA
、PHP
、GO
是否有所了解。
这些知识对通常的DBA可能不过重要,但想要成为资深DBA或数据库架构师的话,这些知识是必不可少的。