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

news2024/12/29 18:15:07

本文目录

  • 前言
  • 快问快答
  • 抛砖引玉
  • 锦上添花
  • 好书推荐
  • 总结

前言

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

快问快答

如果你对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的跨平台特性。

抛砖引玉

如果你对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监控,故障处理工具

好书推荐

Java虚拟机核心技术一本通
作者:李博,资深架构师,InfoQ平台、阿里云社区专家博主,CSDN博客专家,51CTO讲师,慕课网讲师,Quarkus技术社区的热衷参与者,参与过多个开源项目(Skywalking、Nacos、Pulsar等)的开发和深入研究。目前担任公司内部架构委员会副主席,主要研究方向是“基于Quarkus的云原生Java微服务架构的推进”和“GraalVM虚拟机的内部化落地”。

本书主要以 Java 虚拟机的基本特性及运行原理为中心,深入浅出地分析 JVM 的组成结构和底层实现,介绍了很多性能调优的方案和工具的使用方法。最后还扩展介绍了 JMM 内存模型的实现原理和 Java 编译器的优化机制,让读者不仅可以学习 JVM 的核心技术知识,还能夯实 JVM 调优及代码优化的技术功底。

在这里插入图片描述

本书适合已具有一定 Java 编程基础的开发人员、项目经理、架构师及性能调优工程师参考阅读,同时,本书还可以作为广大职业院校、计算机培训班相关专业的教学参考用书。
通过实战案例+执行效果图+核心代码,剖析探索JVM核心底层原理,强化推动JVM优化落地,手把手教你吃透Java虚拟机深层原理!
传送门:查看链接

总结

关于jvm的内容很多,在和面试官的沟通中,会被问到各种各样的问题,但最终都离不开基础,只有我们掌握了基础,面对各种追问才能游刃有余。如果你喜欢通过看书来学习知识,那么你可以看一下《深入浅出Java虚拟机:JVM原理与实战》这本书。想获取更多Java相关面试题可后台私信我。大家一起学习,一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mathtype试用期后如何继续使用?

MathType7已经正式发布,作为一款强大的数学公式编辑器可以将编辑好的公式保存成多种图片格式或透明图片模式,可以很方便的添加或移除符号、表达式等模板(只需要简单地用鼠标拖进拖出即可),也可以很方便地修改模板,为理…

AdaBoost算法解密:从基础到应用的全面解析

