JVM面试题总结未完结

导读:本篇文章讲解 JVM面试题总结未完结,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

阅读须知

面试和笔试的要点其实差不多,基础知识和实战经验都是最重要的关注点(当然,面 试时的态度和眼缘也很重要)。 实际面试时,因为时间有限,不可能所有问题都问一遍,一般是根据简历上涉及的内 容,抽一部分话题来聊一聊。看看面试者的经验,态度,以及面对一层层的深入问题 时的处理思路。借此了解面试者的技术水平,对深度、广度,以及思考和解决问题的 能力。

常见的面试套路是什么呢?

  • XXX是什么?
  • 实现原理是什么?
  • 为什么这样实现?
  • 如果让你实现你会怎么做?
  • 分析下你的实现有什么优缺点?有哪些需要改进的地方?

下面总结一些比较常见的面试题,供大家参考。 针对这些问题,大家可以给自己打一个分:

0分:不清楚相关知识。

30分:有一点印象,知道一些名词。

60分:知道一些概念以及含义,了解功能和常见用途。

80分:能在参考答案的基础上进行补充。

100分:发现参考答案的问题。

下面我们来看看JVM相关面试问题。

1. 什么是JVM?

  • JVM全称是 Java Virtual Machine ,中文称为 Java虚拟机 。
  • JVM是Java程序运行的底层平台,与Java支持库一起构成了Java程序的执行环境。
  • 分为JVM规范和JVM实现两个部分。简单来说,Java虚拟机就是指能执行标准Java字节码的虚拟计算机。 (这一点我我觉得不太合理,因为JVM根本不关心运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件,所以应该叫做可以执行相关规范字节码的虚拟机)

1.1 请问JDK与JVM有什么区别?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lZcBHe7u-1645435292021)(JVM相关面试题.assets/image-20220221161814173.png)]

  • 现在的JDK、JRE和JVM一般是整套出现的。
  • JDK = JRE + 开发调试诊断工具
  • JRE = JVM + Java标准库

1.3 OracleJDK与OpenJDK有什么区别?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAO13BtV-1645435292022)(JVM相关面试题.assets/image-20220221162008809.png)]

各种版本的JDK一般来说都会符合Java虚拟机规范。

两者的区别一般来说包括:

  • 两种JDK提供的工具套件略有差别,比如jmc等有版权的工具。
  • 某些协议或配置不一样,比如美国限制出口的加密算法。
  • 其他细微差别,比如JRE中某些私有的API不一样。
  • 在JDK11之前,OracleJDK中还会存在一些OpenJDK中没有的、闭源的功能。但在JDK11中,我们可以认为OpenJDK和OracleJDK代码实质上已经完全一致的程度。

2. 什么是Java字节码?

Java 中的字节码,是值 Java 源代码编译后的中间代码格式,一般称为字节码文件。

2.1 字节码文件中包含哪些内容?

字节码文件中,一般包含以下部分:

  • 版本号信息
  • 静态常量池(符号常量)
  • 类相关的信息
  • 字段相关的信息
  • 方法相关的信息
  • 调试相关的信息

可以说,大部分信息都是通过常量池中的符号常量来表述的。

2.2 什么是常量?

常量是指不变的量,字母 ‘K’ 或者数字 1024 在UTF8编码中对应到对应的二进制 格式都是不变的。同样地,字符串在Java中的二进制表示也是不变的, 比如 “KK” 。 在Java中需要注意的是, final 关键字修饰的字段和变量,表示最终变量,只能赋 值1次,不允许再次修改,由编译器和执行引擎共同保证。

2.3 你怎么理解常量池?

在Java中,常量池包括两层含义:

  • 静态常量池,class文件中的一个部分,里面保存的是类相关的各种符号常量。

  • 运行时常量池,是在方法区中,其内容主要由静态常量池解析得到,但也可以由程序添加。

  • 他们俩的作用提高了复用性,减少了内存。

3. JVM的运行时数据区有哪些?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVcRtdEr-1645435292023)(JVM相关面试题.assets/image-20220221164446774.png)]

  • 方法区
  • 程序计数器
  • 本地方法栈
  • 虚拟机栈

3.1 什么是堆内存?

堆内存是指由程序代码自由分配的内存,与栈内存作区分。在Java中,堆内存主要用于分配对象的存储空间,只要拿到对象引用,所有线程都可以访问堆内存。

3.2 堆内存包括哪些部分?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PwtQwW0K-1645435292024)(JVM相关面试题.assets/image-20220221165623373.png)]

以Hotspot为例,堆内存(HEAP)主要由GC模块进行分配和管理, 可分为以下部分:

  • 新生代
  • 老年代
  • 元空间

3.3 什么是非堆内存?

除堆内存之外,JVM的内存池还包括非堆(NON_HEAP),对应于JVM规范中的方法

区,常量池等部分:

  • MetaSpace 元空间

  • CodeCache

  • Compressed Class Space

4. 什么是内存溢出?

内存溢出(OOM)是指可用内存不足。

程序运行需要使用的内存超出最大可用值,如果不进行处理就会影响到其他进程,所 以现在操作系统的处理办法是:只要超出立即报错,比如抛出 内存溢出错误 。 就像杯子装不下,满了要溢出来一样,比如一个杯子只有500ml的容量,却倒进去 600ml,于是水就溢出造成破坏。

