首页 > 图灵资讯 > 技术篇>正文

10道Java虚拟机面试题(附答案)

2023-03-23 15:14:12

  对许多人来说学习java编程的人来说,java虚拟机是学习的重点和难点,因为系统包装太好,在编写程序时可能感觉不到虚拟机的存在,导致很多人没有系统地学习虚拟机,但java虚拟机是java面试中经常出现的内容,所以今天整理出来了

  10道经典

  java虚拟机面试题,您可以根据以下内容学习java虚拟机的重点知识。

  1、Java虚拟机是什么?Java为什么被称为?“编程语言与平台无关”?

  答:Java虚拟机是一个可以执行Java字节码的虚拟机过程。Java源文件被编译成可以由Java虚拟机执行的字节码文件。Java被设计成允许在任何平台上运行的应用程序,而无需

  java程序员

  单独重写或重新编译每个平台。Java虚拟机因为知道底层硬件平台的指令长度和其他特性,所以可以使这一点成为可能。

  2、虚拟机和物理机有什么区别?

  答:这两种机器都有代码执行能力,但物理机器的执行引擎直接基于处理器、硬件、指令集和操作系统。虚拟机的执行引擎是自己实现的,所以可以自己制定指令集和执行引擎的结构系统,执行硬件不直接支持的指令集格式。

  3、解释java内存模型的概念

  A:Java内存模型是Java Memory Model,简称JMM。Javavava 虚拟机(JVM)计算机内存(RAM)围绕并发过程中如何处理原子性、可见性和有序性三个特点,建立了中间的工作模式。Java 存储模型规定所有变量都存储在主内存中(Main Memory)中。每个线程都有自己的工作内存。线程的工作内存保存了线程中使用的变量的主内存副本。线程中所有变量的操作(读取、赋值等)必须在工作内存中进行,而不是直接读写主内存中的变量。不同的线程不能直接访问对方工作内存中的变量,线程间变量值的传输需要通过主内存来完成。

  4、类别加载器的类型?

  答:(1)启动类加载器,Bootstrap ClassLoader,加载JAVA_HOME\lib,或受Xbotclasspath参数限制的类别;(2)扩展加载器,Extension ClassLoader,加载\lib\ext,或者java.ext.dirs系统变量指定的类别;(3)应用程序加载器,Application ClassLoader,加载Classpath中的类库;(4)通过继承Classloader实现自定义加载器,一般是加载我们自定义的双亲分配模型。

  5、编译执行和解释执行是什么?

  答:编译执行:

  简单地说,需要编译源程序,生成目标文件,然后计算机执行目标程序。虽然编译过程比上述翻译过程更复杂(通常语法分析代码,优化代码,分配内存,最终形成目标文件),但一旦目标文件形成,一劳永逸,无需编译,执行速度更快。

  解释执行:

  它的特点是逐句翻译源语言写的源语句,并将其提交给计算机执行,而不形成目标程序。它的优点是翻译本身并不麻烦。它的缺点是运行速度慢。例如,当程序中有循环条件时,循环中的句子会被多次翻译,从而影响运行速度。

  6、类装载步骤?

  答:分为以下几类5步:(1)加载:根据搜索路径找到相应的class文件并导入;(2)检查:检查加载的class文件的正确性;(3)准备:将内存空间分配给类中的静态变量;(4)分析:虚拟机用直接引用替换常量池中的符号。符号引用被理解为直接指向内存的标记地址;(5)初始化:静态变量和静态代码块的初始化。

  7、JVM调优工具?

  答:JDK有很多自己的监控工具,都在JDK的bin目录下,其中Jconsole和jvisualvm是最常用的两种视图监控工具。

  jconsole:用于对 监控JVM中的内存、线程和类别;

  jvisualvm:JDK 可以分析自己的全方位分析工具:内存快照、线程快照、程序锁定、监控内存变化、GC变化等。

  8、Java虚拟机调用字节码指令有哪些?

  答:invokestatic:调用静态方法;invokespecial:调用实例结构器法、私有法和父类法;invokevirtual:调用所有虚拟方法;invokeinterface:调用接口法。

  9、JVM内存模型是什么?

  答:Java内存模型(JMM),JMM决定何时将一个线程写入共享变量到另一个线程。从抽象的角度来看,JMM定义了线程与主内存之间的抽象关系:线程之间的共享变量存储在主内存中(main memory)在中间,每个线程都有私有本地内存(local memory),该线程的读写共享变量副本存储在本地内存中。本地内存是JMM的抽象概念,并不真实。它涵盖了缓存、写缓冲区、寄存器等硬件和编译器的优化。

  10、在java虚拟机中,哪些对象可以用作ROOT对象?

  答:虚拟堆栈中的引用对象;方法区中类静态属性引用对象;方法区常量引用对象;当地方法堆栈引用JNI的对象。

  以上是本文整理的。java虚拟机面试题有10个,适合java零基础刚了解虚拟机的人java初学者学习内容,也有稍微困难的面试问题,适合不同能力的人学习。我希望这篇文章能帮助你顺利通过面试。

上一篇 自增自减运算符知识汇总
下一篇 Java数据浮点型

文章素材均来源于网络,如有侵权,请联系管理员删除。