后端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 缓存。
- 根据一致性和持久化需求选择持久缓存或纯内存缓存。
后端数据库缓存