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

Spring 性能调优专项测试

20 题 35 分钟 难度:★★★

考察知识点

  • 数据库连接池优化(HikariCP配置)
  • Bean加载与初始化优化
  • Spring缓存机制配置
  • 应用启动性能优化
  • 内存与资源管理优化
💡 参考答案在文末
判断题
1

使用@Cacheable注解时,如果查询结果为null,Spring默认会将null值缓存起来以防止缓存穿透。

A

B

2

JPA中使用findAll()查询实体列表,然后遍历列表访问每个实体的懒加载关联对象,会导致N+1查询问题。

A

B

3

Spring的@Async异步方法中抛出的异常,调用方可以直接通过try-catch捕获。

A

B

4

HikariCP连接池的maximum-pool-size应该设置为CPU核心数的2倍加1。

A

B

单选题
5

在Spring中,使用哪个注解可以将方法声明为异步执行?

A

@Scheduled

B

@Async

C

@Transactional

D

@EventListener

6

以下代码执行后,数据库操作的结果是?

Java
@Transactional
public void process() {
    saveData();
    asyncService.sendNotification();
}

@Async
public void sendNotification() {
    // 发送通知
}
A

saveData()和sendNotification()在同一个事务中执行

B

sendNotification()在独立线程执行,不参与process()的事务

C

process()的事务会等待sendNotification()完成才提交

D

会抛出异常,@Transactional和@Async不能同时使用

7

MySQL大数据量表使用LIMIT 100000, 10分页查询,性能急剧下降的原因是?

A

LIMIT语法本身有性能问题

B

MySQL需要扫描并跳过前100000条记录

C

索引失效导致全表扫描

D

分页偏移量不能超过10000

8

某高并发系统使用HikariCP连接池,配置maximum-pool-size=10,minimum-idle=5。当并发请求数达到50时,以下描述正确的是?

A

所有50个请求都能同时获取到连接

B

只有10个请求能同时执行,其余请求等待连接或超时

C

系统会自动将连接池扩展到50个连接

D

minimum-idle参数会限制最大连接数为5

9

在Spring Data JPA中,以下哪个配置可以开启批量插入优化?

A

spring.jpa.show-sql=true

B

spring.jpa.hibernate.ddl-auto=update

C

spring.jpa.properties.hibernate.jdbc.batch_size=50

D

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

10

系统使用Redis作为缓存,某时刻大量缓存同时过期,导致所有请求直接打到数据库,这种现象称为?

A

缓存穿透

B

缓存雪崩

C

缓存击穿

D

缓存预热

11

在Spring Boot中,以下哪个配置项用于设置HikariCP连接池的最大连接数?

A

spring.datasource.hikari.minimum-idle

B

spring.datasource.hikari.maximum-pool-size

C

spring.datasource.hikari.connection-timeout

D

spring.datasource.hikari.idle-timeout

12

在Spring中,使用哪个注解可以将方法的返回结果缓存起来?

A

@CacheEvict

B

@CachePut

C

@Cacheable

D

@Caching

多选题
13

以下关于Spring @Async注解的正确说法有哪些?

A

需要在配置类上添加@EnableAsync启用异步功能

B

@Async方法可以在同一个类内部调用生效

C

可以指定自定义线程池:@Async("myThreadPool")

D

@Async方法的返回值可以是Future或CompletableFuture

14

以下哪些是HikariCP连接池的正确配置参数及其作用?

A

connection-timeout: 客户端等待连接的最大毫秒数

B

idle-timeout: 连接允许在池中闲置的最长时间

C

max-lifetime: 连接在池中的最大生命周期

D

leak-detection-threshold: 连接泄漏检测阈值

15

以下哪些是Spring Data JPA提升查询性能的有效策略?

A

使用@EntityGraph指定关联查询策略

B

使用DTO投影减少数据传输

C

对所有实体设置fetch = FetchType.EAGER

D

使用@Query定义JOIN FETCH查询

16

以下关于Spring缓存注解的使用场景描述正确的有哪些?

A

@Cacheable适用于查询操作,先查缓存再执行方法

B

@CachePut适用于更新操作,每次都执行方法并更新缓存

C

@CacheEvict适用于删除操作,清除缓存中的数据

D

@Cacheable可以设置condition属性实现条件缓存

填空题
17

Spring Boot默认使用____________作为异步任务执行器,它不为每个任务创建新线程,而是每次执行都创建新线程。生产环境建议配置自定义线程池,实现____________接口或定义名为taskExecutor的____________Bean。

18

在Spring Boot中启用缓存功能,需要在启动类上添加____________注解。如果使用Redis作为缓存存储,需要配置spring.cache.type为____________,并引入spring-boot-starter-data-redis依赖。

19

在Spring Boot 2.x及以上版本中,默认使用的连接池是____________。如果需要切换到Druid连接池,需要在pom.xml中引入druid-spring-boot-starter依赖,并在配置文件中设置spring.datasource.type为____________

20

在Spring中,对于只读查询操作,可以使用____________注解进行优化。该配置会提示数据库驱动和Hibernate进行优化,如MySQL会使用____________模式,Hibernate不会进行____________,从而提升查询性能。

参考答案
1.错误 2.正确 3.错误 4.错误 5.B 6.B 7.B 8.B 9.C 10.B 11.B 12.C 13.A;C;D 14.A;B;C;D 15.A;B;D 16.A;B;C;D 17.SimpleAsyncTaskExecutor;AsyncConfigurer;ThreadPoolTaskExecutor 18.@EnableCaching;redis 19.HikariCP;com.alibaba.druid.pool.DruidDataSource 20.@Transactional(readOnly = true);快照读;脏检查
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 Spring 容器扩展点专项测试
下一套试卷 → Spring 数据访问基础专项测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码