跳槽可阅!互联网公司DBA面试指南集锦!

自动化运维时代,最先受到影响的就是DBA。传统意义上,这类工程师是一个要求较高但在整个IT体系中所获认可度不高的角色。在大多数人的认知中,DBA的工作基本相当于消防员,哪里有火就灭哪里,每天的大部分时间都用在基础运维和系统修复上,没有精力关注更有价值的事情,DBA应该如何成长?AI时代,DBA的生存模式应该如何转变呢?

  本文总结了部分一线互联网公司对DBA的面试要求,希望对所有DBA的职场进阶有所帮助。(注:以下所列面试题并不特指Oracle DBA或者MySQL DBA)

 百度

  百度DBA的面试共分三轮进行,面试与笔试相结合,有时也会加入电话面试。对于所有公司的DBA而言,基础概念都是必须掌握的,比如触发器、存储过程、索引、内存泄漏、事务、视图等,本文就不对这些概念进行赘述了。除了基础概念,百度可能会根据目前的业务发展特点询问求职者可能的解决方案,比如有关海量数据的数据库优化方法等问题,笔试环节求职者会拿到一张试卷,涉及的题型有选择、填空、算法、简答和设计题,运维研发和DBA后面的大题会有不同,笔试前务必认真准备操作系统和计算机网络相关知识,DBA务必认真了解MySQL或者读一下《高性能MySQL》这本书,会有很大帮助。

  百度对基础概念十分看重,对技术实践水平同样很看重,面试题部分会考察很多与具体应用相关的问题,比如上面提到的海量数据的数据库优化问题,根据此前面试者的反馈,该问题有三种解决方案,分别是约束、触发器和自写业务逻辑。使用约束,比如check、主键、外键、非空字段等更加方便并且效率更高;使用触发器可以保证业务系统访问数据库时的数据完整性和一致性;自写业务逻辑也是一种解决方法,但编程复杂且效率低下。其他曾经被问到的面试题有:给定一段有序链表和结点,写出一段算法可以实现将结点插入到链表中,同时返回一个新的有序链表头指针;给定两个有序链表,要求编写一个函数把两个链表合成一个新的有序链表并返回头指针(注意:这道题要求一分钟内给出两种算法);画图详细逐步分析滑动窗口过大和滑动窗口过小;存储过程的概念以及优缺点是什么?写出一个存储过程的大概代码,如何在项目中应用并产生了哪些问题;现有N个球,两个人交替取球,每次取的数量是1~M之间的一个数,规定谁先取到最后一个算胜利。如果让你先取,你的必胜策略是什么等问题。

  最后也会穿插一些表达个人观点和想法的题目,比如你能为百度带来什么?你是因为对DBA这个职业不了解而喜欢它,还是因为了解而喜欢?你什么时候会因为什么事情感觉到压力过大,如何解决?你对自己的笔试部分有哪些评价?等问题。

 美团

  面试轮次可能有三轮,但很多人都止步于第二轮,第一轮是电话面试,后两轮是现场面试。电话面试主要就是简单沟通求职者意向以及考察求职者的MySQL基础,面试环节的问题会明显比电话沟通环节难很多,非常考察求职者对细节性问题的思考和观察力。如果你是校招或在宣讲会上投简历,那么你可能也面临着一张笔试试卷,美团的技术类笔试题几乎都是基础算法编程类还有一些测试类题目,虽然基础,但可能会被人忽略。

  计算机网络、操作系统以及MySQL同样是问题的考察重点,曾经被问到的面试题有Linux中硬链接和软连接的区别;mha的实现原理是什么,如何实现补齐差异的binlog;MySQL中双写的原理是什么,为什么会用到双写;pt在线更改表结构的原理是什么,会不会锁表等,美团面试官可能会针对一个问题不断追问,回答问题就好,不要莫名提起自己可能并不熟悉的技术,面试前还是应该多看看数据结构和计算机网络相关方向的知识。

 阿里巴巴

  阿里巴巴内部不少DBA方向的技术人会不定期分享自己一路走来遇到过哪些问题,如何进入阿里巴巴并成长为一名DBA的,这些对求职者而言都是值得关注的且有价值的信息。阿里巴巴也会在自己的平台上发布一些技术类文章或者举办一些线上线下的交流会,有意向的求职者也要记得关注。

  在面试部分,曾经被问到的面试题大致可以分为SQL tuning类、数据库基本概念类、备份恢复类以及系统管理类。第一类可能被问到的面试题有列举几种表连接方式;在不借助第三方工具的前提下,如何查看SQL执行计划;如何使用CBO以及CBO和RULE之间的区别;如何定位重要(消耗资源多)的SQL;如何跟踪某个sessione的SQL等。第二类都是概念考察,比如pctused and pctfree表示什么含义,有什么作用,描述tablespace和datafile之间的关系等,此处不做过多赘述。第三类可能包括归档的含义;如果一个表在2004-08-04 10:30:00被drop,在有完善归档和备份的情况下,如何恢复等。第四类有对于性能存在问题的系统,你的诊断处理思路是什么;列举几种诊断IO、CPU和性能状况的方法;如果系统需要在很大的表上创建索引,会考虑哪些因素,如何做以尽量减少对应用的影响等。(以上问题可以在网络上找到部分答题者的回答,由于答案参差不齐,此处就不一一展示了)

  进入阿里巴巴,软件具备的同时硬件也要过硬,校招对学历要求较高,社招对从业经验、项目经历要求较高,所以投递简历之前务必先审核一下自己的硬件条件是否过硬。

  腾讯

  腾讯的面试由笔试和面试组成,面试可能是2对1的模式。根据部分求职者的反馈,笔试题并不会太难,主要是基础知识的考察,腾讯一般都不会在笔试阶段放大招,但是虽说不难,但挂的人还是不少,越是基础的东西越是容易记不住。

  面试主要分为两部分,知识面的考察和过往经历的考察。面试官会先了解求职者擅长且熟悉的数据库类型,根据相应类型出题考察。然后,考察求职者的过往项目经历、处理过的重大事件以及事件反思和回顾等,对于平时善于总结和思考的DBA而言,这个问题很容易回答。总体来说,腾讯并不会抓着技术这一条线问得很深,基础够扎实且善于总结反思的DBA还是很有希望通过面试的。

  58同城

  58同城的DBA面试题分为笔试和面试两部分。笔试部分还是一些基础概念的考察。面试部分,面试官会根据笔试情况进行,同时会穿插一些简单算法和语句的考察,比如根据有一个表Student,其中属性有学号Sno、姓名Sname、性别Ssex,请写一个SQL语句查找男女生各有多少人写一个SQL语句;写一个程序查找两个字符串中最长重合子字符串(算法题,在纸上手写代码或者给出思路);有一个字符串,还有另一个字符串,求第二个字符串在第一个字符串中的出现次数,你能想出多少种方法,并给出算法思想。简单面试题可能会被问到数据库使用的数据结构、TCP/UDP的内容、用过的Linux版本、项目经历介绍等。

