用友软件Java社招面经分享

用友软件

面试过程:

1、描述某个场景中JVM的内存分布,以及内存的分布情况。

2、GC过程中的运行过程,理解过程?

3、什么是jvm[jvm就是Java虚拟机(jdk)]

4、jvm是如何加载class以及处理的过程

1)加载.class文件

2)管理并分配内存

3)执行垃圾收集


5、内存是什么?怎么样分配内存?

答:对象放置堆中,局部变量以及一些数组值的区域 VM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:booleancharbyteshortintlongfloatdouble)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址。


6、GC的基本原理?什么时候需要GC?为什么需要GC

答:GC (Garbage Collection)的基本原理:将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、旧生代的方式来对对象进行收集,以尽可能的缩短GC对应用造成的暂停

1)对新生代的对象的收集称为minor GC

2)对旧生代的对象的收集称为Full GC

3)程序中主动调用System.gc()强制执行的GCFull GC


不同的对象引用类型, GC会采用不同的方法进行回收,JVM对象的引用分为了四种类型:

1)强引用:默认情况下,对象采用的均为强引用(这个对象的实例没有其他对象引用,GC时才会被回收)

2)软引用:软引用是Java中提供的一种比较适合于缓存场景的应用(只有在内存不够用的情况下才会被GC

3)弱引用:在GC时一定会被GC回收

4)虚引用:由于虚引用只是用来得知对象是否被GC


7、问jvm过程分布。#用友##Java工程师##社招##面经#
全部评论
用友你去了吗?
点赞 回复
分享
发布于 2020-06-11 19:02
没学过jvm啥都不会,无所畏惧
点赞 回复
分享
发布于 2020-07-24 01:13
百信银行
校招火热招聘中
官网直投
楼主这是面的啥啊,怎么全是jvm
点赞 回复
分享
发布于 2020-08-15 00:39

相关推荐

#软件开发2024笔面经#1.自我介绍2.在实习公司是一个什么角色3.介绍一下自己开发的模块4.消息推送是怎么做到的5.你能介绍一下Java吗6.介绍一下JVM的内存结构7.如何判断类加载器能否加载这个类?(根据什么机制判断当前这个类加载器能否加载这个类?)8.怎么打破双亲委派机制?9.类加载过程10.一次完整的GC的流程11.如果发生内存溢出,应该怎么排错12.如果让你写一段代码导致内存溢出应该怎么写13.使用线程池,疯狂的塞线程,这些线程是同时执行的吗14.CPU执行是有顺序的,开了100万个线程,那么其他线程是不是在等待15.线程过多为什么会导致内存溢出16.单线程下什么情况会出现内存溢出17.OOM是内存的哪一块溢出了18.类的实例化顺序(如果有父类和静态变量)19.类实例化过程中是静态变量先执行还是构造函数先执行20.静态变量,静态代码块,构造函数在类的实例化过程中哪个先加载,加载顺序21.SpringMVC的响应流程22.过滤器时什么时候执行的23.DispatcherServlet和过滤器谁先执行24.如果有多个过滤器,执行顺序是怎么样的25.讲一下MySQL里面的分页查询26.分页查询需要排序吗,如果分页查询不要求排序就不用排序是吗27.介绍一下MySQL里面的事务28.什么是事务29.如果在同一个事务里面,我先插入一条数据,我在查询这个数据,是可以查询到的吗30.在Spring中如何开启事务的31.使用@Transactional发生异常会回滚吗32.@Transactional默认能捕获到非受检异常还是受检异常33.什么是非受检异常34.@Transactional如果要都捕获到应该怎么办35.使用for循环一条一条插入数据,一个方法上加了@Transactional一个没加,两个效率上有什么区别吗36.一个方法上加了@Transactional一个没加,两个效率上有什么区别吗,和插入的次数有关系吗37.反问38.hr问一些问题
点赞 评论 收藏
转发
3 17 评论
分享
牛客网
牛客企业服务