前言
JVM对实际简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以及弄清楚JVM的工作原理,其实我个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的Java开发来说,这是Java的基石。
其次,从各大招聘平台来看,一线互联网企业招聘需求(尤其是阿里巴巴),第一条就明确了要掌握JVM原理,因为JVM是中高级程序员必须要掌握的技术,学JVM也是为了更深入地理解Java以及更好的解决线上排查问题。
网上有关Java虚拟机的资料主要还是周志明的《深入理解Java虚拟机》,今天我就带大家来看看阿里云大师如何深入拆解Java虚拟机,让你更深入更通俗的理解JVM。
一轮:
第一轮面试官(是一位女性,喜欢钻研一些细节性的东西)
自我介绍
1、 HashMap和ArrayList的原理解释下。
2、 Netty原理介绍下。
3. 了解过NIO,BIO,AIO么?介绍下异同,代码中如何使用?
4. 分布式锁用过么?用什么函数?什么使用场景?
5. 能介绍下垃圾回收机制么?
6. redis的数据结构介绍下。项目中用过哪些?什么场景
7. 幂等性是什么?如何保障?
8. 交易系统中的数据一致性咋保障?
二轮:
第二轮面试官(年龄看起来不大,人很好说话,给人一种很舒服的感觉)
自我介绍
9. 项目中的mongoDB使用场景是啥?如何部署的?怎么保证高可用性?
10. JVM的内存结构能介绍下么?
11. CMS和G1的优缺点?什么时候发生FULL GC?什么时候stop the world!
12. 什么样的对象能当根节点?
13. 一个类,两个函数,一读一写,写函数加synchronized,读函数还用加么?voliate关键字啥作用?
14. 数据库设计时,主键咋设?自增好还是非自增好?为啥?
15. mysql的锁类型介绍下
16. 线上CPU 100%了怎么查?
17. 写个算法,给一个数字,一个单调数组中,方法返回数组中第一个大于给定数字的下标,如果没有,返回-1。
第三轮:
第三轮面试官(应该是部门主管,比较严格)
你职业生涯中哪些事比较有亮点?
你的职业规划是啥?以后想怎么发展?
2、spring-cloud是否了解,spring-boot是了解,讲一讲bean的生命周期
3、hashmap-1.8后的改进,hashmap为什么是线程不安全的
4、如何做到线程安全,concurrenthashmap是怎么实现的
5、用到哪些的设计模式
6、ThreadLocal用过吗
7、类的加载机制
8、JVM-内存模型
9、垃圾回收
10、redis源码有读过吗
11、擅长的做什么
12、职业规划是什么
13、考虑过管理吗
《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源
Java优秀开源项目:
-
ali1024.coding.net/public/P7/Java/git
- github.com/spring-projects
最后
最后,强调几点:
- 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
- 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
- 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。