网易

  互联网公司校招时更倾向于让面试者先笔试,社会招聘一般是两面技术,一面人力。校招试卷的组成部分是基础概念考察和两个算法题,涉及Linux基本命令、SQL语句、索引、数据优化方向。社招会根据求职者的项目经验发问,比如最有收获的项目是什么,其中用到的主要技术都有哪些,遇到过哪些难题,如何解决的以及某类数据库(SQL Server、Oracle以及MySQL)分析方向的查询分析、查询重写、代价估计、执行计划、存储管理等,面试官会根据这个过程中涉及的知识点逐个询问。

  技术面可能被问到的面试题有数据库隔离级别并举例说明、Linux IO调度的几种方式、平时调式代码的习惯、数据库索引的实现、B树索引查找数据的过程等,也会包括一些主观问题,比如数据库工程师的职责是什么等。人力主要是对简历和真实性和性格的考察,这里要注意——言多必失,说重点就可以,尤其是性格部分。面试过程中如果有不清楚的问题,直接向面试官做出说明,注重细节,不要含糊不清得试图混过去。

  京东

  京东的整体面试分为会相对轻松,在未录用到所投岗位时,面试官也会根据面试结果决定是否推荐到其它适合的岗位。京东在招的主要是MySQL DBA,主要是负责京东MySQL生产环境中各种问题的定位和解决、MySQL相关架构组的设计以及优化方案制定、MySQL数据库相关项目的开发,面试中MySQL相关问题肯定会被挖的很深,所以求职者需要提前做好准备。

  此外,京东对硬件以及Linux方向的考察会多于其他几家公司,这可能与其内部需求相关,求职者务必提前做好充分准备,对计算机网络、操作系统等知识重新全面梳理复习。

  综上,互联网公司内部对MySQL和Oracle的需求较大,求职者可先对企业目前在使用的数据库进行简单了解,但MySQL相关问题几乎是所有面试必问题,笔试部分基本是对基础概念的考察,计算机网络、操作系统和SQL相关知识是考试重点,对于自己的项目经验一定要真实填写,尤其是细节部分一定要多次确认,很多面试官都有抠细节的习惯,以免被连续追问而冷场。

如果你想学好JAVA这门技术,也想在IT行业拿高薪,可以参加我们的训练营课程,选择最适合自己的课程学习,技术大牛亲授,8个月后,进入名企拿高薪。我们的课程内容有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,q群号为:180705916 进群免费领取学习资料。

你可能感兴趣的:(跳槽可阅!互联网公司DBA面试指南集锦!)