关于准备面试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 堆
  1. Java虚拟机所管理的内存中最大的一块,JAVA堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯⼀⽬的就是存放对象实例,⼏乎所有的对象实例以及数组都在这⾥分配内存。


  • 3.1.4 方法区
  1. 用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。和堆一样不需要连续的内存,并且可以动态扩展,动态扩展失败一样会抛出 OutOfMemoryError 异常。

  • 3.1.5 方法区
  1. 运行时常量池是方法区的一部分。Class 文件中的常量池(编译器生成的字面量和符号引用)会在类加载后被放入这个区域。除了在编译期生成的常量,还允许动态生成,例如 String 类的 intern()。

  • 3.1.6 直接内存
  1. 在 JDK 1.4 中新引入了 NIO 类,它可以使用 Native 函数库直接分配堆外内存,然后通过 Java 堆里的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在堆内存和堆外内存来回拷贝数据。

关于线程死锁的一些知识点:

产生死锁必须具备以下四个条件:

  1. 互斥条件:该资源任意一个时刻只由一个线程占用。
  2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:线程已获得的资源在末使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。
  4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

关于start() 方法 与 run() 方法:

posted @ 2021-06-09 09:57  BigMonster85  阅读(59)  评论(0)    收藏  举报