目录 一、简介什么是AdaBoostAdaBoost的历史和重要性定义 二、基础概念集成学习(Ensemble Learning)定义示例 弱学习器和强学习器定义示例 三、AdaBoost算法原理样本权重(Sample Weights)定义示例 学习器权重(Learner …

大麦订单截图生成 大麦一键生成订单截图

新版大麦订单生成 图样式展示 这个样式图就是在大麦生成完的一个订单截图,它的状态是等待卖家发货 后台一键生成,独立后台管理 教程:修改conf数据库账号密码 不会的可以看源码里有搭建教程 下载程序:https://pan.baidu.com/…

python自动解析301、302重定向链接

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 使用模块requests 方式代码如下: import requests url_string"http://******" r requests.head(url_string, streamTrue) print r.h…

测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

文章目录 一、任务描述二、指标分析2.1 TP/FP/FN/TN2.2 精准率2.3 召回率 三、接口处理四、数据集处理五、开始计算指标五、实用工具5.1 移动文件5.2 可视化JSON标签5.3 可视化TXT标签 一、任务描述 通过给定的算法接口,对算法的输出(置信度、检测框、告…

【教学类-38-02】20230724京剧脸谱2.0——竖版(小彩图 大面具)(Python 彩图彩照转素描线描稿)

结果展示 背景需求: 前文体运用Python颜色提取功能,将“京剧脸谱”彩色图片转化为线描图案。 【教学类-38】20230724京剧脸谱1.0——横版“彩图线图等大”(Python 彩图彩照转素描线描稿)_reasonsummer的博客-CSDN博客 存在问题&…

大语言模型之十二 SentencePiece扩充LLama2中文词汇

大语言模型的发展潜力已经毋庸置疑了,如何让中文大语言模型更适合中小公司使用这是一道难题。在模型的选择上我们倾向于选择国外的LLama或者BLoom之类的,而不是百川之类的中文大模型,原因在于从基建到框架到数据国外的开源资料非常多&#xf…

背诵不等于理解,深度解析大模型背后的知识储存与提取

自然语言模型的背诵 (memorization) 并不等于理解。即使模型能完整记住所有数据,也可能无法通过微调 (finetune) 提取这些知识,无法回答简单的问题。 随着模型规模的增大,人们开始探索大模型是如何掌握大量知识的。一种观点认为这归功于 “无…

国庆共68条评论《乡村振兴战略下传统村落文化旅游旅游设计》许少辉八一新书

国庆共68条评论《乡村振兴战略下传统村落文化旅游旅游设计》许少辉八一新书 国庆共68条评论《乡村振兴战略下传统村落文化旅游旅游设计》许少辉八一新书

【STM32】IAP升级03关闭总中断,检测栈顶指针

IAP升级方法 IAP升级时需要关闭总中断 TM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。 ARM MDK中提供了如下两个接口来禁用和开启总中断: __disable_irq(); // 关闭总中…

函数指针详解和简单使用

概念 函数指针&#xff1a;首先它是一个指针&#xff0c;一个指向函数的指针&#xff0c;在内存空间中存放的是函数的地址&#xff1b; 引入 #include <stdio.h>void test() {printf("hehe\n"); } int main() {printf("%p\n", test);printf(&quo…

基于 SpringBoot+Vue 的大学生租房网站

1 简介 本大学生租房系统使用简洁的框架结构&#xff0c;专门用于用户浏览首页&#xff0c;房屋信息&#xff0c;房屋评价&#xff0c;公告资讯&#xff0c;个人中心&#xff0c;后台管理&#xff0c;意见反馈等信息&#xff0c;对个人信息进行修改等&#xff0c;以及系统管理…

基于Java的大学生就业招聘系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Java基础---第十篇

系列文章目录 文章目录 系列文章目录一、说说Java 中 IO 流二、 Java IO与 NIO的区别(补充)三、java反射的作用于原理一、说说Java 中 IO 流 Java 中 IO 流分为几种? 按照流的流向分,可以分为输入流和输出流; 按照操作单元划分,可以划分为字节流和字符流; 按照流的角色…

【笔试强训day02】倒置字符串 排序子序列

​&#x1f47b;内容专栏&#xff1a; 笔试强训集锦 &#x1f428;本文概括&#xff1a;C笔试强训day02。 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.10.1 二、day02 1.倒置字符串 题目描述&#xff1a; 将一句话的单词进行倒置&…

工厂模式和单例模式

目录 一.设计模式 二.工厂模式和单例模式 &#x1f41e;单例模式 1.饿汉模式 2.懒汉模式 &#xff08;1&#xff09;问题一&#xff1a;大量对象的创建 &#xff08;2&#xff09;问题二&#xff1a;加锁导致阻塞等待 &#xff08;3&#xff09;问题三&#xff1a;指令…

MySql进阶篇---006:存储引擎,索引,SQL优化,视图、存储过程、变量、流程控制、游标、存储函数、触发器

1. 存储引擎 1.1 MySQL体系结构 1).连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为通过认证…

【面试经典150 | 矩阵】螺旋矩阵

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;模拟方法二&#xff1a;按层模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于…

04. Springboot集成Mybatis-flex(二)

1、前言 上一篇文章《Springboot集成Mybatis-flex&#xff08;一&#xff09;》提到Mybatis Flex和Spring Boot的初步集成和基础使用。今天我们再来探索Mybatis Flex其他特性的使用。 2、数据填充 数据填充指的是&#xff0c;当 Entity 数据被插入 或者 更新的时候&#xff…

Ghostscript 字体处理深究: 解决字体缺失问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…