知识体系和面试常见问题解析

技术专家全面讲解知识体系,面试常见问题经验总结,并提供辅导和咨询。

助理老师QQ

数据库面试题

数据库是计算机基础知识,对于计算机和软件等技术岗位,在面试中经常会被问到。

数据库

  • 讲讲范式理论。
  • 谈谈 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 是否了解?介绍一下基本设计架构。