知识体系和面试常见问题解析
技术专家全面讲解知识体系,面试常见问题经验总结,并提供辅导和咨询。
数据库面试题
数据库是计算机基础知识,对于计算机和软件等技术岗位,在面试中经常会被问到。
数据库
- 讲讲范式理论。
- 谈谈 ACID(原子性、一致性、隔离性、持久性)原则。
- 什么是最终一致性?
- 谈谈四大隔离级别,以及不可重复读和幻读的出现原因。
- 谈谈乐观锁与悲观锁。
- 讲讲数据库封锁的类型和粒度,两段锁协议,隐式和显示锁定。
- 谈谈 MVCC 原理,快照读和当前读。
- 谈谈 InnoDB 是怎么解决幻读的?
- 讲一下 drop、delete、truncate 的区别。
- 为什么 SELECT * FROM table WHERE field = null 不能匹配空的字段?
- 讲讲连接查询与子查询的比较。
- 谈谈视图的作用,何时能更新视图?
- 讲讲存储过程、存储函数、触发器的作用。
- 谈谈时序型数据库的存储结构。
- 讲一下对 LSM 树的理解,以及它的存储结构。
- 延迟加载是如何实现的?什么场景下有用?有什么缺陷?
- 如何找出系统中开销最大的查询?
- 什么是 N+1 问题?解决方案有哪些?
- 分库分表后怎么保证主键仍然是递增的?
- 分库分表后怎么查询分页?
- 讲讲 SQL 与 NoSQL 的比较。
- 如何实现一个 NoSQL?
- NoSQL 如何解决可伸缩性的挑战?
- 什么情况下应该使用类似 MongoDB 的数据库而不是关系型数据库?
- 谈谈 Cassandra 和 RocksDB。
- Cassandra 的墓碑机制是什么?
Redis
- 为什么要用 Redis?
- 谈谈 Redis 有什么优点。
- 如何给 Redis 设置过期时间?
- 讲一下 Redis 的几种数据结构。
- 谈谈 Redis 里数据结构的实现。
- 谈谈对 Redis 底层数据结构的理解。
- 讲一下 Redis 的数据结构以及使用场景。
- 讲讲字典及渐进式 Rehash。
- 谈谈 Redis 渐进式 Rehash 的实现原理。
- 用过 Redis 的哪几种数据结构?ZSET 是怎么实现的?
- 谈谈 Redis 的 ZSET 实现原理,以及为什么不用红黑树?
- 谈谈对跳表的了解。
- 讲讲字典和跳跃表原理。
- 谈谈 Redis 的事件驱动模型。
- 谈谈 Redis 的线程安全问题。
- 讲一下 Redis 的单线程网络框架原理和混合持久化机制。
- 谈谈 Redis 的 BIO 线程原理和作用。
- 谈谈 Redis 的内存淘汰机制。
- 如何保证缓存与数据库双写时的数据一致性?
- 讲一下 Redis 的持久化机制。
- 谈谈 RDB 和 AOF 持久化机制。
- 讲讲 Redis 的发布订阅机制。
- 讲讲 Redis 的事务机制。
- 谈谈 Redis 的集群和分布式。
- Redis 集群如何实现一致性 Hash 算法?
- 讲一下 Redis 主从同步的实现原理和过程,以及产生数据丢失的原因。
- 如何解决 Redis 并发竞争 Key 问题?
- 讲一下 Redis 的 Gossip 协议原理。
- 谈谈 Redis 哨兵原理。
- 讲一下 Redis 集群故障自动转移过程。
- 基于 Redis 实现分布式锁。
- 谈谈 Redis 和 memcached 的区别。
- 谈谈 Redis 和 LevelDB 的区别,以及 LevelDB 的 LSM 树和 WAL 原理。
- 为什么要用 Redis 而不使用 map/guava 做缓存?
- 对类 Redis 数据库 Pika 是否了解?介绍一下基本设计架构。