JVM知识点题目
Posted onJVM知识点题目
BlueDavy之技术Blog
理论不懂就实践,实践不会就学理论!
JVM知识点题目
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属性加锁、全局变量属性加锁、方法加锁的不同点?
posted on 2009-03-27 14:30 BlueDavy 阅读(7897) 评论(9) 编辑 收藏 所属分类: Java
[
评论
]()
/# re: JVM知识点题目 2009-03-27 15:28 flyisland
/# re: JVM知识点题目 2009-03-27 16:05 云襄
/# re: JVM知识点题目 2009-03-27 19:27 问问
/# re: JVM知识点题目[未登录] 2009-03-27 20:15 逝水fox
/# re: JVM知识点题目[未登录] 2009-03-28 15:55 kimi
关于ClassLoader的两个问题 第一个题目把文件系统中的.class文件读到一个bute数组中,使用ClassLoader的defineClass方法把这个byte数组传递给jvm,则返回一个Class对象,通过这个Class对象可以做关于一个对象的任何事情,但defineClass方法是protected的,所以要写一个ClassLoader的子类,也就是实现一个自己的ClassLoader。 第二个题目由于Java中ClassLoader本质上是定义了一个Class的集合,而且ClassLoader之间是项目隔离的,除非它们之间是父子关系,但即使这样,只能是子ClassLoader能看到父ClassLoader定义的Class,父ClassLoader看不到子ClassLoader定义的Class,所以使用一个ClassLoader加载的类的静态变量执行++操作,对另一个ClassLoader加载的对象的静态变量是没有影响的。 班门弄斧了,还请博主指正我的回答是否正确。 回复 更多评论
/# re: JVM知识点题目 2009-05-24 01:51 ttt
/# re: JVM知识点题目 2011-12-31 14:33 whwang
这题太狠了: 3、编写一段程序,动态的创建一个接口的实现,并加载到JVM中执行;(可以允许用BCEL等工具) 回复 更多评论
/# re: JVM知识点题目 2012-01-02 00:23 斌斌
将目录里的/*.class filter出来,getName一个个来 回复 更多评论
/# re: JVM知识点题目 2012-08-10 17:04 jb
1.1 findclass 1.2 不同classloader加载的class是不同的class,其实包名与文件名都相同 2.3用asm 框架 writeclass 回复 更多评论 新用户注册 刷新评论列表
推荐购买云服务器(15%返利+最高千元奖金) 博客园 博问 IT新闻 Java程序员招聘 标题 请输入标题 姓名 请输入你的姓名 主页 请输入验证码 验证码 /* 内容(请不要发表任何与政治相关的内容) 请输入评论内容 Remember Me? 登录 [使用Ctrl+Enter键可以直接提交] 网站导航:
博客园 IT新闻 知识库 C++博客 程序员招聘 管理 相关文章:
- 关于《分布式Java应用:基础与实践》一书
- 杭州程序员圆桌交流第二期视频
- 第一次杭州程序员交流会总结
- 杭州程序员圆桌交流第一期–并发编程PPT
- GCLogViewer(tool to visualize gc log) V0.2 Release
- Simple Scala actor Vs java Thread Vs Kilim Test
- 《构建高性能的大型分布式Java应用》目录&试读样章
- 动态跟踪Java代码的执行状况工具--BTrace
- GC策略的调优
- Hessian 3.2.0的两个bug
Powered by: BlogJava Copyright © BlueDavy公告
导航
- BlogJava
- 首页
- 新随笔
- 联系
- 聚合
- 管理 <2009年3月>日一二三四五六22232425262728123456789101112131415161718192021222324252627282930311234
统计
- 随笔 - 294
- 文章 - 2
- 评论 - 2068
- 引用 - 1
随笔分类
- @RIAWork(10) (rss)
- Internet(20) (rss)
- Java(82) (rss)
- Javascript(7) (rss)
- OSGi、SOA、SCA(81) (rss)
- Plugin Architecture(10) (rss)
- Workflow(4) (rss)
- 业界随想(28) (rss)
- 数据集成(8) (rss)
- 系统设计(38) (rss)
- 软件工程(22) (rss)
随笔档案
- 2010年5月 (3)
- 2010年4月 (4)
- 2010年3月 (3)
- 2010年2月 (1)
- 2010年1月 (2)
- 2009年12月 (1)
- 2009年11月 (3)
- 2009年10月 (2)
- 2009年9月 (2)
- 2009年8月 (2)
- 2009年7月 (3)
- 2009年6月 (1)
- 2009年5月 (4)
- 2009年4月 (5)
- 2009年3月 (5)
- 2009年1月 (1)
- 2008年11月 (3)
- 2008年10月 (1)
- 2008年9月 (2)
- 2008年8月 (1)
- 2008年7月 (4)
- 2008年6月 (4)
- 2008年5月 (3)
- 2008年4月 (1)
- 2008年3月 (3)
- 2008年2月 (1)
- 2008年1月 (10)
- 2007年12月 (2)
- 2007年11月 (2)
- 2007年10月 (6)
- 2007年9月 (2)
- 2007年8月 (4)
- 2007年7月 (5)
- 2007年6月 (2)
- 2007年5月 (4)
- 2007年4月 (2)
- 2007年3月 (2)
- 2007年2月 (2)
- 2007年1月 (1)
- 2006年12月 (6)
- 2006年11月 (5)
- 2006年10月 (8)
- 2006年9月 (13)
- 2006年8月 (15)
- 2006年7月 (3)
- 2006年6月 (7)
- 2006年5月 (9)
- 2006年4月 (12)
- 2006年3月 (13)
- 2006年2月 (9)
- 2006年1月 (14)
- 2005年12月 (11)
- 2005年11月 (14)
- 2005年10月 (9)
- 2005年9月 (10)
- 2005年8月 (5)
- 2005年7月 (9)
- 2005年6月 (9)
- 2005年5月 (2)
- 2005年2月 (1)
文章档案
Blogger's
- DBANotes
- 大名鼎鼎了,勿需多说
- ESBZone (rss)
- SOA实战者,强烈推荐
- kenwu's blog[推荐] (rss)
- Java底层和JVM的很多文章,强烈推荐。
- 梦想风暴
- 西湖边的穷秀才
搜索
*
最新评论
- 1. re: 关于《分布式Java应用:基础与实践》一书
- 博主 大神啊 这个博客很久没有更新了
- --1836567962@qq.com
- 2. re: 网站架构相关PPT、文章整理(更新于2009-7-15)
- 这个文章很有用,收藏
- --度哥网
- 3. re: OSGi Opendoc & Book
- 评论内容较长,点击标题查看
- --stono
- 4. re: OSGi Opendoc & Book
- 我再看《OSGi》原理与最佳实践,可是源码没有办法下载呀; 有没有什么办法呢?
- --stono
- 5. re: 关于《分布式Java应用:基础与实践》一书
- 在这篇blog中放置了我收集的一些网站架构相关的PPT和文章
- --色都
阅读排行榜
- 1. 大型网站架构演变和知识体系(57638)
- 2. 网站架构相关PPT、文章整理(更新于2009-7-15)(38732)
- 3. Hibernate实践(31780)
- 4. 系统设计说明书(架构、概要、详细)目录结构(24258)
- 5. 发布《OSGi实战》正式版(17725)