本文主要是介绍ZJ面经随笔T,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这里写目录标题
- JVM调优
- 可达性分析算法中根结点有哪些
- cms和g1区别有哪些
- 怎么排查CPU过高,内存飙高
- redis相关
- Redis的数据类型
- Redis qps能上多少,怎么知道的?
- Spring系列
- Spring循环依赖怎么解决?
- SpringAOP原理是什么?
- Spring Bean 的生命周期?
JVM调优
可达性分析算法中根结点有哪些
常见的前四个
- 虚拟机栈中引用的对象(参数,局部变量等)
- 方法区中类静态变量
- 方法区中常量引用的对象
- 本地方法栈中JNI引用的对象
- 被同步锁(synchronized)持有的对象
- JMXBean(介绍:https://www.jianshu.com/p/dac153cab8aa)等
可达性分析图解:
cms和g1区别有哪些
1、适用范围不同
CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用
G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用
2、STW的时间不同
CMS收集器以最小的停顿时间为目标的收集器。
G1收集器可预测垃圾回收的停顿时间(建立可预测的停顿时间模型)
3、垃圾碎片
CMS收集器是使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片
G1收集器使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。
4、垃圾回收过程不同
CMS收集器:初始标记->并发标记->重新标记->并发清除
G1收集器:初始标记->并发标记->最终标记->筛选回收
https://blog.csdn.net/zkkzpp258/article/details/80080764
怎么排查CPU过高,内存飙高
1、先找到耗CPU高的线程
命令:top -c
显示进程运行列表–》键入大写P,按CPU使用率降序排序
2、找到耗CPU高的线程
获取到消耗CPU最高的进程PID为 9999
3、找到对应线程对应的业务代码
命令:top -Hp 99999
显示进程ID为99999的线程列表–》键入大写P后,按CPU使用率降序排列
执行结果中第一个PID假设为6666的线程占用CPU资源最高;
将线程按十六进制展示,执行指令“printf "%x\n"6666” ----》假设获取到6666,线程的十六进制标识为 5a2d
然后通过就stack检索到进程(线程ID=99999)中,最消耗CPU的线程(线程ID为5a2d)的线程栈信息
执行指令“jstack 9999| grep "2a5d" -C5 --color
”:
找到了耗CPU高的线程对应的线程名称“ThreadTest”,而这个线程名称是我们业务代码中给线程取的名称,可以快速定位到业务代码。
redis相关
Redis的数据类型
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- sort set (有序集合)
Redis qps能上多少,怎么知道的?
单机的redis一般是支持上万甚至几万,机器越牛逼并且配置越高,redis高并发单机就可以上十几万以上
QPS压力测试:https://www.cnblogs.com/chencanjian/p/10026215.html
Spring系列
Spring循环依赖怎么解决?
Spring是先将Bean对象实例化【依赖无参构造函数】—>再设置对象属性的
原因:Spring先用构造器实例化Bean对象----->将实例化结束的对象放到一个Map中,并且Spring提供获取这个未设置属性的实例化对象的引用方法。结合我们的实例来看,,当Spring实例化了StudentA、StudentB、StudentC后,紧接着会去设置对象的属性,此时StudentA依赖StudentB,就会去Map中取出存在里面的单例StudentB对象,以此类推,不会出来循环的问题喽。
如何检测是否有循环依赖?how to find?
可以 Bean在创建的时候给其打个标记,如果递归调用回来发现正在创建中的话—>即可说明循环依赖。
https://blog.csdn.net/qq_36381855/article/details/79752689
SpringAOP原理是什么?
动态代理
Spring Bean 的生命周期?
Spring bean的生命周期只有四个主要阶段,其他都是在这四个主要阶段前后的扩展点,这四个阶段是:
1.实例化 Instantiation
2.属性赋值 Populate
3.初始化 Initialization
4.销毁 Destruction
https://www.cnblogs.com/xushuanglong/p/14632982.html
这篇关于ZJ面经随笔T的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!