当前位置:   article > 正文

jvm面试题,java大数据面试题及答案

jvm面试题,java大数据面试题及答案
准备

1)为类变量分配内存并且设置该类变量的默认初始值,即零值。

2)这里不包含用final修饰的static,因为final在编译的时候就会分配了,准备阶段会显式初始化

3)这里不会为实例变量分配初始化,类变量会分配在方法区中,而实例变量是会随着对象一起分配到堆中。

解析

1)将常量池内的符号引用转换为直接引用的过程。

2)符号引用就是一组符号来描述所引用的目标。

3)直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。

4)事实上,解析操作往往会伴随着jvm在执行完初始化之后再执行。

初始化

1)初始化阶段就是执行类构造器方法()的过程。

2)此方法不需定义,是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。(如果代码中不存在类变量和静态代码块,则没有()方法)

3)构造器方法中指令按语句在源文件中出现的顺序执行。

4)() 不同于类的构造器。(关联:构造器是虚拟机视角下的())

5)若该类具有父类,jvm会保证子类的()执行前,父类的()已经执行完毕。

6)虚拟机必须保证一个类的()方法在多线程下被同步加锁。

2.类加载器

启动类加载器(Bootstrap ClassLoader)

1)这个类加载器使用C/C++语言实现的,嵌套在jvm内部

2)它用来加载java核心类库

扩展类加载器(extensions classloader)\

它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。

应用程序类加载器(system class loader)

它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。

用户自定义类加载器

通过继承 java.lang.ClassLoader类的方式实现。

3.双亲委派机制

在这里插入图片描述

四、创建一个对象的过程


1.判断对象对应的类是否加载、链接、初始化

2.为对象分配内存

3.处理并发安全问题

4.初始化分配到空间

所有属性设置默认值,保证对象实例字段在不赋值时可以直接使用

5.设置对象的对象头

6.执行init方法进行初始化

五、堆空间


1.堆空间分区

在这里插入图片描述

分区比例

在这里插入图片描述

六、垃圾回收


1.java中的几种引用方式

强引用 - 不回收
概念

在这里插入图片描述

特点

1)强引用可以直接访问目标对象

2)强引用所指向的对象在任何时候都不会被系统回收,虚拟机宁愿抛出OOM异常,也不会回收强引用所指向对象。

3)强引用可能导致内存泄漏。

软引用 - 内存不足即回收

在这里插入图片描述

弱引用 - 发现即回收

在这里插入图片描述

虚引用 - 对象回收跟踪

在这里插入图片描述

2.垃圾回收机制

1)自动内存管理

无需开发人员手动的参与内存的分配与回收,这样降低内存泄漏和内存溢出的风险。

自动内存管理机制,将程序员从繁重的内存管理中释放出来,可以更专心的专注于业务开发。

2)垃圾回收器可以对年轻代回收,也可以对老年代回收,甚至是全堆或方法区的回收。

什么时候回收

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.垃圾回收算法

标记阶段

在这里插入图片描述

引用计数算法

在这里插入图片描述

可达性分析算法
概述

在这里插入图片描述

实现思路

在这里插入图片描述

在这里插入图片描述

GC Roots

在这里插入图片描述

清除阶段
标记-清除算法
概念

在这里插入图片描述

在这里插入图片描述

缺点

在这里插入图片描述

标记-压缩(整理)算法
概念

将存活的内存空间分为两块,每次只使用其中一块,在垃圾回收时将正在使用的内存中的存活对象复制到未被使用的内存块中,之后清除正在使用的内存块中的所有对象,交换两个内存的角色,最后完成垃圾回收。

在这里插入图片描述

优缺点

在这里插入图片描述

应用场景

在这里插入图片描述

标记-压缩(整理)算法
出现背景

在这里插入图片描述

具体流程

在这里插入图片描述

指针碰撞

在这里插入图片描述

优缺点

在这里插入图片描述

分代收集算法

在这里插入图片描述

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后如何让自己一步步成为技术专家

说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。

当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。

推荐一份Java架构之路必备的学习笔记,内容相当全面!!!

成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。

你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!

进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!

【关注】+【转发】+【点赞】支持我!创作不易!

为技术专家

说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。

当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。

推荐一份Java架构之路必备的学习笔记,内容相当全面!!!

[外链图片转存中…(img-ld5c2VaP-1711145114977)]

成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。

你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!

进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!

【关注】+【转发】+【点赞】支持我!创作不易!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/746249
推荐阅读
相关标签
  

闽ICP备14008679号