【Java面试】带你从面试官的角度深入剖析,什么是Java虚拟机为什么要使用?

“什么是Java虚拟机,为什么要使用”。
最近一个1年Java开发经验的同学去面试阿里,遇到这个问题向我求助。
大家好,我是Mic,一个工作14年的Java程序员。
那么,这个问题,面试官希望考察什么呢?

问题解析

Java虚拟机,是Java应用程序运行的平台。

很多初学者,第一步基本上都是学习怎么写代码,并没有关注Java代码所运行的平台。

因此,虽然写了几年代码,但是对Java本身的理解不够深刻,程序一旦出现问题,很难排查和解决。

面试官考察这个问题的出发点,我认为有三个

  • 了解求职者对于Java语言的理解深度,这个方面有助于提升代码编写的质量
  • 了解求职者对于JVM基础的掌握程度,良好的基础有助于快速解决GC问题、内存问题等
  • 考察求职者的潜质,一个对技术有热情的人,有助于更好的陪伴公司成长

所以,对于这个问题来说,我们只需要从JVM关键特性Write Once、Run Anywhere这个角度去切入解释就行了。

下面我们来看看高手应该怎么回答。

高手:

Java虚拟机是Java语言的运行环境。

之所以需要Java虚拟机,主要是为Java语言提供Write Once,Run Anywhere能力。

实际上,一次编写,到处运行这个能力本身是不可能实现的。因为不同的操作系统和硬件。

最终执行的指令会有较大的差异。

而Java虚拟机就是解决这个问题的,它能根据不同的操作系统和硬件差异,生成符合这个平台机器指令。

简单理解,它就相当于一个翻译工具,在window下,翻译成window可执行的指令,在linux下,翻译成linux下可执行的指令。

除了这个因素以为,我认为自动回收垃圾这个功能也是原因之一,它让开发者省去了垃圾回收这个工作。

减少了程序开发的复杂性。

总结

好了,今天的分享就到这里结束了

如果喜欢我的作品,记得点赞、收藏、关注!!!

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

【Java面试】带你从面试官的角度深入剖析,什么是Java虚拟机为什么要使用?

Original: https://www.cnblogs.com/mic112/p/16642893.html
Author: 跟着Mic学架构
Title: 【Java面试】带你从面试官的角度深入剖析,什么是Java虚拟机为什么要使用?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619607/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • LeetCode.1078-两词出现后的单词(Occurrences After Bigram)

    这是小川的第 392次更新,第 422篇原创 今天介绍的是 LeetCode算法题中 Easy级别的第 254题(顺位题号是 1078)。给出单词 first和单词 second,…

    Java 2023年6月5日
    067
  • c#读取ini文件

    ini 文件(保存为test.ini): [first]one=one’s Value[second]two=two’s Value[third]key1=…

    Java 2023年5月29日
    0100
  • 基于springframework框架的不同网络请求request方式传参

    一、get方式 1.在url路径上传递参数,形如 /getTask/{taskId} 如/getTask/111 2.在url后面以?形式传递参数,形如/getTask?taskI…

    Java 2023年5月30日
    065
  • nginx配置返回文本或json

    有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx快速实现,这样就不用编写程序响应请求了,可以减少…

    Java 2023年5月30日
    069
  • hit软构博客1–git工具使用的学习

    做实验一时只会基本的git使用,对git并不熟悉,因此进行学习。 1工作区:项目文件夹 2暂存区 3本地库 4远端仓库 git学习 #常用命令 git config –…

    Java 2023年6月5日
    091
  • SpringBoot后端接口项目

    创建SpringBoot项目 项目目录 实体类 点击查看代码 package com.bai.entity; import com.baomidou.mybatisplus.ann…

    Java 2023年6月15日
    056
  • 企业微信会话存档消息解密(Java RSA PKCS1解密)

    https://www.cnblogs.com/eleclsc/p/12082000.html 转:https://www.cnblogs.com/zengsf/p/1013688…

    Java 2023年5月29日
    060
  • AUSTOj4

    LinkList可以定义指向List的指针 1.当函数参数为LinkList L时,意味着只改变或操作List的内容,而不需要改变L这个指针 2.当参数为LinkList &amp…

    Java 2023年6月15日
    072
  • java Script

    JavaScript JavaScript(简称”JS”)是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言,弱类型,脚本语言 三大部分 核心(E…

    Java 2023年6月6日
    079
  • java_day04

    :: :: :: :: ::java_day04 Java基础 包机制 包实质上就是文件夹 *一般利用公司域名倒置作为包名 JavaDoc javadoc命令是用来生成自己的API…

    Java 2023年6月5日
    057
  • 多线程编程总结:一、认识多线程本质

    在当今计算机系统中,已经大量存在多核心CPU,或者是在多核心基础上有进一步的超线程技术将虚拟CPU数量翻倍。在计算机发展之初,我们的应用程序是按照一个CPU只做一件事情来应用,也就…

    Java 2023年5月30日
    074
  • JVM-虚拟机栈

    运行时数据区-虚拟机栈 JAVA技术交流群:737698533 java虚拟机在执行java程序过程中会把它所管理的内存划分为若干个不同的区域,这些区域各有各的作用,根据java虚…

    Java 2023年6月6日
    063
  • mybatisplus不支持sum,但支持这个

    我们知道,要对数据求和,写sql很简单:select sum(exp) from table_name我们在用mybatisplus做求和计算的时候,mybatisplus的Wra…

    Java 2023年6月15日
    064
  • nginx跨域问题

    今天遇到一个新的跨域问题,弄了大半天 问题描述 看到跨域问题首先想到的是nginx代理有没有配,于是找测试去查了nginx的配置,发现做了代理的,这下不知道该怎么办了。。。。 于是…

    Java 2023年5月30日
    065
  • 分布式事务篇

    点赞再看,养成习惯,微信搜索「 小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 分布式事务的四种处理措施 在分布式系统中实现分布式…

    Java 2023年6月8日
    072
  • 云原生系列4 批量定时更新本地代码库

    图中是一个自动化的机械流水线。 作为一名程序员,每天一定有非常多工作是每天必须重复的, 如何消除重复性的工作?也让自己日常重复工作自动化呢? 背景和需求 开发人员入职一家新公司,一…

    Java 2023年6月8日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球