写点什么

7 面阿里,最后一面居然挂在了 JVM 上面!狠下决心恶补 JVM 知识

发布于: 2020 年 11 月 18 日

写在前面



普通二本毕业,四年工作经验,前段时间有幸获得阿里面试机会,对此本人也是非常重视,准备得特别充分!前前后后总共面了7面,前6面都是顺利通过,没想到最后一面的时候挂在了JVM上面!



JVM面题如下:



讲一下JVM堆内存管理(对象分配过程)



两个Region不是连续的,而且之间还有可达的引用,我现在要回收一个,另一个怎么处理?



.听说过CMS的并发预处理和并发可中断预处理吗?



到底多大的对象会被直接扔到老年代?



ThreadL ocal有没有内存泄漏问题?



我只答出来两道,最后痛失offer 失去了进阿里的机会。回去之后我下定决心要恶补JVM知识。掏出了我以前丢到收藏夹吃灰的JVM学习资源开启了我的恶补之路。



在此也是把我的JVM学习资源分享给大家,大家共同学习一起进步!



一、JVM学习进阶思维脑图(来自一位骨灰级扫地僧整理)



JVM知识点全部都总结在这里面了,清晰明了的确定学习JVM的方向!



需要的老铁请转发+关注,然后添加VX(tkzl6666)即可获得【JVM学习资源】的免费领取方式!





二、《JVM体系结构与GC调优》PPT(来自阿里P8Java架构师整理)



本PPT从JVM体系结构概述、GC算法、Hotspot内存管理、Hotspot垃圾回收器、调优和监控工具六大方面进行讲述。



此PPT长达46页,全部展示篇幅过长,随意抽出9张作为展示。























三、JVM调优实战视频合集(来自马士兵大佬亲授)



马士兵老师用四个小时,带你走进JVM实战调优的世界,帮助你在面对那些上亿用户,千万QPS,百万TPS,以及每天上PB级大数据量处理系统的时候,不再胆怯,不再心虚,开启涨薪升级之旅!



需要的老铁请转发+关注,然后添加VX(tkzl6666)即可获得【JVM学习资源】的免费领取方式!





1、什么是垃圾?



2、如何定位垃圾?



3、常用垃圾回收算法



4、常用垃圾回收器



5、系统上线前预估系统的内存占用情况



6、系统上线前预估系统的并发访问情况



7、根据预估值设定JVM初始参数



8、压力测试方法论



9、根据压测结果调整参数值



10、系统上线后设定日志参数



11、定期观察日志情况



12、根据日志解决实战问题



13、为什么一个百万级TPS系统会频繁GC?



14、定位JVM问题的实用参数设置



15、用top命令观察系统运行情况



16、用jps定位虚拟机进程



17、用jstat定位JVM问题



18、用jmap导出内存转储文件



19、用jstack定位问题线程



20、用jhat分析转储文件



21、其他给力的工具visual VM,MAT,Arthas介绍



22、动手实战



四、《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明著》



这本书Java程序员一定要读一读,目前这本书的电子版市面上很难找到!



本书浅显易懂。最重要的是开启一扇理解虚拟机的大门。



内存管理机制与Java内存模型、高效并发这三章是特别实用的。



需要的老铁请转发+关注,然后添加VX(tkzl6666)即可获得【JVM学习资源】的免费领取方式!





第1章 走近]ava



第2章 Java内 存区域与内存溢出异常



第3章 垃圾收集器与内存分配策略



第4章 虚拟机性能监控、故障处理工具



第5章 调优案例分析与实战



第6章 类文件结构



第7章 虚拟机类加载机制



第8章 虚拟机字节码执行引擎



第9章 类加载及执行子系统的案例与实战



第10章 前端编译与优化



第11章 后端编译与优化



第12章 Java内存模型与线程



第13章 线程安全与锁优化



五、JVM面试题及答案



需要的老铁请转发+关注,然后私信回复关键字 “233” 即可获得【JVM学习资源】的免费领取方式!





1. 内存模型以及分区,需要详细到每个区放什么。



2. 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。



3. 对象创建方法,对象的内存分配,对象的访问定位。



4. GC 的两种判定方法



5. SafePoint 是什么



6. GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?



7. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。



8. Minor GC 与 Full GC 分别在什么时候发生?



9. 几种常用的内存调试工具:jmap、jstack、jconsole、jhat



10. 类加载的几个过程



11.JVM 内存分哪几个区,每个区的作用是什么?



12.如何判断一个对象是否存活?(或者 GC 对象的判定方法)



13.简述 java 垃圾回收机制?



14.java 中垃圾收集的方法有哪些?



15.java 内存模型



16.java 类加载过程?



17. 简述 java 类加载机制?



18. 类加载器双亲委派模型机制?



19.什么是类加载器,类加载器有哪些?



20.简述 java 内存分配与回收策略以及 Minor GC 和Major GC



JVM在性能调优中使用非常广泛,无论什么级别的Java从业者,JVM是进阶时必须迈的坎。如果不懂JVM的话,薪酬会非常吃亏。除了面试,学习JVM有利于更深入地理解 Java 这门语言,学好JVM,为未来排查线上问题打下坚实的基础。



用户头像

添加我的微信:tkzl6666 获取文中资料 2020.09.19 加入

添加我的微信:tkzl6666 获取文中资料

评论 (2 条评论)

发布
用户头像
666
2020 年 11 月 18 日 16:50
回复
用户头像
7 面阿里,最后一面居然挂在了 JVM 上面!狠下决心恶补 JVM 知识
2020 年 11 月 18 日 16:50
回复
没有更多了
7面阿里,最后一面居然挂在了JVM上面!狠下决心恶补JVM知识