type
status
date
slug
summary
tags
category
icon
password

面试题总结

1、JDK1.8的新特性

允许在接口中添加默认方法和静态方法
lambda表达式
stream API
java.time包 新日期和时间API
optional 主要用于防止NullPointerException

2、stream API用过哪些

stream流并行操作有没有用过

3、optional这个有用过吗

4、如果让你自己去实现一个多线程你打算如何实现,线程池的几个核心参数及核心参数如何让思考的,阻塞队列使用的哪一个,为什么要使用这个阻塞队列

创建线程池:重复利用线程执行多个任务,避免线程创建和销毁带来的开销
核心线程数:
  1. 首先判断所处理的任务是一个CPU密集型(涉及到大量计算,对CPU利用率较高)还是I/O密集型的任务(涉及到文件读写、网络请求)
  1. 如果是CPU密集型则设定为N(CPU核心数)+1,当一个线程因为某些原因(如缓存未命中或分支预测失败)暂时停顿时,额外的线程可以利用这段时间执行其他任务,从而避免CPU资源的浪费
  1. 如果是I/O密集型则设定为2N(CPU核心数),可以确保在一个线程因I/O交互被阻塞,其他线程可以利用CPU的资源进行其他操作
阻塞队列:
LinkedBlockingQueue:基于链表的阻塞队列,默认是无界的(可以设置为有界),适用于任务生产速度快于消费速度的场景,由于是无界的,可能会导致内存耗尽
ArrayBlockingQueue:基于数组的有界阻塞队列,适用于任务生产和消费速度相对均衡的场景。由于是有界的,可以防止任务过多导致内存耗尽
SynchronousQueue:不存储元素的队列,每个插入操作必须等待一个相应的移除操作,适用于任务提交速度与处理速度相同的场景。常用于直接将任务交给线程执行,而不进行排队
PriorityBlockingQueue:支持优先级排序的无界阻塞队列,适用于需要根据优先级处理任务的场景,任务会根据其优先级顺序被消费
DelayQueue:支持延迟获取元素的无界阻塞队列,适用于需要在特定时间后处理任务的场景,常用于定时任务调度

5、反问:最大线程数为什么设定为核心线程数+1

  • I/O 等待时间:任务在等待 I/O 操作完成的时间。
  • CPU 时间:任务实际占用 CPU 的时间

6、反问:LinkedBlockQueue是无界阻塞队列,他是有安全风险的,你知道是什么吗,既然有安全风险你为什么要使用

7、说一下JVM的类加载机制

双亲委派:每个类加载器在加载类时,首先将请求委派给父类加载器,只有在父类加载器无法加载时,才尝试自己加载

8、其中验证和准备的区别

校验:为了确保类文件的字节码符合 JVM 规范,保证安全性
准备:为静态变量分配内存并初始化默认值,如数值类型为0,引用类型为null

9、你能描述一下class文件的结构吗

10、比如我给你一个SQL,你知道这个SQL要怎么优化么,从哪些方面考虑,具体如何做的

通过explain查看SQL执行计划
使用join替换子查询或嵌套查询
尽量使用union all代替union
避免使用select *
小表驱动大表
避免使用太多join

11、explain具体看哪几个核心字段,其中的核心字段都有哪些参数

重点查看type、extra、rows字段,如果type值为ALL则是执行的一个全表扫描,需要针对性的索引优化,如果extra值为Using filesort,通常是因为order by子句,需要将排序字段创建索引,如果extra值为Using temporary,通常因为查询使用了临时表,通常是group by操作中,可以通过为

12、如果出现OOM你是如何分析和解决的

13、数据库连接池方面你是如何优化的,你采取的优化逻辑是什么

14、如果你们本地就出现了一次事故,就是比如说出现事故,然后领导给你安排的一个任务让你解决这个事故。你的那个解决思路什么或者解决逻辑思想,你可以阐述一下这个解决的过程吗

15、如果给你一个慢SQL日志,你会如何分析

16、SpringBoot的启动过程

17、单点登录

18、矩阵数据同步

19、流程设计

20、xxl-job的组件

21、redis项目中的应用场景

22、colletions包下的集合有哪些

23、ArrayList和LinkedList的区别

24、HashMap的底层原理

25、索引是不是越多越好(索引过多的负面影响)

写性能下降:每次对表数据进行增删改时,索引也需要同步更新
存储空间占大:每个索引都需要额外的存储空间
查询优化器负担大:查询优化器需要评估所有可能的索引来生成最佳执行计划,索引过多会导致查询优化器决策时间延长
锁竞争加剧:更新索引时会对索引页加锁,索引过多会导致锁冲突概率变大,进而可能导致死锁或性能下降

26、Redis中list和Set的区别

27、类加载器有哪些

28、双亲委派机制

29、双亲委派机制的好处

30垃圾回收机制

31、Springboot常用注解

32、SpringBootApplication由哪几个注解组成

33、@CompomentScan的原理

34、nginx中location的配置

35、docker的常用命令

36、String intern方法

37、内存泄漏的场景和解决办法

 
 
 
 
 
 
 
 
JVM面试题ElasticSearch面试题
Loading...
目录
0%
JackJame
JackJame
一个苦逼的码农😘
最新发布
Redis面试题
2025-3-3
面试题总结
2025-2-22
SpringBoot面试题
2025-2-18
JVM面试题
2025-2-18
数据库面试题
2025-2-16
Java并发编程面试题
2025-2-13
公告
目录
0%