面试流程概述
简历筛选:首先通过简历筛选,主要关注的内容包括候选人的数据库项目经验、SQL功底、数据库优化案例等。建议在简历中突出自己在大规模数据处理和数据库性能调优方面的经验。
技术面试(通常1-2轮):
基础知识考察:包括数据库原理、索引结构、事务管理等。可能问到的问题:
事务隔离级别:了解数据库的ACID属性,以及不同隔离级别(如READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)的区别和适用场景。问:"在MySQL中,REPEATABLE READ如何防止幻读?"
索引的类型和使用:包括聚集索引、非聚集索引、联合索引、全文索引等。问:"聚集索引和非聚集索引的区别是什么?各自的优缺点是什么?"
数据库锁机制:包括行锁、表锁、共享锁和排他锁的使用。问:"在高并发场景下,如何避免死锁?"
SQL查询与优化:
手写SQL:考察多表关联查询、复杂的子查询等。比如,可能会给出一个包含多表的复杂业务场景,让你手写SQL进行数据统计或汇总。问:"有一张订单表和用户表,请写出查询每个用户最近一笔订单的SQL语句。"
SQL性能优化:给定一个较慢的查询语句,要求优化。面试官可能会问你会从哪些方面入手。常见优化手段包括使用索引、重构SQL语句、减少子查询、利用分页、以及查看执行计划。问:"如何查看MySQL查询的执行计划?你会如何优化这个查询?"
系统设计与分布式架构:
数据库分区与分片:考察如何设计大规模数据库的分区、分片策略,以应对高并发和海量数据的存储需求。问:"如何设计一个支持水平扩展的数据库架构?"
高可用与容灾:可能会讨论数据库的高可用架构(如主从复制、分布式数据库方案等)和数据备份与恢复策略。问:"如何设计一个MySQL的主从复制方案?当主库故障时,如何进行故障切换?"
算法与编程能力:
尽管主要关注数据库知识,但也会涉及到一些基础的算法问题。比如,数据结构(如链表、哈希表、树结构等)在数据库系统中的应用。问:"设计一个LRU缓存,并解释它在数据库中的应用场景。"
编程语言的使用:主要以Python、Java或C++为主,面试中可能会要求你编写一个简单的函数或脚本。
十一长假回来后百度就开始笔试。在笔试百度前已经笔试面试过一些企业,加上十一的准备,还是很有信心的。
笔试。周六的上午,人特别多,运维是一套卷,题型包括选择、填空、算法、简答和设计题。运维研发和dba在后面的大题不同,前面选择填空简答一致。选择很多是操作系统和计算机网络方面的知识,知识点考察的很细,需要在笔试前好好复习操作系统和计算机网络。填空也有些操作系统方面的知识。算法是考了一个很相对简单的,使用递归就可以解决。简答是说明tcp/ip 四层协议。后面的运维dba单独有几道选择题,全是考察数据库的,主要是mysql。如果读过《高性能mysql》并且有一定实际经验,这部分也是通过。最后的程序设计记不太清了,大意是文件中存储了很多条数据,设计一个模式能够快速访问。我应用B-tree设计了一个模式。笔试除了选择题其他感觉还可以,在面试中发现才57分,哎,不及格,满分100。但是没有原来听说的那样是变态级别,考察很多操作系统和网络的知识点。对于研发的试卷,认识的一个女生考了87分,那个女生后来获得了微软、google的offer,相对个例了。笔试结束的当天晚上就通知第二天上午面试,效率相当高。
一面,技术面。在宾馆中1对1面试。这一轮技术面,面试的很全面。从mysq优化、mysql索引、锁、存储引擎区别、linux命令、shell写法、tcp握手过程、进程线程区别等等。范围很广,也简单讨论了我做的项目。一个小时左右的面试,感觉波澜不惊,和面试官沟通也很顺畅。
十一长假回来后百度就开始笔试。在笔试百度前已经笔试面试过一些企业,加上十一的准备,还是很有信心的。
笔试。周六的上午,人特别多,运维是一套卷,题型包括选择、填空、算法、简答和设计题。运维研发和dba在后面的大题不同,前面选择填空简答一致。选择很多是操作系统和计算机网络方面的知识,知识点考察的很细,需要在笔试前好好复习操作系统和计算机网络。填空也有些操作系统方面的知识。算法是考了一个很相对简单的,使用递归就可以解决。简答是说明tcp/ip 四层协议。后面的运维dba单独有几道选择题,全是考察数据库的,主要是mysql。如果读过《高性能mysql》并且有一定实际经验,这部分也是通过。最后的程序设计记不太清了,大意是文件中存储了很多条数据,设计一个模式能够快速访问。我应用B-tree设计了一个模式。笔试除了选择题其他感觉还可以,在面试中发现才57分,哎,不及格,满分100。但是没有原来听说的那样是变态级别,考察很多操作系统和网络的知识点。对于研发的试卷,认识的一个女生考了87分,那个女生后来获得了微软、google的offer,相对个例了。笔试结束的当天晚上就通知第二天上午面试,效率相当高。
一面,技术面。在宾馆中1对1面试。这一轮技术面,面试的很全面。从mysq优化、mysql索引、锁、存储引擎区别、linux命令、shell写法、tcp握手过程、进程线程区别等等。范围很广,也简单讨论了我做的项目。一个小时左右的面试,感觉波澜不惊,和面试官沟通也很顺畅。