入门到入坟,十年架构师经验汇总: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内存区域

入门到入坟,十年架构师经验汇总:Java架构修行宝典


  • 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架构修行宝典

以上是关于入门到入坟,十年架构师经验汇总:Java架构修行宝典的主要内容,如果未能解决你的问题,请参考以下文章

十年开发经验Java架构师,真香!

十年阿里java架构师的六大设计原则和项目经验

十年阿里java架构师的六大设计原则和项目经验

十年开发经验Java架构师,附小技巧

Spring Boot 2从入门到入坟 | 基础入门篇:你会看Spring Boot的官方文档吗?

Spring Boot 2从入门到入坟 | 基础入门篇:你会看Spring Boot的官方文档吗?