SorryToPerson logo
返回
后端2026-04-15

后端面试题:数据库与缓存

总结 SQL、NoSQL、缓存策略和数据库设计相关的后端面试题。

后端面试题:数据库与缓存

1. SQL 与 NoSQL 的区别是什么?

  • SQL 有固定表结构,支持复杂联表查询。
  • NoSQL 更灵活,适合非结构化数据和高扩展场景。
  • 具体选型取决于读写模式、一致性和扩展需求。

2. 什么是范式?为什么要做范式化设计?

  • 范式用于规范化表结构,减少冗余。
  • 有助于保证数据一致性。
  • 但过度范式化可能影响查询性能。

3. 缓存穿透、击穿、雪崩如何防范?

  • 缓存穿透:使用布隆过滤器或拦截非法参数。
  • 缓存击穿:热点数据加互斥锁或提前续期。
  • 缓存雪崩:缓存失效分批刷新,设置随机过期时间。

4. 事务隔离级别有哪些?

  • Read Uncommitted、Read Committed、Repeatable Read、Serializable。
  • 不同级别权衡一致性和并发性能。

5. 布隆过滤器适合什么场景?

  • 判断元素是否存在于集合中。
  • 适合缓存预热、黑名单查询等场景。
  • 存在误判率,但不会误删真实存在项。

6. 如何设计一个分页接口?

  • 基于页码的分页适合简单场景。
  • 基于游标的分页更适合大数据量,提高性能。
  • 注意防止重复或漏数据。

7. 数据库分片和分库分表的区别?

  • 分片:把数据按某个字段水平拆分到多个节点。
  • 分库分表:把数据分散到多个数据库实例或表中。
  • 方案需考虑跨分片查询和事务复杂度。

8. 你如何选用缓存方案?

  • 使用 Redis 做热点缓存、会话存储、计数器。
  • 使用 Memcached 做简单 KV 缓存。
  • 根据一致性和持久化需求选择持久缓存或纯内存缓存。
后端数据库缓存