关于准备面试1.0
一、面经学习
https://www.nowcoder.com/discuss/47326?channel=-1&source_id=profile_follow_post_nctrack
二、学习路线

来源于JavaGuide
https://snailclimb.gitee.io/javaguide/#/?id=%e5%9f%ba%e7%a1%80
三、关于后台开发的一些知识点:
- 掌握数据库:Redis MySql
- 负载均衡
关于java虚拟机的一些知识点:

- 3.1.1 程序计数器主要有两个作⽤
注意:程序计数器是唯⼀⼀个不会出现 OutOfMemoryError 的内存区域,它的⽣命周期随着线程的创建⽽创建,随着线程的结束⽽死亡。
- 3.1.2 JAVA虚拟机栈


- 3.1.3 本地⽅法栈

- 3.1.4 堆
-
Java虚拟机所管理的内存中最大的一块,JAVA堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯⼀⽬的就是存放对象实例,⼏乎所有的对象实例以及数组都在这⾥分配内存。

-

- 3.1.4 方法区
- 用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。和堆一样不需要连续的内存,并且可以动态扩展,动态扩展失败一样会抛出 OutOfMemoryError 异常。
- 3.1.5 方法区
- 运行时常量池是方法区的一部分。Class 文件中的常量池(编译器生成的字面量和符号引用)会在类加载后被放入这个区域。除了在编译期生成的常量,还允许动态生成,例如 String 类的 intern()。
- 3.1.6 直接内存
- 在 JDK 1.4 中新引入了 NIO 类,它可以使用 Native 函数库直接分配堆外内存,然后通过 Java 堆里的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在堆内存和堆外内存来回拷贝数据。
关于线程死锁的一些知识点:
产生死锁必须具备以下四个条件:
- 互斥条件:该资源任意一个时刻只由一个线程占用。
- 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
- 不剥夺条件:线程已获得的资源在末使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。
- 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
关于start() 方法 与 run() 方法:




浙公网安备 33010602011771号