• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
iMySQL的介绍
发布日期:2016-4-25 20:4:46

    一、背景

  写本文的目的是有同学留言回复说,想了解下MySQL DBA面试时可能涉及到的知识点,那么今天在本文里我们就来大概谈谈。

  近几年MySQL DBA职位是特别热门的,有不少朋友让我帮忙推荐什么的,也还有很多公司找不到合适的DBA。原因其实很简单,优秀的人才要么被大公司圈起来了,要么被创业公司高薪挖走,若你既不是大公司,又不能出得起高价钱的土豪公司,想要找到优秀人才的几率其实堪比买彩票中奖的概率。

 

  二、面试流程

  接那么先说下我以前在做MySQL DBA面试时的过程(套路):

  1.先做自我介绍,让候选人花2-5分钟做下自我简介

  可能有不少人对自我简介这个环节嗤之以鼻,认为多此一举,尤其是技术能力相对较好的更是如此。其实不是,通过短短2-5分钟的自我简介,很快就能考察出候选人是否有用心准备本次面试,其归纳总结能力,以及个人自信心等多方面信息。

  所以,若候选人看中这次面试机会的话,还请好好做下功课,做足准备。例如了解下目标公司的大致情况,主营业务,产品特色。如果可能的话,找同行打听可能的面试官背景信息,没准是校友、以前在同一家公司呆过、或有其他共同点,这可能会使得面试过程更为顺利。

  在面试官自我介绍时,有心的候选人就能趁机也考察对方的情况。往往第一轮面试官很可能是你未来的直接主管,从面试过程中你和对方的沟通交流是否顺利也可预见到未来工作上配合的顺利程度。

  2.热身完,就开始进入主题,从候选人的简历入手,挑选其中感兴趣的关键点逐条交流,有几个要点:

  与应聘职位关联性较高的技术要素,需要逐个过一遍,大致了解候选人对于这些技术要素的掌握程度;

  挑选2-3个技术关键点,对候选人穷追猛打深入探讨,了解其真正的掌握程度,是泛泛的了解,还是知很深入的了解那种,这样也可以考察候选人的学习方法、心态,是随波逐流抑或专精专注。

  候选人每次跳槽经历也需要关注,究竟何种原因导致跳槽,每次跳槽是否其职业层次也跟着提高。由此考擦候选人的职业规划是否清晰,是否过于随性(任性)。否则的话,可能在下一家公司也待不了多久就会因为各种原因(最常见的就是薪资、或者对主管不服气)而跳槽。

  候选人简历中特意提及的重点项目、事件、荣誉,也能做深入的交流。

  3.重点技术要素考察完毕,可以聊聊职业发展等其他方面的话题,如以下几点:

  1.   为什么选择我司;
  2.   如果还有其他公司的机会,如何权衡选择哪个offer,最主要的判断标准是什么;
  3.   期望什么样的工作环境,团队环境,以及哪种风格的主管;
  4.   对什么事情最在乎,或最不在乎;
  5.   除了薪资福利,对公司、工作的期望是怎样的。

  二、专业技术考察

  具体到技术实力考查上,我们通常可以关注下面的几个要点:

  1.基础知识考察

  基础知识,特别是一些理论知识,例如:

  问题1:MySQL有哪些索引类型,这其实是个半开放式命题;

  (1)从数据结构角度可分为B+树索引、哈希索引、以及不常用的FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)与R-Tree索引(用于对GIS数据类型创建SPATIAL索引);

  (2)从物理存储角度可分为两种:聚集索引(clustered index)、非聚集索引(non-clustered index);

  (3)从逻辑角度可分为主键索引、普通索引,或单列索引、多列索引、唯一索引、非唯一索引等等。需要掌握这些不同概念之间的区别,比如主键索引和唯一索引的区别是什么。

  问题2:为什么InnoDB表最好要有自增列做主键;

  问题3:需要设置双1才能保证主从数据的一致性的原因;

  问题4:有几种binlog格式*,及其区别是什么;

    问题5:如何确认MySQL replication真正的复制延迟是多少;

  问题6:有过哪些印象深刻的实践经验。

  我们通过察候选人的基础知识掌握程度,可侧面反映候选人对学习的态度,是否仅浅层面的了解。

  2.核心技术能力考察

  考察核心关键技术能力,比如:

  (1)怎么做的MySQL备份恢复方案及策略,那么做的原因,用什么工具;

  (2)MySQL主从复制的具体原理是什么,实际使用过程中,遇到过哪些坑,怎么解决的;

    (3)对一个大表做在线DDL,如何进行实施的才能尽可能降低影响;

  (4)MyISAM与InnoDB都有哪些不同之处;

  (5)InnoDB的体系结构是否能讲的清楚,至少说出个大概;

  (6)假设现在服务器负载很高,都有哪些性能问题排查思路,以及优化的方案;

  (7)什么是死锁,什么是锁等待,如何优化;

  (8)关于MySQL及InnoDB优化,讲讲自己的见解或者实践经验;

  (9)如何确定及实施MySQL高可用方案,不同方案的优缺点对比;

  (10)一定规模的MySQL自动化运维经验怎么样;

  (11)在SCHEMA设计方面的经验怎么样;

  (12)基于MySQL所做过的一些数据库架构方案设计、实施经验。

  (13)通过考察候选人对这些核心关键技术的掌握程度,可以知晓候选人对深层次知识的掌握情况,除了实践,理论方面掌握了多少。

  3.潜力考察

  发展潜力与学习能力,比如以下的:

  (1)对Linux的掌握程度,以及Shell、Python、Perl等常用运维开发语言的掌握程度;

  (2)对服务器硬件设备,存储设备的了解程度;

  (3)对信息安全,网络知识的了解程度;

  (4)其他语言,例如C、C++、JAVA、PHP、GO是否有所了解。

  这些知识对一般的DBA可能不太重要,但是想要成为资深DBA或数据库架构师的话,这些知识是必不可少的。