小米DBA工程师一面

我面试遇到的问题

  1. DBA工程师是做什么的?

    DBA工程师负责数据库管理和维护,涵盖MySQL、Redis等数据库,从运维角度保障数据库系统的稳定性、性能优化及备份恢复等工作。

  2. redis常用的数据结构,他们的作用分别是什么?

    字符串 (String),哈希表 (Hash),列表 (List),集合 (Set),有序集合 (Sorted Set),位图 (Bitmap),HyperLogLog。
    用一个在线电商系统描述的话就是:
    {String:存储商品的详细描述信息},{Hash,存储每个商品的用户评价},{List,存储商品的销售订单,实现订单队列},
    {Set:存储用户的购物车,确保每个商品在购物车中只有一次},{Sorted Set:存储商品的销售排行榜,根据销售数量进行排序},
    {Bitmap,记录用户的在线状态,每个位代表一个用户是否在线},{HyperLogLog:估算网站每天的独立访问用户数}

  3. redis的系统架构?

    Redis系统架构:客户端、服务器、数据存储、持久化、主从复制、哨兵、集群和网络层组成。

  4. redis的分布式所解决秒杀系统问题(数据一致性问题)?

    问题原因:分布式环境下的高并发、网络延迟以及异步操作。
    解决方法:在分布式环境下普通的锁可能引起单点故障、性能瓶颈和可扩展性问题,Redis分布式锁可通过使用SETNXDEL命令实现,确保在Redis中只有一个客户端成功获取锁;

  5. B+树,B-树,B树的区别?

    B+树是一种平衡树数据结构,具有多路搜索树的特性,其中非叶子节点只存储索引信息,而所有数据存储在叶子节点,提供高效的范围查询和顺序遍历。

    B-树是一种平衡树数据结构,具有多路搜索树的特性,每个节点包含多个关键字和子树,保持树的平衡,适用于磁盘存储系统,优化磁盘I/O。

    扫描二维码关注公众号,回复: 17349181 查看本文章

    B树是一种平衡树数据结构,每个节点包含多个关键字和子树,用于在磁盘存储系统中优化查找和插入操作,保持树的平衡以提高性能。

    MySQL创建索引后,通常使用B+树作为数据结构,相比于B树和B-树,B+树更适合数据库索引,因为它在叶子节点上保存所有数据,提供更高的查询性能和范围查询效率。

  6. Redis的备份问题?

    Redis通过持久化机制(如快照和AOF日志)、复制和集群配置等方式来确保数据的持久性和高可用性。

    快照(RDB)是定期全量保存数据库状态的持久化方式,而AOF(Append-Only File)日志是实时追加记录每个写操作的持久化方式,两者区别在于保存的数据形式和对数据变动的处理方式。

  7. mysql中聚簇索引?

    在MySQL中,聚簇索引决定了数据行的物理存储顺序,提高了范围查询和按索引排序的性能,通常由主键索引扮演此角色。

  8. redis怎么降低秒杀系统的qps?

    过Redis缓存热门商品信息、限流、分布式锁、异步处理、热点数据缓存、CDN缓存、横向扩展和本地缓存等手段,有效降低QPS,提升系统性能。

    我采用通过缓存热门商品信息,如商品库存、价格等,可以降低对数据库的频繁查询,提高读取性能。同时,使用分布式锁确保对商品库存减少等关键操作是原子的,防止超卖等并发问题,保障系统一致性。

  9. 一般使用redis的时候容易遇到什么问题?
    秒杀系统中Redis常见问题包括分布式锁的竞争、缓存雪崩、缓存穿透、数据一致性和高并发下的性能瓶颈。

    可采用分布式锁机制、缓存预热、采用多级缓存、数据异步同步和优化Redis性能等方法。

10.DBA工程师还需要什么能力?

​ DBA工程师需要性能优化,安全管理,容灾备份,监控和调优,版本管理,自动化脚本编写能力。

其他面试题:

  1. mysql如何慢查询优化?

    通过使用索引、优化查询语句、适时分表分库、合理配置数据库参数和利用数据库性能分析工具等手段,对MySQL进行慢查询优化,提升数据库查询性能。

  2. 为什么要遵守最左前缀原则?
    最左前缀原则要求在使用复合索引时,查询条件的列顺序必须是索引中列的最左侧开始,以确保索引能够被充分利用,提高查询效率。

  3. mysql锁有哪些?

    MySQL中的锁包括共享锁、排它锁、记录锁、间隙锁、表锁,用于管理并发访问和确保数据一致性。

  4. mysql隔离级别?
    读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable),默认隔离级别是可重复读(Repeatable Read,解决了并发访问中的脏读、不可重复读、幻读等问题。

  5. order by为什么会讲解索引失效?

    因为排序操作可能需要访问大量数据页,而如果索引无法覆盖 ORDER BY 的列,数据库引擎可能会选择全表扫描而不使用索引。

  6. 什么是MVCC?

    MVCC(Multi-Version Concurrency Control)是一种数据库并发控制机制,通过在同一时间保留多个事务的不同版本,使得读操作不会被写操作阻塞,实现数据库的高并发性。

  7. mysql的主从同步原理?

    MySQL主从同步通过二进制日志(binlog)实现,主服务器将写操作记录到binlog,从服务器连接主服务器,获取并执行binlog中的操作,保持主从数据的一致性。

  8. mysql的innodb是什么?

    InnoDB是MySQL数据库的一种存储引擎,支持事务、ACID属性、行级锁和MVCC,是默认的事务性存储引擎,适用于高并发和数据完整性要求的应用。

  9. mysql的ACID靠什么保证?
    MySQL通过事务管理机制,使用事务日志和锁机制,来保证ACID(原子性、一致性、隔离性和持久性)特性。

  10. 索引扫描底层原理?

    索引扫描底层原理是通过B+树结构,在不需要遍历整个数据表的情况下,定位和快速检索符合查询条件的数据。

猜你喜欢

转载自blog.csdn.net/qq_51447496/article/details/135157856