全部学科
Python全栈
python
NodeJS全栈
nodejs

源码架构与核心原理专题测试

17 题 50 分钟 难度:★★★

考察知识点

  • SqlSessionFactory 构建流程:Configuration 解析、Builder 模式应用
  • Executor 执行器体系:SimpleExecutor、ReuseExecutor、BatchExecutor 的区别与实现
  • StatementHandler 语句处理:RoutingStatementHandler 路由分发、预处理语句构建
  • ResultSetHandler 结果处理:自动映射、嵌套结果处理、TypeHandler 应用
  • SqlSession 生命周期:创建、使用、关闭的资源管理
  • 插件机制:Interceptor 链、四大对象的拦截点
  • 缓存架构:一级缓存、二级缓存的执行流程
💡 参考答案在文末
判断题
1

ResultMap 中未定义 result 映射时,MyBatis 会自动根据列名与属性名的对应关系进行自动映射。

A

B

2

调用 SqlSession.close() 方法时,会同时关闭底层的数据库连接和回滚未提交的事务。

A

B

单选题
3

在 MyBatis 的三种基本 Executor 中,哪种执行器会缓存 PreparedStatement 对象,适用于频繁执行相同 SQL 的场景?

A

SimpleExecutor

B

ReuseExecutor

C

BatchExecutor

D

CachingExecutor

4

关于 SqlSession 的生命周期,以下说法正确的是?

A

SqlSession 是线程安全的,可以在多个线程间共享使用

B

SqlSession 是非线程安全的,每个线程应该有自己的实例

C

SqlSession 应该作为类的静态字段长期持有

D

SqlSession 使用完毕后不需要关闭,GC 会自动回收资源

5

MyBatis 中负责将 ResultSet 结果集映射为 Java 对象列表的组件是?

A

DefaultResultSetHandler

B

SimpleResultSetHandler

C

ResultSetMapper

D

ResultMapHandler

6

在 MyBatis 中,当 SQL 语句包含 ${} 占位符时,会使用哪种 StatementHandler 实现?

A

SimpleStatementHandler

B

PreparedStatementHandler

C

CallableStatementHandler

D

RoutingStatementHandler

7

MyBatis 中 ParameterHandler 接口的默认实现类是哪一个?

A

DefaultParameterHandler

B

SimpleParameterHandler

C

RoutingParameterHandler

D

PreparedStatementParameterHandler

8

在 MyBatis 源码中,SqlSessionFactoryBuilder.build() 方法最终创建的 SqlSessionFactory 默认实现类是哪一个?

A

org.apache.ibatis.session.defaults.DefaultSqlSessionFactory

B

org.apache.ibatis.session.defaults.SimpleSqlSessionFactory

C

org.apache.ibatis.session.Configuration

D

org.apache.ibatis.executor.Executor

多选题
9

SqlSessionFactory.openSession() 方法在创建 SqlSession 时,会完成以下哪些操作?(多选)

A

从数据源获取新的数据库连接

B

根据配置创建对应的 Executor 实例

C

初始化 Transaction 事务对象

D

自动执行第一条 SQL 语句

10

在 MyBatis 的 SqlSessionFactory 构建流程中,XMLConfigBuilder.parseConfiguration() 方法会依次解析以下哪些配置节点?(多选)

A

properties

B

settings

C

typeAliases

D

mappers

11

BaseExecutor 作为 Executor 的抽象基类,实现了以下哪些核心方法?(多选)

A

query() - 查询方法,含一级缓存逻辑

B

update() - 更新方法,清空一级缓存

C

createStatement() - 创建 Statement 对象

D

commit()/rollback() - 事务控制方法

12

DefaultResultSetHandler 处理结果集映射时,支持以下哪些映射方式?(多选)

A

简单属性映射(列名到属性名)

B

嵌套结果映射(association/collection with resultMap)

C

嵌套查询映射(association/collection with select)

D

动态代理映射

13

关于 RoutingStatementHandler,以下说法正确的有哪些?(多选)

A

它是 StatementHandler 接口的默认路由实现

B

它根据 MappedStatement.getStatementType() 决定使用哪个具体 Handler

C

它本身实现了 SQL 执行逻辑

D

它在构造时就会创建被委托的具体 Handler 实例

填空题
14

DefaultParameterHandler.setParameters() 方法中,通过 ____________ 获取对应的 TypeHandler,然后调用 ____________ 方法将 Java 对象设置到 PreparedStatement 的指定位置。

15

XMLConfigBuilder 构建 Configuration 对象时,使用 ____________ 解析 XML 配置文件,通过 ____________ 方法按顺序读取所有配置节点,最终调用 build() 方法返回 Configuration 对象。

简答题
16

请简述 CachingExecutor 的工作机制,以及它如何实现二级缓存功能。

17

请描述从 SqlSessionFactoryBuilder.build()SqlSession.selectOne() 执行的完整流程中,涉及的核心组件及其作用。

参考答案
1.正确 2.正确 3.B 4.B 5.A 6.A 7.A 8.A 9.A;B;C 10.A;B;C;D 11.A;B;D 12.A;B;C 13.A;B;D 14.TypeHandlerRegistry;setNonNullParameter 15.XPathParser;parseConfiguration 16. 17.
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 注解开发专题测试
下一套试卷 → 生产环境最佳实践专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码