时间:2025-02-21 19:02:00~2025-02-21 19:56:00
1、自我介绍:
略
2、HashMap的底层原理:
jdk8之前:数组+链表
jdk8之后:数组+链表+红黑树
默认初始容量16,负载因子0.75(即容量达到12时会发生扩容*2),hash表(数组)长度到达64且发生hash冲突的链表长度到达8,会使链表转化为红黑树,当链表长度减少到6时,红黑树又会退回为链表
3、线程安全的HashMap
Java 提供了 Collections.synchronizedMap
方法,可以将 HashMap
包装成一个线程安全的 Map
。
ConcurrentHashMap
是 Java 提供的专门用于高并发环境的线程安全 Map
实现。它通过分段锁(JDK 1.7)或 CAS 操作(JDK 1.8 及之后)来实现高效的并发访问。
Hashtable
是 Java 早期提供的线程安全 Map
实现,它的所有方法都是同步的。然而,Hashtable
的性能较差,通常不推荐使用
如果你需要对 HashMap
进行更细粒度的控制,可以手动加锁,例如使用 ReentrantLock
或 synchronized
关键字。
4、spring的AOP实现
基于代理的 AOP
-
JDK 动态代理:适用于目标对象实现了接口的情况。
-
CGLIB 代理:适用于目标对象未实现接口的情况,通过生成子类实现代理。
基于 AspectJ 的 AOP
-
编译时织入:在编译时将切面织入目标类。
-
加载时织入:在类加载时将切面织入目标类
5、CGLIB的底层实现
CGLIB 通过字节码生成技术动态创建目标类的子类,并结合 MethodInterceptor
实现方法拦截和增强。它的底层实现依赖于 ASM 和 FastClass
机制
6、AOP在你的项目中的应用
日志记录
事务管理(@Transactional编译后再反编译回来,你就会发现它会将的你方法使用try包裹起来)
权限校验
性能监控
缓存管理
异常处理
参数校验
多数据源的实现
7、springboot自动装配的原理
-
条件化配置:根据类路径、配置文件、环境变量等条件,动态决定是否加载某个配置类或 Bean。
-
SPI 机制:通过
META-INF/spring.factories
文件定义需要自动加载的配置类。 -
约定优于配置:Spring Boot 提供了一套默认配置,开发者只需按需覆盖即可。
以下是 Spring Boot 自动装配的工作流程:
-
启动 Spring Boot 应用:
-
Spring Boot 启动时,会调用
SpringApplication.run()
方法。
-
-
加载自动配置类:
-
通过
AutoConfigurationImportSelector
从META-INF/spring.factories
文件中加载所有自动配置类。
-
-
条件化筛选:
-
根据条件化注解(如
@ConditionalOnClass
、@ConditionalOnBean
等)筛选出符合条件的配置类。
-
-
加载配置类:
-
将筛选出的配置类加载到 Spring 容器中。
-
-
创建 Bean:
-
根据配置类中的
@Bean
方法创建 Bean,并将其注册到 Spring 容器中。
-
8、用过哪些缓存
Caffeine、redis
9、多线程在项目中的应用
并发处理任务(在微服务中通过多线程批量调用微服务接口)
异步处理(使用是spring事件驱动开发异步保存日志或者处理其他任务)
定时任务调度
10、线程池的几个核心参数
核心线程数
线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程
缓存队列
当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略
通常有以下四种策略:
丢弃任务并抛出RejectedExecutionException异常。
也是丢弃任务,但是不抛出异常。
丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
重试添加当前的任务,自动重复调用 execute() 方法,直到成功
11、Mysql底层InnoDB 存储引擎使用的是什么数据结构
B+树
12、B+树有什么特点
“矮胖”,非叶子节点不存储数据,只存储指向下一个节点的指针
13、B+树有什么好处(为什么要用b+树)
磁盘只需要经过少量的IO就能检索大量的数据,高效的查找、插入和删除性能
14、项目中碰到过哪些问题,怎么解决的
在博客中搜索bug
15、其他问题忘记了。。。
2025-02-27 start:
2025年2月25日星期二 进行了第二面
1、在项目中遇到了什么问题,怎么解决的?
2、分布式事务的原理
3、什么是熔断和限流
4、怎么实现一个熔断
5....
2025年2月27日星期四
hr面试,谈了当前薪资,期望薪资,压力大在哪个时间段。。。
end