前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当面试被问到jvm(Java虚拟机)时,如何将面试官引入自己的节奏?

当面试被问到jvm(Java虚拟机)时,如何将面试官引入自己的节奏?

作者头像
小尘要自信
发布2023-10-10 15:59:54
2240
发布2023-10-10 15:59:54
举报
文章被收录于专栏:CSDN小尘要自信CSDN小尘要自信

前言

作为一名Java开发工程师,不管是校招还是社招jvm一定是必问必会的知识点。虽然说真正开发中用到的不多,甚至可以说用不到(对于刚入行或者Java初级),但是当面试官问出来,就是想考察你对知识的一个广度,如果你能答得很好,那么恭喜你,你已经赢得面试官的好感。在接下来的面试中你会很自信。 当然如果你对jvm了解的很深刻,你还可以将面试官引导到自己的节奏。在做自我介绍的时候可以可以强调自己熟悉jvm,那么面试官就有很大概率问到jvm。 这篇文章就来详细的介绍一下面试中遇到有关jvm相关面试题该怎么回答。虽说做不到吊打面试官,但是至少能和面试官有的聊,对于拿下offer就有了一份保障。

快问快答

代码语言:javascript
复制
如果你对jvm只是了解一点,可以先说jvm**是什么**,**有哪些功能**。

你可以这样答:

关于jvm呢,我只是简单了解过。 JVM(Java 虚拟机)是Java平台的核心组件之一,它是一个能够执行Java字节码的虚拟机。JVM提供了Java程序运行的环境,使得跨平台的Java应用程序能够在不同的操作系统上运行。 JVM的主要功能包括以下几个方面:

  • 类加载:JVM负责将Java源代码编译后得到的字节码文件加载到内存中,并进行验证、准备和解析等步骤,最终将类信息存储在方法区中。
  • 内存管理:JVM管理程序运行所需的内存空间,包括堆内存、栈内存和方法区等。它负责内存的分配和回收,通过垃圾回收机制自动释放不再使用的对象占据的内存空间。
  • 执行引擎:JVM的执行引擎将载入内存的字节码文件解释或者编译为机器码,并执行程序指令。根据实现方式的不同,执行引擎可以采用解释执行或即时编译的方式来提高执行效率。
  • JIT编译器:JIT(Just-In-Time)编译器是JVM的一部分,在程序运行过程中,JIT编译器会对频繁执行的热点代码进行动态编译,以提高执行效率。
  • 异常处理:JVM提供了异常处理机制,用于捕获和处理程序中的异常情况,并提供相应的异常处理机制进行处理。
  • 安全机制:JVM提供了安全管理器,用于实施对运行在其中的Java应用程序进行安全限制和控制。

总之,JVM作为Java平台的核心组件,起到了解释和执行Java字节码的关键作用。它允许开发人员编写一次,然后在不同的操作系统和硬件平台上运行Java应用程序,实现了Java的跨平台特性。

抛砖引玉

代码语言:javascript
复制
如果你对jvm很熟,那么你就可以大展身手了。

面试过程往往很短暂,Java相关的面试内容又很多我们需要去记住各种各样的内容,显然是很困难的,所以如果你想靠jvm来拿下面试官,那么我们可以耍一下小手段。对于面试官来说他想快速了解你对知识的掌握程度,让他出招往往防不胜防,所以我们需要再引导一下面试官的兴趣。 说完,你还可以再说一说: 类的加载过程 Java的内存结构 jvm的垃圾回收机制 垃圾回收算法 垃圾回收器

你可以这样回答:

JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 同时呢我还了解:

根据下面内容说个大概。前提是你对这些内容有了解

  • 类的加载过程

类加载的过程主要分为三个部分:加载,链接,初始化,而链接又可以细分为三个小部分:验证,准备,解析。 加载:简单来说,加载指的是把class字节码文件从各个来源通过类加载器装载入内存中。 验证:主要是为了保证加载进来的字节流符合虚拟机规范,不会造成安全错误 准备:主要是为类变量(注意,不是实例变量)分配内存,并且赋予初值。 解析:将常量池内的符号引用替换为直接引用的过程 初始化:这个阶段主要是对类变量初始化,是执行类构造器的过程。 换句话说,只对static修饰的变量或语句进行初始化。

关于类的加载,这里面试官可能会问: 1.Java创建对象的过程 2.双亲委派机制 3.有哪些类的加载器 4.双清委派机制可以打破吗?如何打破?为什么要打破?举例说明。 5.什么时候会触发类的加载 (答案可以自己先整理:后续所有jvm相关面试题会整理成pdf文件更新至微信公众号:小尘要自信)

  • Java的内存结构

根据下图重点介绍一下运行时数据区有由哪些部分组成。 运行时数据区主要由堆,方法区,栈,程序计数器,本地方法栈组成,

在这里插入图片描述
在这里插入图片描述

这里面试官可能会问: 1.运行时数据区中哪些是线程私有?哪些是公共的? 2.方法区jdk1.8上有什么变化。 3.内存泄露和内存溢出了解吗 4.方法区和永久代,以及元空间的区别

  • jvm的垃圾回收机制

jvm垃圾回收机制采用的时分代回收思想,将内存区域划分为新生代和老年代。新生代又分为伊甸区和幸存区,幸存区又由大小相等的两个区组成。刚建立的对象会处于伊甸区,然后会经过GC进入幸存区1,再一次GC如果还没被清理,就会进入幸存区2.如果幸存区2.中再经历过GC还没被清理,又会进入幸存区1.在幸存区之间没转变一次。对象的年龄就会加一。当年龄达到15后会进入老年代。

这里面试官可能会问: 1.伊甸区和幸存区的默认大小比例 2.只有年为15的对象才会进入老年区吗?15可以改为16吗? 3.动态年龄判断了解吗 4.为啥Eden区比survivor区内存大很多

  • 垃圾回收算法

同时我还了解垃圾回收算法:标记整理,复制算法,标记清楚,分代收集算法。

这里面试官可能会问: 1.详细说一下复制算法 2.复制算法,标记整理,标记清除的区别 3.如何判断是不是垃圾对象

  • 垃圾回收器

我还了解一些垃圾回收器 新生代收集器(全部的都是复制算法):Serial、ParNew、Parallel Scavenge 老年代收集器:CMS(标记-清理)、Serial Old(标记-整理)、Parallel Old(标记整理) 整堆收集器: G1(一个Region中是标记-清除算法,2个Region之间是复制算法)

锦上添花

说一些jvm监控,故障处理工具

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 快问快答
  • 抛砖引玉
  • 锦上添花
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档