目录
1.线程池的底层⼯作原理 :
线程池内部是通过队列+线程实现的,当我们利⽤线程池执⾏任务时:
1. 如果此时线程池中的线程数量⼩于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建 新的线程来处理被添加的任务。
2. 如果此时线程池中的线程数量等于corePoolSize,但是缓冲队列workQueue未满,那么任务被放⼊ 缓冲队列。
3. 如果此时线程池中的线程数量⼤于等于corePoolSize,缓冲队列workQueue满,并且线程池中的数量⼩于maximumPoolSize,建新的线程来处理被添加的任务。
4. 如果此时线程池中的线程数量⼤于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等 于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。
5. 当线程池中的线程数量⼤于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被 终⽌。这样,线程池可以动态的调整池中的线程数
简化说:核心线程数-队列-最大线程数,当最大线程数满后执行拒绝策略
2.JVM中垃圾回收算法你知道几个?
- 标记清除
- 标记整理
- 分代回收算法(新生代:复制 老年代:标记清除/整理)
3.说说类加载器双亲委派模型
JVM在加载⼀个类时,会调⽤AppClassLoader的loadClass⽅法来加载这个类,不过在这个⽅法中,会 先使⽤ExtClassLoader的loadClass⽅法来加载类,同样ExtClassLoader的loadClass⽅法中会先使⽤ BootstrapClassLoader来加载类,如果BootstrapClassLoader加载到了就直接成功,如果 BootstrapClassLoader没有加载到,那么ExtClassLoader就会⾃⼰尝试加载该类,如果没有加载到, 那么则会由AppClassLoader来加载这个类。 所以,双亲委派指得是,JVM在加载类时,会委派给Ext和Bootstrap进⾏加载,如果没加载到才由⾃⼰ 进⾏加载。
4.项⽬如何排查JVM问题:
对于还在正常运⾏的系统:
1. 可以使⽤jmap来查看JVM中各个区域的使⽤情况
2. 可以通过jstack来查看线程的运⾏情况,⽐如哪些线程阻塞、是否出现了死锁
3. 可以通过jstat命令来查看垃圾回收的情况,特别是fullgc,如果发现fullgc⽐较频繁,那么就得进⾏ 调优了
5.Redis内存淘汰和过期策略:
客户端设置过期时间:1.惰性删除(key被操作时检查,过期时间)
2.定期删除(随机检查部分key到达25%,并清理)
内存淘汰:默认策略,申请内存操作报错
- 越早过期的key,越早删除
- 随机删除
- 最近最少使用的key先删除
- 最不经常使用的key先删除
6.SpringMVC 运行流程大致说一下?
- 客户端请求被 DisptacherServlet 接收。
- 根据 HandlerMapping 映射到 Handler。
- ⽣成 Handler 和 HandlerInterceptor。
- Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式⼀并返回给 DisptacherServlet。
- DispatcherServlet 通过 HandlerAdapter 调⽤ Handler 的⽅法完成业务逻辑处理。
- Handler 返回⼀个 ModelAndView 给 DispatcherServlet。
- DispatcherServlet 将获取的 ModelAndView 对象传给 ViewResolver 视图解析器,将逻辑视图解 析为物理视图 View。
- ViewResovler 返回⼀个 View 给 DispatcherServlet。
- DispatcherServlet 根据 View 进⾏视图渲染(将模型数据 Model 填充到视图 View 中)。
7.RocketMQ如何避免消息重复消费
RocketMQ不保证消息不重复,如果需要保证严格的不重复消费,需要自己在业务端去重,接口幂等性保障,消费端处理业务消息需要要吃幂等性,可以用Redis、关系数据库等来配合验证消息是否被消费。
8.RocketMQ如何保证消息的可靠性传输
Rocketmq如何保证消息不丢失,如何保证消息不被重复消费_码上得天下的博客-CSDN博客_rocketmq如何保证消息不丢失
9.开发中使用的设计模式
这个一定要说一两个,几遍实际开发中没有使用过,也要吹出来一个,说出来使用的场景和对该设计模式的理解。
开发中没有实际的同学,可以参考我之前写的博客。吹就完了,写的很详细保证不丢分。
10.谈谈项目中你做的sql优化
可以看我之前写的博客:sql优化的15个小技巧