4.1 什么是内存泄漏?

内存泄漏(Memory Leak)是指本来无用的对象却继续占用内存,没有再恰当的时机 释放占用的内存。

不使用的内存,却没有被释放,称为 内存泄漏 。 也就是该释放的没释放,该回收的没回收。 (简称占着茅坑不拉屎)

比较典型的场景是: 每一个请求进来,或者每一次操作处理,都分配了内存,却有一部分不能回收(或未释放),那么随着处理的请求越来越多,内存泄漏也就越来越严重。

在Java中一般是指无用的对象却因为错误的引用关系,不能被GC回收清理。

4.2 两者有什么关系?

如果存在严重的内存泄漏问题,随着时间的推移,则必然会引起内存溢出。 内存泄漏一般是资源管理问题和程序BUG,内存溢出则是内存空间不足和内存泄漏的最终结果。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/3227.html

(0)
小半的头像小半
0 0

相关推荐

  • SpringCloud Alibaba系列 Sentinel(三) 技术随笔

    SpringCloud Alibaba系列 Sentinel(三)

    0 087
    小半的头像 小半
    2023年1月11日
  • C语言之根据摄氏温度求华氏温度 技术随笔

    C语言之根据摄氏温度求华氏温度

    0 0198
    小半的头像 小半
    2023年1月22日
  • mina使用详解 Java

    mina使用详解

    0 0263
    小半的头像 小半
    2022年5月24日
  • 使用PHP-Windows-Builder 构建PHP和扩展入门指南 PHP

    使用PHP-Windows-Builder 构建PHP和扩展入门指南

    0 098
    李, 若俞的头像 李, 若俞
    2024年3月20日
  • 视频基础知识 Python

    视频基础知识

    0 0176
    飞熊的头像 飞熊
    2023年9月5日
  • 【100+ python基础入门-52】Python函数命名空间和作用域 技术随笔

    【100+ python基础入门-52】Python函数命名空间和作用域

    0 0101
    小半的头像 小半
    2023年1月12日
  • 18、Java实现客户端发送邮箱的EmailUtils工具类 技术随笔

    18、Java实现客户端发送邮箱的EmailUtils工具类

    0 0218
    小半的头像 小半
    2023年1月23日
  • 在您的下一个项目中选择 Golang 和 Node.js 之间的抉择 Go语言

    在您的下一个项目中选择 Golang 和 Node.js 之间的抉择

    0 0122
    小半的头像 小半
    2024年3月20日
  • Redis主从复制 技术随笔

    Redis主从复制

    0 098
    小半的头像 小半
    2023年1月21日
  • C# LINQ(4) .NET

    C# LINQ(4)

    0 099
    小半的头像 小半
    2022年5月21日
  • 二叉树相关算法(一)——二叉树的遍历 后端开发

    二叉树相关算法(一)——二叉树的遍历

    0 0111
    小半的头像 小半
    2022年5月28日
  • IDEA设置文件头注释 后端漫谈

    IDEA设置文件头注释

    0 0155
    seven_的头像 seven_
    2023年2月24日

站长精选

  • SpringBoot + Disruptor = 王炸!!

    SpringBoot + Disruptor = 王炸!!

    2022年12月30日

  • 如何看待腾讯又一技术打破了世界纪录?

    如何看待腾讯又一技术打破了世界纪录?

    2023年4月1日

  • 减少 try catch ,可以这样干!

    减少 try catch ,可以这样干!

    2023年4月17日

  • MySQL实现排名(函数方式)

    MySQL实现排名(函数方式)

    2022年12月5日

  • 高性能的手机端神经网络计算框架

    高性能的手机端神经网络计算框架

    2023年11月7日

  • IntelliJ IDEA 中有什么让你相见恨晚的技巧?

    IntelliJ IDEA 中有什么让你相见恨晚的技巧?

    2022年12月25日

  • 图解用户登录验证流程,写得太好了!

    图解用户登录验证流程,写得太好了!

    2023年2月6日

  • JUC多线程:CountDownLatch、CyclicBarrier、Semaphore 同步器原理

    JUC多线程:CountDownLatch、CyclicBarrier、Semaphore 同步器原理

    2023年4月10日

  • 网关 GateWay 的使用详解、路由、过滤器、跨域配置

    网关 GateWay 的使用详解、路由、过滤器、跨域配置

    2023年8月3日

  • Mybatis Plus 批量插入性能优化,非常实用!

    Mybatis Plus 批量插入性能优化,非常实用!

    2023年3月13日

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!

深圳SEO优化公司龙华网站推广惠州网站设计模板坑梓网络推广平湖模板网站建设横岗推广网站同乐seo网站优化布吉网站推广方案坑梓网站开发东莞网站排名优化福田如何制作网站坪地网站改版坪地百度seo坑梓企业网站改版惠州营销网站福永模板推广吉祥百度竞价福田网站推广方案石岩英文网站建设光明至尊标王龙岗SEO按天扣费坪地百度竞价包年推广福田营销网站松岗网站搭建平湖网站建设设计龙华seo排名石岩如何制作网站南联网络广告推广永湖百度竞价大浪企业网站制作木棉湾网站推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化