ZJ面经随笔T

2024-03-04 04:18
文章标签 面经 随笔 zj

本文主要是介绍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的数据类型

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. 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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771973

相关文章

【Unity面经】实习篇:面试官常问的一百个面试题

👨‍💻个人主页:@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 专栏交流🧧🟥Unity100个实战基础✨🎁🟦 Unity100个精华一记✨🎁🟩 Unity50个demo案例教程✨🎁🟨 Unity100个精华细节BUG✨🎁🟨 Unity100个面试题✨🎁 文章

PHP面经

CORS(cross origion resource sharing)跨域资源共享,可以允许跨站请求资源。客户端需要用特定的方法去请求资源(如xmlhttprequest)同时需要带上特定的报文头信息,服务端也要支持跨域的资源请求 memcache和redis的异同点 memcache可以利用多线程,吞吐量高,适合大访问量memcache只支持简单的key/value结构memcache无法

Minimax-秋招正式批-面经(计网)

6. websocket和http区别 websocket知识点总结_防火墙 websocket-CSDN博客 相同点 都是基于TCP协议,都是可靠性传输协议都是应用层协议 不同点 HTTP 类型: 请求-响应式的无状态协议,半双工通信,同一时刻只能一个方向上有动作通信方式: 单向传输,从浏览器到服务器连接持久性: 虽能支持通过 Keep-Alive 持久化连接,但有超时时间,其

10篇校招/社招面经请你查收~

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 目前各大公司的校招已经启动,相信很多小伙伴有和我当年一样的困扰。国内高校开辟大数据相关专业正好一个毕业季过去了,那么作为一个科班出身的学生,该怎么准备校招呢? 本文是在和读者交流的过程中,在网络上搜集到的一些面试资源,只要自己掌握方法并且准备充分,其实很容易在面试中脱颖而出。 其实当时的我也非常发愁,觉得自己什么都不会,又不知道该准

Java秋招面经(网搜版)

1.redis的数据结构 Redis 提供了多种高效的数据结构来满足不同的应用需求。主要包括字符串(String),这是最基础的数据类型,支持存储和操作各种数据;哈希(Hash),类似于键值对的集合,适合存储对象和结构化数据;列表(List),实现为双向链表,支持从两端插入和删除元素;集合(Set),存储唯一元素并支持集合运算如交集和并集;有序集合(Sorted Set),每个元素都有一个分数,

Minimax-秋招正式批-面经(other)

1. 谈谈对聚簇索引的理解 聚簇索引 InnoDB通过主键聚集数据,如果没有定义主键,InnoDB会选择非空的唯一索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是该行的行记录数据,也将聚簇索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分,每张表只能拥有一个聚簇索引 非聚簇索引

面经学习(hbkj实习)

个人评价 这次面试算是对我基础知识空缺的排查,有很多小知识点是我没有去复习到的,也是一次比较愉快的面试。  1.在java中有哪些数据属于共享变量?(共享变量怎么创建) 共享变量的形式还是很多的,首先就是今天变量进行一个共享变量。当我们需要将某个变量变成一个共享变量的时候需要使用Voliate进行修饰,使其变成共享变量。  2.多线程进行操作数据时如果不上锁为什么共享变量中的数据会被该的乱

【校招面经】机器学习与数据挖掘常见面试题整理 part9

八十、SVM的核函数 from:https://blog.csdn.net/lihaitao000/article/details/51173459 SVM核函数包括线性核函数、多项式核函数、径向基核函数、高斯核函数、幂指数核函数、拉普拉斯核函数、ANOVA核函数、二次有理核函数、多元二次核函数、逆多元二次核函数以及Sigmoid核函数. 核函数的定义并不困难,根据泛函的有关理论,只要一种函数

【校招面经】机器学习与数据挖掘常见面试题整理 part8

七十六、t-SNE from:http://www.datakit.cn/blog/2017/02/05/t_sne_full.html t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非

【校招面经】数据库 part2

七、数据库范式 1. 1NF:不存在可以分的属性 2. 2NF:每一个非主属性依赖于关系模型的某个候选键 3. 3NF:不存在非主属性的传递依赖于关系模型的侯选建 4. BCNF:每个属性都不存在传递依赖于关系模型的侯选建 1NF: 字段是最小的的单元不可再分 2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到) 3NF:满足2NF,非主键外的所有字