JVM是Java程序的运行环境,因此对于JVM的掌握有助于理解Java程序的执行以及编写,尤其是运行时碰到的一些诡异问题,那么怎么样能考察自己对于JVM关键知识点的掌握情况,帮助学习JVM机制呢,在这篇blog中来探讨下。
对于Java程序而言,JVM的关键机制有:字节码的加载、方法的执行、对象内存的分配和回收、线程和锁机制,这几个机制涉及到的jvm的知识点远没有写这几个字这么简单,里面的复杂度还是非常高的。
字节码的加载
JVM通过ClassLoader来完成字节码的动态加载,这里面涉及到的主要是ClassLoader的双亲委派、ClassLoader的编写方法、Class是否被加载的唯一标识以及Class的加载过程。
在考察的时候我觉得可以以这么两道简单的题来考察:
1、写一段将目录中指定的.class文件加载到JVM的程序,并通过Class对象获取到完整类名等信息;
2、一段展示代码,里面包含一个全局静态整型变量,问如果用两个ClassLoader加载此对象,执行这个整型变量++操作后结果会是怎么样的?
方法的执行
JVM有自己的一套指令系统,字节码中即已经是指令了,需要大概掌握了JVM对static、interface、instance、构造器采用的不同的执行方法,另外就是JVM中反射的实现(可以以Sun JDK来举例)、动态代理的实现,最后相关的就是JVM执行字节码的方式(解释、JIT、Hotspot),以及什么时候触发编译成机器码,如何控制。
在考察的时候我觉得可以以这么三道题来考察:
1、A a=new A();a.execute();和IA a=new A();a.execute();执行有什么不同;
2、反射的性能低的原因是?
3、编写一段程序,动态的创建一个接口的实现,并加载到JVM中执行;(可以允许用BCEL等工具)
对象内存的分配和回收
这块涉及的知识点也是比较的多,例如JVM内存区域的划分、自然类型和引用类型的内存分配的不同、TLAB、GC的算法、Sun JDK对于GC的实现、GC触发的时机、GC的跟踪和分析的方法。
在考察的时候我觉得可以以这么三道题来考察:
1、经典的String比较程序题:
String a="a";
String b="b";
String ab="ab";
(a+b)==ab; ?? (引深题,如何才能让(a+b)==ab)
("a"+"b")==ab; ??
2、写一段程序,让其OutOfMemory,或频繁执行Minor GC,但又不触发Full GC,又或频繁执行Full GC,但不执行minor GC,而且不OutOfMemory,甚至可以是控制几次Minor GC后发生一次Full GC;
3、详细讲解GC的实现,例如minor GC的时候导致是怎么回收对象内存的,Full GC的时候是怎么回收对象内存的。
线程和锁机制
这块涉及的知识点仍然是非常的多,例如线程中变量的操作机制、线程调度机制、线程的状态以及控制方法、线程的跟踪和分析方法、同步关键字、lock/unlock的原理等。
在考察的时候我觉得可以以这么几道题考察下:
1、i++的执行过程;
2、一个线程需要等待另外一个线程将某变量置为true才继续执行,如何编写这段程序,或者如何控制多个线程共同启动等;
3、控制线程状态的转换的方法,或者给几个thread dump,分析下哪个线程有问题,问题出在哪;
4、static属性加锁、全局变量属性加锁、方法加锁的不同点?
转自:http://www.blogjava.net/BlueDavy/archive/2009/03/27/262419.html
分享到:
相关推荐
下面是JVM面试题目相关的知识点: 一、JVM架构 JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native ...
本文将全面探讨这些核心知识点,并提供相关面试题目的解答。 首先,JVM内存主要分为五个区域:堆区、栈区、方法区、本地方法栈和程序计数器。堆区是所有对象的诞生地,包括数组,分为新生代(Eden + Survivor,...
Java的知识点非常丰富,对于求职者来说,准备Java面试时需要掌握的知识点众多,这些知识点主要涵盖Java基础、面向对象编程、Java集合框架、多线程和并发编程、网络编程、Java虚拟机(JVM)以及流行的框架和工具等。...
本文将深入探讨Java基础知识、集合框架、JVM原理、Java并发编程、数据结构与算法、算法实践、计算机网络、设计模式、MySQL数据库以及Redis等关键知识点,并结合LeetCode和剑指offer等编程题目,为读者提供一个全面的...
JVM面试题目和答案(2025最新版)涵盖了JVM的众多核心知识点,对于准备Java面试的开发者而言,是不可多得的参考资料。通过对这些题目的理解和学习,开发者可以加深对JVM内部机制的理解,提升在面试中的竞争力。
本文档旨在整理JVM相关的核心知识点,覆盖了常见的面试题目,主要包括JVM的内存模型、垃圾回收机制以及性能调优等方面。 首先,JVM的内存结构是面试中的高频考点。JVM内存主要分为堆(Heap)、栈(Stack)、方法区...
综合了常见的jvm 知识点,面试题。配图文,详解,以及答案。 一些简单题目未更新,后面会陆续补上。Java-jvm-面试-专题
JVM运行时内存是Java开发者需要了解的重要知识点之一。 新生代 新生代是一种JVM运行时内存区域,它用于存储短期生命周期的对象。新生代是Java开发者需要了解的重要知识点之一。 Eden区 Eden区是一种新生代内存...
Java作为一门广泛使用的编程语言,其知识点丰富多样,尤其在面试和实际开发中扮演着重要角色。本资料主要涵盖了以下几个核心领域: 1. **Java基础**:Java的基础知识包括语法特性,如类、对象、封装、继承、多态等...
本资源"【互联网一线大厂面试+学习指南】 涵盖大部分Java程序员所需要的面试知识点和面试技巧,分享真实面试经历"是一个宝贵的资料库,旨在帮助Java开发者提升自己的技能,成功通过一线大厂的面试。 首先,Java...
通过解决这些题目,你可以实践并巩固前面提到的各个知识点。 计算机网络是软件开发者的基础知识,包括TCP/IP协议、HTTP协议、DNS解析、网络模型等,这些在设计分布式系统或处理网络通信问题时会用到。 设计模式是...
内容概要:本文档是一份...阅读建议:此文档不仅提供了理论知识的选择题,还包含实际编码练习和系统设计题目,建议读者在复习相关知识点的同时,动手实践编程题,并思考高并发系统的架构设计,以全面提升技术水平。
内容概要:本文档整理了腾讯公司Java岗位的面试题目,涵盖了广泛的Java相关知识点。主要内容包括Java基础概念如数据类型、字符串操作、集合框架、IO模型、反射机制等;深入探讨了JVM的工作原理,如内存结构、垃圾...
以下是对标题和描述中提到的Java知识点的详细说明: 1. **Java基础**:这是学习Java的第一步,包括基本语法、数据类型、流程控制(如if-else、switch-case、for、while等)、类和对象、封装、继承、多态等概念。...
这份"最全的java知识点-面试题目等汇总"涵盖了Java学习和求职面试的关键知识点,包括基础语法、面向对象特性、数据结构与算法、代码规范等多个方面。下面我们将深入探讨这些核心主题。 1. **Java基础**: Java的基础...
【JVM内存模型详解】 Java虚拟机(JVM)内存模型是Java程序...总的来说,理解和掌握JVM内存模型及其管理机制对于优化Java应用程序性能至关重要,尤其是在面试中,这些知识点常常成为考察开发者技术深度的重要方面。
【标题】"JVM面试题 PDD 下载"所涉及的知识点主要集中在Java虚拟机(JVM)上,这是Java编程中的核心部分,对于开发者尤其是面试者来说,深入理解JVM至关重要。PDD可能指的是“问题、解答、讨论”或者“拼多多”(PDD...
Java程序员面试时通常会遇到一系列的面试题,这些题目涉及到Java的基础知识、集合框架、多线程编程、JVM原理以及设计模式等方面。下面我们来详细了解一下这些方面的核心知识点。 在Java基础方面,面向对象的三大...
以下是对这些知识点的详细解析: 1. **23种设计模式**:设计模式是软件开发中的一种最佳实践,它总结了在特定场景下解决问题的通用方法。包括创建型(如单例、工厂方法、抽象工厂)、结构型(如适配器、装饰器、...