生产环境最佳实践专题测试
考察知识点
- SQL 注入防护:参数化查询、白名单校验、纵深防御策略、
<bind>标签安全风险 - 线程安全与并发:SqlSessionFactory/SqlSession/Mapper 线程安全特性、二级缓存并发问题与分布式缓存方案
- 监控与告警:SQL 性能指标采集、连接池监控、缓存命中率、告警分级策略、避免监控成为性能瓶颈
- 异常处理与重试:事务回滚机制、可重试/不可重试异常分类、Spring Retry 实现、幂等性设计
- 热部署与配置刷新:XML 热加载流程、Configuration 更新、线程安全保证、失败回滚机制、配置中心集成
1
多选题
在生产环境中,针对 MyBatis 的监控体系,以下哪些指标是必须纳入告警范围的核心指标?
2
简答题
某电商平台在促销活动期间,MyBatis 查询响应时间飙升,但事后排查发现没有任何监控告警提前发现问题。请设计一套完整的 MyBatis 生产环境监控方案,要求包含:
- 需要采集的核心指标及采集方式
- 指标存储与可视化方案
- 告警规则设计(含分级策略)
- 如何避免监控本身成为性能瓶颈
3
多选题
在生产环境中,以下哪些做法可以有效防止 MyBatis 的 SQL 注入攻击?
4
多选题
生产环境中防御 MyBatis SQL 注入攻击,以下哪些措施是有效的纵深防御策略?
5
填空题
在 MyBatis 生产环境中防止 SQL 注入,以下关键措施需要正确实现:
- 参数绑定必须使用
#{}而不是 ______,因为前者使用 ______ 机制避免注入 - 对于必须使用
${}的场景(如动态 ORDER BY 字段),必须通过 ______ 校验限制输入范围 - 在 XML 中编写动态 SQL 时,
<bind>标签的 value 属性中如果拼接了用户输入,同样存在 ______ 风险
6
多选题
在高并发 Web 应用中使用 MyBatis,以下关于线程安全的描述,正确的有哪些?
7
填空题
MyBatis 二级缓存(二级 Cache)在多节点部署和高并发场景下存在以下问题:
- 默认二级缓存使用 PerpetualCache(基于 ______),多线程并发读写需要加锁,MyBatis 通过 ______ 模式减少锁竞争
- 在集群多节点部署时,各节点的二级缓存相互独立,会导致 ______ 问题,应改用 ______ 实现分布式缓存
- 使用
@CacheNamespace注解开启二级缓存时,flushInterval 设置过小会导致频繁 ______,影响高并发下的读性能
8
简答题
某支付系统使用 MyBatis 进行订单状态更新,偶发数据库死锁异常(Deadlock found when trying to get lock),部分订单更新失败。团队直接在 catch 块中对原方法进行重试,但出现了 TransactionAlreadyCompletedException 和重复扣款问题。请分析:
- 为什么在同一个事务内 catch 后重试会抛出
TransactionAlreadyCompletedException? - 死锁异常和约束违反异常(如 Duplicate Key)在重试策略上应如何区别对待?
- 在 Spring 环境下,如何正确实现可重试的数据库操作?
- 如何防止重试过程中出现重复扣款等幂等性问题?
9
多选题
在生产环境中实现 MyBatis 配置的热部署与动态刷新,以下说法正确的有:
10
简答题
某金融系统要求在不重启服务的情况下,支持动态调整 MyBatis 的 Mapper XML SQL 语句(例如紧急修复一个性能有问题的 SQL)。请设计一套生产环境可用的 MyBatis SQL 热部署方案,要求:
- 描述 XML 变更的监听与触发机制
- 说明如何安全地重新加载 XML 并更新 MyBatis 的 Configuration
- 如何保证热加载过程中的线程安全(加载期间正在执行的 SQL 不受影响)
- 如果新 SQL 加载失败,如何实现自动回滚到旧版本
📝 发现内容有误?点击此处直接编辑
想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析
长按或扫描二维码,立即体验