首页 > 其他 > 详细

面试常见问题_1

时间:2020-10-17 00:52:37      阅读:43      评论:0      收藏:0      [点我收藏+]

1.类的初始化过程

1)父类的静态变量、代码块的初始化;

2)静态变量、代码块的初始化;

2.对象的初始化过程

1)父类对象的初始化;

2)普通成员、构造代码块初始化;

3)调用构造器

3.方法的重写

 

 

 

++++++++++++++++++MyBatis+++++++++++++++++++

1.MyBatis中,实体类的属性名和表中的字段名对不上,怎么办?

1)写sql语句的时候给字段起别名

2)在mabatis-config.xml配置文件中的setting标签里开启驼峰命名规则

3)在映射文件中的<select>里定义resultMap属性,然后指定字段属性和bean的属性的对应关系

 

 

++++++++++++++Linux++++++++++++++++++++++

 

 

 

 

++++++++++++JVM++++++++++++++++++++

1.GC(垃圾回收机制)

堆被分为新生代区、老年代区和永久代(存放类加载器),GC使用分代回收算法完成前两个代中的垃圾回收,所谓的分代回收算法,是指:新生代使用复制算法完成MinorGC,老年代使用标记-整理算法完成fullGC(包含一次major GC和minorGC)。

在什么时候进行GC?

1)手动调用system.gc(),一般会进行fullGC;

2)minorGC:

新生代被分为Eden区、From survive 区和To survive区。刚开始的时候只有Eden区和from区存放对象,当满了之后,就触发一次minorGC,Eden区和from区存活的对象被拷贝到

to区,然后Eden区和from区清空。紧接着,to区变为from区,之前的from区变为to区,重复上述过程。直到达到JVM中的设置的年龄阈值(通过MaxTenuringThreshold参数决定,默认15次)。

3)majorGC:

当新生代中年龄到达阈值的对象被传送到老年代 或者 新生代中to区放不下的对象被传送到老年代 时,如果系统判断老年代内存空间不足,就会进行一次majorGC.

 

 

对谁进行GC?

对死亡的对象进行GC。

判断对象死亡的依据是:从一系列被称为GC roots的对象出发,依次遍历被引用的对象,构成一个引用链,如果A对象没有出现在引用链上,则判定A对象死亡。

能够充当GC roots的对象:

1)虚拟机栈引用的对象;

2)方法区中静态变量引用的对象;

3)方法区中常量引用的对象;

4)本地方法栈中JNI(即native方法)引用的对象。

当清除对象时,虚拟机会先判断对象的finalize()方法是否执行且被覆盖,如果没有执行且被覆盖,那就把对象放入一个名为F-Queue的队列中,在对象清除线程中对该队列进行清除。

否则,就直接进行清除。

 

怎么进行GC?

新生代:

新生代使用复制算法进行GC,原因:

因为新生代中的对象的存货周期都很短,因此每次拷贝所需的空间都不大。

 

老年代:

标记-清除算法和标记-整理算法。标记-清除法是指对死亡的对象先标记再清除。标记整理法多了一个整理的步骤,即划定一段内存空间,存放死亡的对象,然后再去清除。

 

面试常见问题_1

原文:https://www.cnblogs.com/A-PP-Z-droplet/p/13826384.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!