面经-Java
Java
-
常用集合
List,Set,Map
ArrayList,LinkesList(双向列表,适用于频繁插入和删除)
HashSet,TreeSet(红黑树)
hashmap,LinkesHashMap(加上双向链表)
-
hashmap和hashtable区别。
map线程不安全(效率高,key可以为null),table线程安全(每个方法都有synchronized 关键字,)
-
hashmap底层原理
哈希表,数组加链表
1.8之后转换红黑树
-
线程安全的集合有哪些?
hashMap,concurentHashMap,vector(与arrayList类似,动态增长),hashtable
-
java面向对象三个特征
封装,继承,多态
-
多态如何实现
方法重载,方法重写,接口实现
-
什么是多态
在java中,多态是面向对象编程的一种重要特性,它允许不同的对象对同一个消息做出不同的响应。
-
接口可以多实现吗
可以。
-
抽象类和接口
接口多实现,接口无构造器,不存在方法的实现,默认修饰符public
-
线程池使用方法
好处:降低资源消耗。提交响应速度(不需要等待线程创建)。提高线程可管理性。
1)核心线程数(corePoolSize):当线程池的线程都忙碌时,再进来新任务时,由最小线程数扩容到核心线程数 。一般设置为cpu的核数
2)最大线程数 (maximumPoolSize):当核心线程数满了,当队列也满了,再来新任务,就会创建新非核心线程来执行这个新任务,直到线程数达到最大线程数。一般设置为cpu的核数*2
3)存活时间(keepAliveTime):非核心线程 =(maximumPoolSize - corePoolSize ) ,非核心线程闲置下来不干活最多存活时间。当非核心线程超过多长时间不执行任务,处于空闲状态,线程池会将它回收,直到线程数量达到核心线程数。如果设置为0,就代表不回收
4)存活时间单位
5)线程池等待队列(workQueue):维护着等待执行的Runnable对象。当运行当线程数= corePoolSize时,新的任务会被添加到workQueue中,如果workQueue也满了则尝试用非核心线程执行任务,等待队列应该尽量用有界的。
6)threadFactory
创建一个新线程时使用的工厂,可以用来设定线程名、是否为daemon线程等等。
7)handler
corePoolSize、workQueue、maximumPoolSize都不可用的时候执行的饱和策略 -
线程通信方式
- 通过 volatile 关键字(volatile共享内存)
- join()方法。
- wait和notify
-
进程通信
共享内存,消息队列
-
spring bean的生命周期
实例化Bean --> Bean属性填充 --> 初始化Bean -->销毁Bean
-
aop,IOC特性
控制反转,简单点说,就是创建对象的控制权,被反转到了Spring框架上。
AOP主要一般应用于签名验签、参数校验、日志记录、事务控制、权限控制、性能统计、异常处理等。
-
post和get的区别
GET是从服务器上获得数据;POST是向服务器传递数据
get通过url传输参数,post的参数在请求体中。
post发送长度更大
-
缓存穿透
客户端请求数据在缓存和数据库中都不存在
-
缓存击穿
热点key问题,缓存重建任务较长,不停创建
-
缓存雪崩
大量key同时失效,大量请求到数据库
-
redis的超时时间设置了多久?
一般以秒为单位
过期时间的设置原则:
数据的生命周期(对于不经常变动的数据,超时时间会长一些) 内存使用率(可以通过Redis的INFO命令获取当前的内存使用情况,包括已使用内存和可用内存等信息。)
数据访问频率(可以通过Redis的MONITOR命令监控数据的访问情况,从而了解数据的访问频率。)
-
Springboot自动装配
-
Spring常用的缓存(本地缓存,外地缓存)
-
redis常用值的类型
-
除了redis缓存的实现方式(本地缓存)
-
ES做什么
-
ES搜索原理
-
使用rabbitmq的场景
-
如何测试他没有重复消费
- 发送两条完全一样的消息到同一消息队列中
- 发送两条相同消息到不同队列中
-
如何测试他是否顺序传递
向不同的队列中有顺序的发送数据,通过消费端的日志判断它是否顺序消费
-
对数据结构的了解
-
排序算法有哪些
-
redis的了解,和应用场景
-
缓存一致性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~