前言
现如今,Java 面试的本质就是八股文,把八股文面试题背好,面试才有可能表现好。金九银十招聘黄金季已经来临!大家在考研和找工作中纠结的时候,不妨先看一下面试题,毕竟我们的最终目标就是为了找一份心仪的工作!好工作都是早下手为强的,所以同学们要早做准备!
1、JDK、JRE. JVM之间的区别
- JDK:Java标准开发包,它提供了编译、运⾏Java程序所需的各种⼯具和资源,包括Java编译器、Java运⾏时环境,以及常⽤的Java类库等
- JRE:Java运⾏环境,⽤于运⾏Java的字节码⽂件。JRE中包括了JVM以及JVM⼯作所需要的类库,普通⽤户⽽只需要安装JRE来运⾏Java程序,⽽程序开发者必须安装JDK来编译、调试程序。
- JVM:Java虚拟机,是JRE的⼀部分,它是整个java实现跨平台的最核⼼的部分,负责运⾏字节码⽂件。
2、hashCode()与equals()之间的关系
在Java中,每个对象都可以调⽤⾃⼰的hashCode()⽅法得到⾃⼰的哈希值(hashCode),相当于对象的指纹信息,通常来说世界上没有完全相同的两个指纹,但是在Java中做不到这么绝对,但是我们仍然可以利⽤hashCode来做⼀些提前的判断,⽐如:
- 如果两个对象的hashCode不相同,那么这两个对象肯定不同的两个对象
- 如果两个对象的hashCode相同,不代表这两个对象⼀定是同⼀个对象,也可能是两个对象
- 如果两个对象相等,那么他们的hashCode就⼀定相同
3、String. StringBuffer. StringBuilder的区别
- String是不可变的,如果尝试去修改,会新⽣成⼀个字符串对象,StringBuffer和StringBuilder是可变的
- StringBuffer是线程安全的,StringBuilder是线程不安全的,所以在单线程环境下StringBuilder效率会更⾼
4、泛型中extends和super的区别
- <? extends T>表示包括T在内的任何T的⼦类
- <? super T>表示包括T在内的任何T的⽗类
5、==和equals方法的区别
- ==:如果是基本数据类型,⽐较是值,如果是引⽤类型,⽐较的是引⽤地址
- equals:具体看各个类重