美团三面合计18道DBA面试题及分析

文摘   职场   2024-11-14 07:07   广东  

作者简介

小6世界五百强产品出身,现任深圳某互联网公司IT负责人,<极客时间>课程讲师。关注小6,带你实战互联网求职面试!



我们今天分享星球里小伙伴去美团面试DBA的真题,共有三轮面试,合计18道题目

一面

1 xtrabackup 原理?其中拷贝数据是以什么为单位?

XtraBackup 备份的原理:

(1)先记录日志序列号(LSN),然后复制InnoDB数据文件。同时,运行一个后台进程来监视Redo Log,如果Redo Log有修改,则从中复制。

(2)加备份锁(使用lock instance for backup语句,8.0才有)。

(3)备份完事务引擎的数据和日志后,锁定MyISAM和其他非InnoDB表。

(4)复制非事务引擎的表数据文件。

(5)查询GTID信息和Binlog位点(使用select server_uuid,local,replication,storage_engines from performance_schema.log_status语句)。

(6)停止复制Redo Log。

(7)释放锁(使用unlock instance语句)。

(8)复制ib_buffer_pool。

(9)备份完成。

Xtrabackup恢复的原理

(1)首先是prepare:模拟MySQL进行崩溃恢复,将Redo Log回放到数据文件中

(2)等恢复完成。重建redo log

(3)将数据文件复制或者移动到MySQL数据目录

(4)还原完成。


2  8.0 的新特性

事务性数据字典

而8.0将元数据信息统一存储到数据字典中,更容易实现DDL变更的原子操作。


快速加列

MySQL 8.0 可以实现大表秒级加列


不可见索引

从MySQL 8.0开始,支持不可见索引,优化器不会主动使用这种索引。

比如我们想知道增加和删除索引对查询性能的影响,就可以考虑使用不可见索引。这个在调试SQL的时候比较有用。


角色管理

MySQL 8.0引入了角色管理,非常方便用户不同,权限相同的场景


hash join

可以用来优化没有使用索引的关联查询

如果被驱动表的关联字段没索引,就会使用 Block Nested-Loop Join(简称:BNL),为什么会选择使用 BNL 算法而不继续使用 Nested-Loop Join呢?下面就一起分析下:

Block Nested-Loop Join(BNL) 算法的思想是:把驱动表的数据读入到 join_buffer 中,然后扫描被驱动表,把被驱动表每一行取出来跟 join_buffer 中的数据做对比,如果满足 join 条件,则返回结果给客户端。

从 MySQL 8.0.20 开始,MySQL 不再使用 Block Nested-Loop Join 算法,并且在以前使用 Block Nested-Loop Join 算法的所有情况下都使用 Hash Join 优化。

将驱动表的数据加载到内存中构建哈希表,

然后逐行读取被驱动表的数据,并通过哈希函数将连接条件的列的值映射为哈希值,去之前构建的Hash表查找匹配的记录,

一旦在Hash表中找到匹配的记录,对这些记录进行一一比较,得出最终的Join结果。

跟Block Nested-Loop Join算法类似,但是不需要将被驱动表的数据块写入内存或磁盘,更少的IO以及更节省资源


3  除了 B+ tree 索引,还知道哪些索引?

一个开放性的题目,应该是考察学习的广度。

各种数据库的各种索引都可以聊聊

比如:

HASH索引

ES的倒排索引

等等。


4 hash索引的原理

会对所有索引列计算一个哈希码,不同行计算出的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时保存指向每个数据行的指针。

哈希索引不是按照索引值顺序存储的,所以不能用于排序

哈希索引只支持等值比较查询,不支持范围查询。


5 自动化运维平台的一些功能

这个是根据小编简历问的,

当时自动化运维平台包括了各种数据库组件延迟探测

慢查询展示页面

数据库当前活跃连接

MySQL备份详情。


6 看过的MySQL 相关的书籍

这个也是一个开放型问题,主要考察平时是否爱学习。

书籍这个自己找下就好,但是一定要自己看过,防止面试官进一步问你书籍里面的内容,最好是记住书籍里的一个知识点,回答的时候顺带说下这个知识点,这就是证明你真的看过。

7 是否有某个业务的全链路监控

这个也是基于当时简历来问的

简历上有写数据库组件的全链路监控

没有某个业务的全链路监控。


二面
8 自动化运维平台有哪些功能
跟第5题一样,也是基于简历上问的。

9 MHA 原理
确定主故障的原理
通过一个死循环检测4次,每次休眠ping_interval秒,持续4次失败,就认为数据已经宕机
检测方法包括:ping_select、ping_insert、ping_connect。
果有二路检测脚本,需要使用二路检测脚本检测到主库宕机才是真正的宕机,否则只是退出死循环,结束检测,不切换。
选主逻辑
MHA在选择新主时,会将所有存活的从库分为以下几类。
  • 存活节点组:所有存活的从节点。
  • latest节点组:选取Binlog最近的从节点作为latest节点。
  • 优选节点组:选取配置文件中指定了candidate_master=1的存活从节点。
  • 劣质节点组:不参与选主的从节点(参数配置no_master=1节点);未开启Binlog的从节点;复制延迟超过一个文件位置或100 000 000个位点的从节点。
选主顺序为从上至下依次筛选。
1)当优选节点组和劣质节点组的数量为0时,选主方式为latest节点组中的第一个从节点。
(2)选择第一个属于latest节点组和优选节点组但不属于劣质节点组的从节点
3)选择第一个属于优选节点组但不属于劣质节点组的从节点。
4)选择第一个属于latest节点组但不属于劣质节点组的从节点。
5)选择第一个属于存活节点组但不属于劣质节点组的从节点

还有二面及三面剩下9道题目及分析,感兴趣的小伙伴可以领下后面的优惠券,进【DBA驿站】星球看下。

1.回复“字节”,获取字节跳动终面(HRBP)10道精选面试题及分析

2.回复“小米”,获取小米(HRBP)10道精选面试题及分析

3.回复“HR”,获取精选20道精选HR面试题及分析

4.回复“DBA简历”,获取DBA简历模板

5.回复“数据库”,获取10道精选数据库面试题及分析

6.回复“简历修改”,获取简历修改方式

7.扫码加群或咨询知识星球,可以加小苏微信。

小6互联网求职面试
主编小6,互联网公司IT负责人,极客时间课程讲师。
 最新文章