栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java常问面试题10道,offer来碗里(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java常问面试题10道,offer来碗里(一)

目录

1.线程池的底层⼯作原理 :

2.JVM中垃圾回收算法你知道几个?

3.说说类加载器双亲委派模型 

4.项⽬如何排查JVM问题:

5.Redis内存淘汰和过期策略:

7.RocketMQ如何避免消息重复消费

8.RocketMQ如何保证消息的可靠性传输

9.开发中使用的设计模式

10.谈谈项目中你做的sql优化


1.线程池的底层⼯作原理 :

线程池内部是通过队列+线程实现的,当我们利⽤线程池执⾏任务时:

 1. 如果此时线程池中的线程数量⼩于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建 新的线程来处理被添加的任务。

 2. 如果此时线程池中的线程数量等于corePoolSize,但是缓冲队列workQueue未满,那么任务被放⼊ 缓冲队列。

3. 如果此时线程池中的线程数量⼤于等于corePoolSize,缓冲队列workQueue满,并且线程池中的数量⼩于maximumPoolSize,建新的线程来处理被添加的任务。

4. 如果此时线程池中的线程数量⼤于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等 于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。

 5. 当线程池中的线程数量⼤于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被 终⽌。这样,线程池可以动态的调整池中的线程数

简化说:核心线程数-队列-最大线程数,当最大线程数满后执行拒绝策略

2.JVM中垃圾回收算法你知道几个?
  1. 标记清除
  2. 标记整理
  3. 分代回收算法(新生代:复制  老年代:标记清除/整理)

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%,并清理)

内存淘汰:默认策略,申请内存操作报错

  1. 越早过期的key,越早删除
  2. 随机删除
  3. 最近最少使用的key先删除
  4. 最不经常使用的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个小技巧

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774698.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号