Java架构技术栈Java 杂谈程序员

JVM与性能优化高级面试32题(收藏版):性能调优+垃圾回收+内

2019-04-07  本文已影响13人  若丨寒

JVM 是小白 Java 程序员成长路上的一道坎,学习JVM之前,只需要知道代码编译成 Class,虚拟机加载 Class 运行就可以了,学习 JVM 之后,可以深入理解代码从编译到加载的过程、内存中对象的创建与垃圾回收、日常开发中快速定位性能问题等,当然也是面试不可缺少的加分项,面对阿里等一线大企业的面试中也是必问之一!

JVM内存区域常见问题

  1. Java 内存分配?
  2. Java 堆的结构是什么样子的?
  3. 什么是堆中的永久代(Perm Gen space)?
  4. 简述各个版本内存区域的变化?
  5. 说说各个区域的作用?
  6. Java 中会存在内存泄漏吗,简述一下?

JVM的执行子系统常见问题

  1. Java 类加载过程?
  2. 描述一下 JVM 加载 Class 文件的原理机制?
  3. 什么是类加载器?
  4. 类加载器有哪些?
  5. 什么是tomcat类加载机制?
  6. 类加载器双亲委派模型机制?

垃圾回收常见问题

  1. 什么是GC? 为什么要有 GC?
  2. 简述一下Java 垃圾回收机制?
  3. 如何判断一个对象是否存活?
  4. 垃圾回收的优点和原理,并考虑 2 种回收机制?
  5. 垃圾回收器的基本原理是什么?
  6. 垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  7. 深拷贝和浅拷贝?
  8. System.gc() 和 Runtime.gc() 会做些什么?
  9. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
  10. 什么是分布式垃圾回收(DGC)?它是如何工作的?
  11. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
  12. 在 Java 中,对象什么时候可以被垃圾回收?
  13. 简述Minor GC 和 Major GC?
  14. JVM 的永久代中会发生垃圾回收么?
  15. Java 中垃圾收集的方法有哪些?

性能优化常见问题

  1. 讲讲你理解的性能评价及测试指标?
  2. 常用的性能优化方式有哪些?
  3. 说说分布式缓存和一致性哈希?
  4. 同步与异步?阻塞与非阻塞?
  5. 什么是GC调优?
  6. 常见异步的手段有哪些?

如何正确系统的学习JVM和性能调优?

所谓系统学习法,是指把所学内容当成是一个系统看待,力求从大方向出发指导学习,这样,在学习和复习的时候不是按部就班按章节行进,而是先模糊概括,再逐渐在大框架下逐步明晰细节、完善结构、针对缺陷和不足专攻的学习方法。区分一个程序猿技术水平和视野的一个重要指标是性能优化,所以面试时,面试官总会问你一个问题,如何进行性能优化呢?

知识笔记导图

Java内存区域

  1. 运行时数据区域(程序计数器、堆、栈等)
  2. 站在线程角度来看堆和栈
  3. 深入辨析堆和栈
  4. 方法的出入栈
  5. 虚拟机中的对象
  6. 堆参数设置和内存溢出实战

垃圾回收器和内存分配策略

  1. 判断对象的存活
  2. 辨析强、弱等各种引用
  3. GC算法
  4. 分代收集
  5. Stop The World现象
  6. GC日志解读
  7. 内存分配与回收策略,内存泄漏和内存溢出辨析
  8. JDK为我们提供的工具
  9. 了解MAT
  10. 垃圾回收器

深入了解性能优化

  1. 常用的性能评价/测试指标
  2. 常用的性能优化手段
  3. 详细了解应用服务性能优化

编写高效优雅Java程序

JVM的执行子系统

  1. Class类文件本质,Class文件格式
  2. 字节码指令
  3. 类加载机制
  4. 栈桢详解
  5. 方法调用详解
  6. 基于栈的字节码解释执行引擎

如果看到这时你的头脑还是一片空白,或是靠死记硬背还是靠着之前的经历,答一下压缩代码,打包代码,事件代理,这说明你对性能优化还是缺乏一个整体,系统的掌握,对性能优化还只是处于听说过一个方法就加上去的阶段。这样也就无从去更好的优化性能。在这分享一个系统学习JVM及性能调优的学习导图并且在文末附Xmind文件笔记免费分享!(建议收藏)

读者福利(学习资料分享)

而针对以上面试技术点,我在这里也做一些技术知识面试专题资料免费分享,希望能更好的帮助到大家。

领取方式:

点点喜欢,加入合作Java架构交流Qqun:935692859,管理员处免费领取资料。

面试答案截图 BAT大厂面试题 更多面试专题

对于很多初级Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

整理的这些架构技术希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。同时我经过多年的收藏目前也算收集到了一套完整的学习资料,希望对想成为架构师的朋友有一定的参考和帮助。

下面是部分资料截图,诚意满满:特别适合有2-5年开发经验的Java程序员们学习。

领取方式:

点点喜欢,加入合作Java架构交流Qqun:935692859,管理员处免费领取资料。

(部分资料如下)

部分视频资料
上一篇下一篇

猜你喜欢

热点阅读