我面试遇到的问题
- DBA工程师是做什么的?
DBA工程师负责数据库管理和维护,涵盖MySQL、Redis等数据库,从运维角度保障数据库系统的稳定性、性能优化及备份恢复等工作。 - redis常用的数据结构,他们的作用分别是什么?
字符串 (String),哈希表 (Hash),列表 (List),集合 (Set),有序集合 (Sorted Set),位图 (Bitmap),HyperLogLog。
用一个在线电商系统描述的话就是:
{String:存储商品的详细描述信息},{Hash,存储每个商品的用户评价},{List,存储商品的销售订单,实现订单队列},
{Set:存储用户的购物车,确保每个商品在购物车中只有一次},{Sorted Set:存储商品的销售排行榜,根据销售数量进行排序},
{Bitmap,记录用户的在线状态,每个位代表一个用户是否在线},{HyperLogLog:估算网站每天的独立访问用户数} - redis的系统架构?
Redis系统架构:客户端、服务器、数据存储、持久化、主从复制、哨兵、集群和网络层组成。 - redis的分布式所解决秒杀系统问题(数据一致性问题)?
问题原因:分布式环境下的高并发、网络延迟以及异步操作。
解决方法:在分布式环境下普通的锁可能引起单点故障、性能瓶颈和可扩展性问题,Redis分布式锁可通过使用SETNX和DEL命令实现,确保在Redis中只有一个客户端成功获取锁; - B+树,B-树,B树的区别?
B+树是一种平衡树数据结构,具有多路搜索树的特性,其中非叶子节点只存储索引信息,而所有数据存储在叶子节点,提供高效的范围查询和顺序遍历。
B-树是一种平衡树数据结构,具有多路搜索树的特性,每个节点包含多个关键字和子树,保持树的平衡,适用于磁盘存储系统,优化磁盘I/O。
B树是一种平衡树数据结构,每个节点包含多个关键字和子树,用于在磁盘存储系统中优化查找和插入操作,保持树的平衡以提高性能。
MySQL创建索引后,通常使用B+树作为数据结构,相比于B树和B-树,B+树更适合数据库索引,因为它在叶子节点上保存所有数据,提供更高的查询性能和范围查询效率。 - Redis的备份问题?
Redis通过持久化机制(如快照和AOF日志)、复制和集群配置等方式来确保数据的持久性和高可用性。
快照(RDB)是定期全量保存数据库状态的持久化方式,而AOF(Append-Only File)日志是实时追加记录每个写操作的持久化方式,两者区别在于保存的数据形式和对数据变动的处理方式。 - mysql中聚簇索引?
在MySQL中,聚簇索引决定了数据行的物理存储顺序,提高了范围查询和按索引排序的性能,通常由主键索引扮演此角色。 - redis怎么降低秒杀系统的qps?
过Redis缓存热门商品信息、限流、分布式锁、异步处理、热点数据缓存、CDN缓存、横向扩展和本地缓存等手段,有效降低QPS,提升系统性能。
我采用通过缓存热门商品信息,如商品库存、价格等,可以降低对数据库的频繁查询,提高读取性能。同时,使用分布式锁确保对商品库存减少等关键操作是原子的,防止超卖等并发问题,保障系统一致性。 - 一般使用redis的时候容易遇到什么问题?
秒杀系统中Redis常见问题包括分布式锁的竞争、缓存雪崩、缓存穿透、数据一致性和高并发下的性能瓶颈。
可采用分布式锁机制、缓存预热、采用多级缓存、数据异步同步和优化Redis性能等方法。
10.DBA工程师还需要什么能力?
DBA工程师需要性能优化,安全管理,容灾备份,监控和调优,版本管理,自动化脚本编写能力。
其他面试题:
- mysql如何慢查询优化?
通过使用索引、优化查询语句、适时分表分库、合理配置数据库参数和利用数据库性能分析工具等手段,对MySQL进行慢查询优化,提升数据库查询性能。 - 为什么要遵守最左前缀原则?
最左前缀原则要求在使用复合索引时,查询条件的列顺序必须是索引中列的最左侧开始,以确保索引能够被充分利用,提高查询效率。 - mysql锁有哪些?
MySQL中的锁包括共享锁、排它锁、记录锁、间隙锁、表锁,用于管理并发访问和确保数据一致性。 - mysql隔离级别?
读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable),默认隔离级别是可重复读(Repeatable Read,解决了并发访问中的脏读、不可重复读、幻读等问题。 - order by为什么会讲解索引失效?
因为排序操作可能需要访问大量数据页,而如果索引无法覆盖 ORDER BY 的列,数据库引擎可能会选择全表扫描而不使用索引。 - 什么是MVCC?
MVCC(Multi-Version Concurrency Control)是一种数据库并发控制机制,通过在同一时间保留多个事务的不同版本,使得读操作不会被写操作阻塞,实现数据库的高并发性。 - mysql的主从同步原理?
MySQL主从同步通过二进制日志(binlog)实现,主服务器将写操作记录到binlog,从服务器连接主服务器,获取并执行binlog中的操作,保持主从数据的一致性。 - mysql的innodb是什么?
InnoDB是MySQL数据库的一种存储引擎,支持事务、ACID属性、行级锁和MVCC,是默认的事务性存储引擎,适用于高并发和数据完整性要求的应用。 - mysql的ACID靠什么保证?
MySQL通过事务管理机制,使用事务日志和锁机制,来保证ACID(原子性、一致性、隔离性和持久性)特性。 - 索引扫描底层原理?
索引扫描底层原理是通过B+树结构,在不需要遍历整个数据表的情况下,定位和快速检索符合查询条件的数据。
如果大家觉得有用的话,可以关注我下面的微信公众号,极客图书馆,我会在里面更新更多行业资讯,企业面试内容,编程资源,让大家更好学习编程,我的抖音,B站也叫极客李华。