Java面试思路
一、javaSE基础
1、java IO流
2、java NIO
3、java集合
4、java注解
5、java泛型
6、java反射
7、java多线程
8、常用String、数组、日期操作
二、java虚拟机
1、jvm内存模型
参考自:https://www.cnblogs.com/dingyingsi/p/3760447.html
计算机由于磁盘远远跟不上cpu的读写速度,所以设计了内存。但是随着cpu的速度越来越快,内存也跟不上cpu的读写速度了。于是cpu厂商就为cpu加上了高速缓存,每个cpu都自带一个高速缓存。这样,在多处理器系统中,每个处理器有自己的高速缓存,又共享同一块内存(主存)。于是引入了新的问题:缓存一致性问题。当多个处理器同时处理同一块内存时,就会出现数据不一致的现象。必须通过一定的协议保证数据一致性。
java虚拟机内存模型定义的访问操作与物理计算机基本一致。java中通过多线程机制使得多个任务同时执行处理。所有线程共享jvm内存区域,而每个线程又单独有各自的工作内存。当线程与内存区域交互时,数据从主存拷贝到工作内存,进而交由线程处理。处理之后,再回写到主存中。
jvm内存模型分为:
程序计数器:字节码解释器工作时用到的行号指示器。线程私有。
虚拟机栈:
本地方法栈:
java堆:
方法区:
运行时常量池: