华为面试100题:java开发工程师(上)

华为面试100题:java开发工程师(上)_第1张图片

华为面试100题:java开发工程师(上)_第2张图片

jkd的组成结构

 华为面试100题:java开发工程师(上)_第3张图片

 java的跨平台是通过jvm虚拟机实现的

华为面试100题:java开发工程师(上)_第4张图片

 java代码执行流程

首先java代码通过javac编译成.class文件,.class文件进入类装载子系统,装载进入运行时数据区,通过字节码执行引擎来执行运行时数据区中的数据。

华为面试100题:java开发工程师(上)_第5张图片

堆:主要存储new出来的对象

栈:主要存储变量,这里java中的栈和数据结构的栈的概念是一样的,符合先进后出的概念。如下如所示

华为面试100题:java开发工程师(上)_第6张图片

进栈图如下

main方法先进栈最后出栈。

华为面试100题:java开发工程师(上)_第7张图片

每个栈帧中都会有四个存储空间

局部变量表:存储未赋值的变量,或者已经赋值的变量。该局部变量表中的变量和堆中的对象是有关系的,局部变量表中的变量存储的是该对象在堆中的内存地址。

操作数栈:该数值在未给局部变量表中的变量赋值时,存储在该操作数栈中;赋值后给局部变量表后,该数值存储到局部变量表中,操作数栈中的该数值移除。此外数值的运行也是在该区域中进行,运算结束后赋值给局部变量表。也就是说操作栈就是操作数进行数据运算的临时存储空间。

动态链接:把符号引用转变成字符引用,该字符就是该符号在方法区的直接内存地址。

方法出口:执行程序语句后返回的线程保存到该区域。

华为面试100题:java开发工程师(上)_第8张图片

程序计数器:

用来存放jvm正在运行代码的行号(也就是这行代码在该方法区中的内存地址)

当程序开始执行时,jvm不仅会给程序分配一个栈内存,还会给每一个栈分配一个程序计数器的内存。

方法区:

常量:

静态变量:

该静态变量user和堆中的user的关系:该静态变量存放的是user在堆中的内存地址。

类元信息:

本地方法栈:

当线程运行代码时运行了本地方法,从本地方法栈中画出一部分空间给该线程去用

华为面试100题:java开发工程师(上)_第9张图片

堆:

jvm的大部分调优都是调的堆

华为面试100题:java开发工程师(上)_第10张图片

 该算法标记的非垃圾对象会被传入survivor区,其余的垃圾对象会继续存在eden区域,直到被GC清除。标记的非垃圾对象会不断地在survivor之间传递,直到传递到15次还没有被清除时会传递到老年代。

 

华为面试100题:java开发工程师(上)_第11张图片

jre中的lib目录解释.class文件,翻译成机器码,映射到操作系统。

华为面试100题:java开发工程师(上)_第12张图片

 华为面试100题:java开发工程师(上)_第13张图片

==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址。

equals主要对比的是两个字符串的内容。

华为面试100题:java开发工程师(上)_第14张图片

华为面试100题:java开发工程师(上)_第15张图片

华为面试100题:java开发工程师(上)_第16张图片

华为面试100题:java开发工程师(上)_第17张图片

华为面试100题:java开发工程师(上)_第18张图片

如上图所示,一个数组可以通过它的数组下标赋值,但不能重新给这个数组赋值。

一个引用变量可以给它的属性赋值,但不可以给该引用变量赋值。

华为面试100题:java开发工程师(上)_第19张图片

华为面试100题:java开发工程师(上)_第20张图片

华为面试100题:java开发工程师(上)_第21张图片

 华为面试100题:java开发工程师(上)_第22张图片

 华为面试100题:java开发工程师(上)_第23张图片

华为面试100题:java开发工程师(上)_第24张图片

华为面试100题:java开发工程师(上)_第25张图片

华为面试100题:java开发工程师(上)_第26张图片

初级中级程序员答出如下3点就可以了 ,后面的是中高级,高级程序员需要回答的。

华为面试100题:java开发工程师(上)_第27张图片

 华为面试100题:java开发工程师(上)_第28张图片

华为面试100题:java开发工程师(上)_第29张图片

华为面试100题:java开发工程师(上)_第30张图片

华为面试100题:java开发工程师(上)_第31张图片

华为面试100题:java开发工程师(上)_第32张图片

华为面试100题:java开发工程师(上)_第33张图片

华为面试100题:java开发工程师(上)_第34张图片

华为面试100题:java开发工程师(上)_第35张图片

华为面试100题:java开发工程师(上)_第36张图片

华为面试100题:java开发工程师(上)_第37张图片

 华为面试100题:java开发工程师(上)_第38张图片

华为面试100题:java开发工程师(上)_第39张图片

华为面试100题:java开发工程师(上)_第40张图片

华为面试100题:java开发工程师(上)_第41张图片

华为面试100题:java开发工程师(上)_第42张图片

华为面试100题:java开发工程师(上)_第43张图片

华为面试100题:java开发工程师(上)_第44张图片

华为面试100题:java开发工程师(上)_第45张图片

华为面试100题:java开发工程师(上)_第46张图片

华为面试100题:java开发工程师(上)_第47张图片 

华为面试100题:java开发工程师(上)_第48张图片

你可能感兴趣的:(Java八股文,jvm,java,开发语言)