Java面试常问基础知识(持续更新)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cyan_soul/article/details/81414893

欢迎关注我的知乎专栏【数据池塘】,专注于分享机器学习,数据挖掘相关内容:HTTPS://zhuanlan.zhihu.com/datapool

本文中的知识都是我自己或同学在面试过程中常被问到的,在此整理记录一下比较好的答案。

1,简述JVM的内存模式。

JVM内存空间包含:方法区,爪哇的堆,爪哇的栈,本地方法栈,程序计数器。

区方法的英文各个线程共享的内存区域,用于它存已被虚机加信息,常量,静态变量,即时编译编译后的代等数据。

的的Java的也是线程共享的区域,我们的类的实例就放在这个区域

Java 是每个线程私有的区域,它的生命周期与线程相同,一个线程对应一个J ava 栈。

本地方法栈本地方法栈)与虚发挥的作用英文英文英文的英文非常形容词:的,其区的英文虚栈为的Java的的。方法(也字就是节码)服,而方法本地栈则的英文机使用到的本地方法服务。

计程序数器程序计数器寄存器)一的英文块较小的内存空,的它英文作用英文英文可以英文的当前看做线程所行的字节码的行号指示器。

 

2,如何判断象死活,以及如何回收?

引用数文教释义法律:当象被赋给任意,引用数器每次加1 ,当象出了作用域后该对象丢弃不再使用),引用数器减1 ,一旦引用数器0 象就足了垃圾收集的条件。

 

3,简单描述线程与进程的区别。

开一个程序是进程,在一个程序内使用不同的功能是线程。进程是资源的分配和调度的一个独立单元,而线程是CPU 调度的基本单元型态型态型态。一个同程中可以包括多个线

 

4,线程各种状态之间如何互相转换?

线程状态分为创建,就绪,运行和阻塞和结束五个状态。

  • 创建这个状态是线程刚刚创建只是在堆内存中分配了空
  • 这的英文的线程已经执行了开始()方法等待CPU 的运行
  • 运行这个时候该线程电子杂志的CPU。
  • 阻塞阻塞分成多种情况总体来说就是该线程因某种原因放弃了CPU 的控制
  • 结束:线程结束,这个结束可能是正常的结束,或者是由于某种原因结束。

线程从运行状态到阻塞状态有这几种情况:

  • 调用了wait()的的的方法,如果这是的线程在同步锁中,那么同步锁也会释放。这样的阻塞只有调用通知(),notifyAll的的的(),这俩个方法一个随即开启一个被等待()阻塞的,notifyAll的的()是唤醒所有的。
  • 调用了睡眠()方法这个方法是睡觉方法高数该线程等待多长时间然后继续运行那么如果入等待方法他的CPU 就会放掉但是如果的的螺纹。睡眠()的英文在同步则不会释放只有等待行完同步
  • 用了JION()方法这个阻塞其实就是他自己执行过程中需要调用其他的线程那么他自己就会挂起等待线行完他才能恢复继续执行这起中的IO 流就是子的

 

5,描述的的HashMap中的数据结构。

HashMap中的中的数据结构为:数+ 。链表底层是一个数组,数组的每一项是一个链表,每次新建一个映射就是新建了一个数的每个元素都是一个链单的表头节点,表的英文用来解决冲突的,如果不同的映射到了数的同一位置,其就将放入单链表中。HashMap中的中的英文通过链表解决来散列冲突的。

 

6,如何解决哈希冲突?

链表法和开放地址法链表法就是将相同散列值的对象组织分类照片中的翻译是一个链表放在哈希值对应的槽位;开放地址法是通过一个探测算法,当某个槽位已经被占据情况的下继续下查找一个可以使用的槽位。

 

欢迎关注我的知乎专栏【数据池塘】,专注于分享机器学习,数据挖掘相关内容:HTTPS://zhuanlan.zhihu.com/datapool

展开阅读全文

没有更多推荐了,返回首页