入门到入坟,十年架构师经验汇总:Java架构修行宝典
Posted JAVA烂猪皮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门到入坟,十年架构师经验汇总:Java架构修行宝典相关的知识,希望对你有一定的参考价值。
走过路过不要错过
写在前面
古人云:凡事预则立,不预则废。机会都是垂青有准备的人的。为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事做完,即便有计划外事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。
如今,一线互联网行业对IT人才的需求也越来越大,甚至对于人才的培养给予了一定的支持。据内部消息称,BAT大厂也非常鼓励培养人才,对此还发布了相关的一些相关的培训和指导,今天我们要聊到的,是一份内部发布的Java架构师面试宝典与Java架构师修行宝典,看完之后或许可以不用再怀疑人生了,学习Java也能如此简单,完美!
Java架构师面试宝典与修行宝典
内容包含:JVM(柒拾柒题)、mysql(捌拾叁题)、Redis(伍拾题)、Memcached(贰拾肆题)、String(壹佰叁拾壹题)、Spring Boot(玖拾贰题)、Spring Cloud(叁拾伍题)、JavaOOP(壹佰零捌题)、Java集合/泛型(贰拾肆题)、Java异常(捌题)、JavaIO与NIO(拾伍题)、Java反射(拾壹题)、Java序列化(拾题)、Java注解(贰题)、多线程&并发(壹佰零捌题)、MongoDB(玖拾伍题)、RabbitMQ(叁拾贰题)、Dubbo(肆拾题)、MyBatis(贰拾捌题)、ZooKeeper(肆拾玖题)、数据结构(玖题),算法(贰拾壹题)、Elasticsearch(贰拾肆题)、Kafka(贰拾伍题)、微服务(伍拾题)、Linux(肆拾捌题)合计:壹仟壹佰玖拾玖题
JVM(柒拾柒题)
知识点整理
基本概念:JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、个栈、一个垃圾回收,堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。
1.java中会存在内存泄漏吗,请简单描述
会。自己实现堆载的数据结构时有可能会出现内存泄露
2.64位JVM中,int的长度是多数?
Java中。int类型变量的长度是一个固定值,与平台无关,都是32位。意思就是说,在32位和64位的Java虚拟机中,int类型的长度是相同的。
3.Serial与Parallel GC之间的不同之处?
Serial与Parallel在GC执行的时候都会引起stop-the-world,它们之间主要不同serial收集器是默认的复制收集器,执行GC的时候只有一个线程,而parallel 收集器使用多个GC线程来执行。
4.32位和64位的JVM, int 类型变量的长度是多数?
32位和64位的JVM中,int类型变量的长度是相同的,都是32位或者4个字节。
5.Java中WeakReference与SoftReference 的区别?
虽然WeakReference与SoftReference都有利于提高GC和内存的效率,但是WeakReference, 一旦失去最后一个强引用,就会被GC回收,而软引用虽然不能阻止被回收,但是可以延迟到JVM内存不足的时候。
6.JVM选项-XX:+UseCompressedOops有什么作用?为什么要使用!
当你将你的应用从32位的JVM迁移到64位的JVM时,由于对象的指针从32位增加到了64位,因此堆内存会突然增加,差不多要翻倍。这也会对CPU缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到64位的JVM主要动机在于可以指定最大堆大小,通过压缩OOP可以节省一定的内存。通过-XX:+UseCompressedOops 选项。JVM会使用32位的OOP,而不是64位的OOP.
7.怎样通过Java程序来判断JVM是32位还是64位?
你可以检查某些系统属性如sun,arch.data.model或os .arch来获取该信息。
8.32位JVM和64位JVM的最大堆内存分别是多数?
理论.上说上32位的JVM堆内存可以到达2^32,即4GB,但实际上会比这个小很多。不同操作系统之间不同,如Windows系统大约1.5GB,Solaris大约3GB.64 位JVM允许指定最大的堆内存,理论上可以达到2^64,这是一个非常大的数字,实际上你可以指定堆内存大小到100GB,甚至有的JVM,如Azul,堆内存到1000G都是可能的。
9.JRE. JDK. JVM及JIT之间有什么不同?
JRE代表Java运行时( Java run-time) , 是运行Java引用所必须的。JDK代表Java开发工具( Java development kit), 是Java程序的开发工具,如Java编译器,它也包含JRE. JVM代表Java虚拟机( Java virtual machine),它的责任是运行Java应用。JT代表即时编译( Just In Time compilation), 当代码执行的次数超过一定的闽值时,会将Java字节码转换为本地代码,如,主要的热点代码会被准换为本地代码,这样有利大幅度提高Java应用的性能。
10.解释Java堆空间及GC?
当通过Java命令启动Java进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC是JVM内部的一个进程 ,回收无效对象的内存用于将来的分配。
11.JVM内存区域
12.程序计数器(线程私有)
13.虚拟机栈(线程私有)
14.本地方法区(线程私有)
15.你能保证GC执行吗?
16.怎么获取Java程序使用的内存?堆使用的百分比?
17.Java中堆和栈有什么区别?
18.描述一下JM加载class文件的原理机制
19.GC是什么?为什么要有GC?
20.堆(Heap-线程共享运行时数据区
21.方法区/永久代(线程共享)
22.JVM运行时内存
23.新生代
24.老年代
25.永久代
26.JAVA8与元数据
27.引用计数法
28.可达性分析
29.标记清除算法( Mark-Sweep)
30.复制算法(copying)
31.标记整理算法(Mark-Compact)
32.分代收集算法
33.新生代与复制算法
34.老年代与标记复制算法
35.JAVA强引用
36.JAVA软引用
37.JAVA弱引用
38.JAVA虚引用
39.分代收集算法
40.在新生代-复制算法
41.在老年代-标记整理算法
42.分区收集算法
43.GC垃圾收集器
44.Serial垃圾收集器(单线程、复制算法)
45.ParNew垃圾收集器(Serial+ 多线程)
46.Parallel Scavenge收集器(多线程复制算法、高效)
47.Serial Old收集器(单线程标记整理算法)
48.Parallel Old收集器(多线程标记整理算法)
49.CMS收集器(多线程标记清除算法)
50.G1收集器
51.JVM类加载机制
52.类加载器
53.双亲委派
54.OSGI (动态模型系统)
55.动态改变构造
56.模块化编程与热插拔
57.JVM内存模型
58.栈
59.本地方法栈
60.程序计数器
61.堆
62.方法区
63.分代回收
64.堆和栈的区别
65.什么时候会触发FullIGC
66.什么是Java虚拟机?为什么Java被称作是”平台无关的编程语言"?
67.对象分配规则
68.描述一下JVM加载class文件的原理机制?
69.Java对象创建过程
70.简述Java的对象结构
71.如何判断对象可以被回收
72.JVM的永久代中会发生垃圾回收么
73.垃圾收集算法
74.调优命令有哪些?
75.调优工具
76.Minor GC与Full GC分别在什么时候发生?
77.你知道哪些JVM性能调优
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
以上是关于入门到入坟,十年架构师经验汇总:Java架构修行宝典的主要内容,如果未能解决你的问题,请参考以下文章