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

JAVA数据库优化与JDBC高级专题测试

20 题 50 分钟 难度:★★★

考察知识点

本试卷涵盖以下核心知识点:

数据库连接池优化(6题)

  • 连接池作用与主流连接池对比(HikariCP、Druid)
  • 连接池大小设置原则
  • 连接泄漏检测配置
  • 连接池关键配置参数
  • Druid监控功能优势

PreparedStatement与批处理(2题)

  • rewriteBatchedStatements参数优化
  • 批处理分批次执行原则

事务管理与隔离级别(4题)

  • 数据库隔离级别与并发问题
  • 不可重复读与幻读的区别
  • Spring事务失效场景

结果集映射与元数据(1题)

  • ResultSet游标类型与性能

SQL注入防范(2题)

  • Statement拼接SQL风险
  • MyBatis #{}和${}区别

大数据量分页查询(2题)

  • 深分页子查询优化方法
  • 分页优化核心方法总结

连接泄漏检测与监控(2题)

  • 连接泄漏表现与后果
  • 连接池监控关键指标

数据库索引优化(1题)

  • MySQL InnoDB默认索引结构
💡 参考答案在文末
判断题
1

使用数据库连接池可以复用连接,避免频繁创建和销毁连接,显著提升数据库访问性能。

A

B

2

数据库连接泄漏是指程序获取连接后未正确关闭,导致连接无法归还池,最终连接池耗尽。

A

B

单选题
3

MySQL JDBC驱动中,rewriteBatchedStatements=true参数的作用是?

A

自动重写错误的SQL语句

B

将批量插入重写为多值INSERT语句,大幅提升性能

C

自动回滚失败的批量操作

D

限制批量操作的最大数量

4

连接池配置连接泄漏检测(leakDetectionThreshold)的作用是?

A

检测数据库连接是否断开

B

检测连接使用后未归还池,定位泄漏代码

C

检测SQL语句执行是否正确

D

检测数据库服务器是否宕机

5

MySQL InnoDB默认使用的索引结构是?

A

B树

B

B+树

C

Hash索引

D

全文索引

6

数据库连接池大小设置的原则是?

A

越大越好,避免连接不足

B

根据数据库处理能力和并发需求合理设置,过大反而影响性能

C

固定为10,所有应用都适用

D

必须等于数据库最大连接数配置

7

MySQL深分页优化中,使用子查询的方式是?

A

SELECT * FROM t LIMIT 100000, 10

B

SELECT * FROM t WHERE id IN (SELECT id FROM t LIMIT 100000, 10)

C

SELECT * FROM t INNER JOIN (SELECT id FROM t LIMIT 100000, 10) AS tmp ON t.id = tmp.id

D

SELECT * FROM t WHERE id > 100000 LIMIT 10

8

批量处理大数据时,为什么需要分批次执行而不是一次性全部添加?

A

数据库不支持一次性处理太多数据

B

避免内存溢出和单次事务过大,平衡性能与资源占用

C

批处理只能处理固定数量的数据

D

分批次执行比一次性执行性能更高

9

数据库隔离级别最低的是READ UNCOMMITTED,它可能产生什么问题?

A

只可能产生脏读

B

可能产生脏读、不可重复读、幻读

C

不会产生任何并发问题

D

只可能产生幻读

10

不可重复读和幻读的区别是?

A

不可重复读是数据被修改,幻读是数据被删除

B

不可重复读是某行数据被修改,幻读是行数变化(插入或删除)

C

不可重复读和幻读是同一问题

D

不可重复读只发生在低隔离级别,幻读只发生在高隔离级别

11

生产环境需要监控的连接池关键指标不包括以下哪项?

A

ActiveConnections:当前活跃使用中的连接数

B

IdleConnections:空闲可用连接数

C

ThreadsAwaitingConnection:等待获取连接的线程数

D

ConnectionCreatedTime:每个连接创建的具体时间

12

Spring Boot 2.x默认使用的数据库连接池是?

A

Druid

B

HikariCP

C

DBCP

D

C3P0

13

JDBC ResultSet的类型TYPE_FORWARD_ONLY表示什么?

A

只能向前滚动,性能最优,是默认类型

B

可以任意方向滚动,可感知自身更新

C

只能向后滚动

D

可以缓存所有数据到内存

14

以下哪种方式存在SQL注入风险?

A

使用PreparedStatement并绑定参数

B

使用MyBatis的#{param}参数绑定

C

使用Statement拼接用户输入到SQL

D

使用JPA/Hibernate的参数化查询

15

MyBatis中#{}和${}的区别是?

A

#{}和${}效果相同,只是语法不同

B

#{}是参数绑定防注入,${}是字符串替换可能注入

C

#{}用于表名,${}用于字段名

D

${}比#{}性能更高

多选题
16

Druid连接池相比HikariCP的独特优势有哪些?

A

内置SQL监控和统计功能

B

SQL防火墙,防止SQL注入攻击

C

慢SQL记录和日志输出

D

Web监控页面,可视化查看连接池状态

17

以下哪些情况会导致Spring事务失效?

A

方法不是public,事务注解只对public方法有效

B

同类内部调用事务方法,未经过代理

C

异常被catch捕获未抛出,事务无法感知失败

D

抛出非RuntimeException异常,默认只回滚RuntimeException

18

以下关于数据库隔离级别的描述,哪些是正确的?

A

READ UNCOMMITTED可能产生脏读、不可重复读、幻读

B

READ COMMITTED避免脏读,但仍可能不可重复读和幻读

C

REPEATABLE READ避免脏读和不可重复读,标准SQL下仍可能幻读

D

SERIALIZABLE避免所有并发问题,但性能最差

19

数据库连接池的关键配置参数有哪些?

A

maximumPoolSize:最大连接数

B

minimumIdle:最小空闲连接数

C

connectionTimeout:获取连接超时时间

D

idleTimeout:空闲连接超时回收时间

填空题
20

MySQL深分页优化:____________使用WHERE id > last_id避免OFFSET扫描;____________先SELECT id覆盖索引再JOIN回表;____________避免每次COUNT(*);预估总数使用SHOW TABLE STATUS获取近似值。

参考答案
1.正确 2.正确 3.B 4.B 5.B 6.B 7.C 8.B 9.B 10.B 11.D 12.B 13.A 14.C 15.B 16.A;B;C;D 17.A;B;C;D 18.A;B;C;D 19.A;B;C;D 20.游标分页;子查询优化;总数缓存
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 JAVA性能调优实战专题测试
下一套试卷 → JAVA数组与方法专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码