掌握了Java知识以后,要怎么突破接下来的面试大关呢?面试题千奇百怪,但总是万变不离其宗,今天诚筑说小编就为大家稍微整理了一下那些面试时候的常考题,话不多说,let’s go!
Q1:什么是Java虚拟机?Java被称作是“平台无关的编程语言”是为什么?
A1:Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
Q2:是否可以在static环境中访问非static变量?
A2:static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
Q3:Java支持的数据类型有哪些?
A3:Java支持的数据类型包括两种:一种是基本数据类型,包含byte,char,short, boolean ,int , long, float,double;另一种是引用类型:如String等,其实是对象的引用,JVM中虚拟栈中存的是对象的地址,创建的对象实质在堆中,通过地址来找到堆中的对象的过程,即为引用类型。
Q4:Java支持多继承么?
A4:Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是java中的接口支持多继承,,即一个子接口可以有多个父接口。
Q5:进程和线程的区别是什么?
A5:进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。线程的划分小于进程,线程隶属于某个进程。
Q6:什么是死锁(deadlock)?
A6:所谓死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
死锁产生的4个必要条件:
互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。
请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。
其实在面试环节,落落大方,侃侃而谈,能够给HR展现自己的逻辑思维是最重要的,所以不需要紧张,坦然处之就好。