Java面试整理

Java面试题汇总

一 Java基础知识

1、JDK和JRE有什么区别?

1)JDK: Java Development Kit 的简称,Java开发套件(工具包),他提供二Java的开发环境和运行环境。
2)JRE:Java Runtime Environment 的简称,Java运行环境,为Java的运行提供了所需环境。

具体来说JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了许多Java程序调试和分析的工具,简单来说,如果要运行Java程序只需要安装JRE就可以。若要编写Java程序,则需要安装jdk。

2 = = 和equals()方法的区别是什么?

1)对于 = = ,比较的是值是否相等

基本数据类型的变量(byte、int、long、short、char、double、boolean、),则直接比较其存储的“值”是否相等;
引用类型的变量,则比较的是所指向的对象的地址。

2)对于equals()方法

注意equals()方法不能作用于基本类型的变量,equals继承Object类,(重写了equals方法)比较的是 是否是同一个对象,即对象的内容。如果没有对equals方法进行重写,则比较的是引用类型的变量所指的对象的地址;
诸如String、Date等对equals方法进行了重写的话,比较的是所指向的对象的内容。

3 两个对象的hashCode()相同,则equals()也一定为true吗?

hashcode为哈希值,数据元素存放在连续的存储区域中,每个元素的位置是通过哈希函数计算而成的。哈希函数将元素作为自变量,计算得到的函数值就是数据元素的地址。即为哈希存储(即散列存储)。

不一定

例如 4和1对3的余数都是1,则哈希值相同。但是4≠3.
处理冲突的方法:1开放地址法2链地址法3再哈希法4建立公共溢出区。

4 final 在Java中有什么作用?

final修饰的类叫做最终类,该类不能被继承.
final修饰的方法不能被重写
final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被改变.

5 java中Math.round(-1.5)等于多少?

等于-1 负值向右取整,正值向左取整.

6 简述数据类型分类

基本数据类型

整数类型 byte 8位 int32位 long64位 short16位
浮点类型 float 32 double 64
字符型 char 16位
布尔类型 boolean
总结
8位:Byte(字节型)
16位:short(短整型)、char(字符型)
32位:int(整型)、float(单精度型/浮点型)
64位:long(长整型)、double(双精度型)
boolean(布尔类型)

7 java中操作字符串都有那些类,他们之间有什么区别?

String,StringBuffer, StringBuilder.

String和其他两个的区别在于String声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象,而StringBuffer可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要是同String;
StringBuffer和StringBuilder的最大区别在于,前者线程是安全的.而后者是非线程安全的,但后者的性能高于前者,所以在单线程环境下推荐使用StringBuilder.

8 String str="s"与String str=new String(“s”)一样吗?

不一样 ,内存的分配方式不一样,对于前者 Java虚拟机会将其分配到常量池中;后者则会被分到堆内存中.

9如何将字符串反转?

使用StringBuilder或者StringBuffer的reverse()方法.
    //StringBuffer reverse
    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer.append("abcdefg");
    System.out.println(stringBuffer.reverse());
    //StringBuilder reverse
    StringBuilder stringBuilder=new StringBuilder();
    stringBuilder.append("abcdefg");
    System.out.println(stringBuilder.reverse());

10 String类的常用方法

indexOf():返回指定字符的索引
charAt():返回指定索引出的字符
replace(): 字符串替换
trim():出去字符串两边的空白
split():分割字符串,返回一个分割后的字符串数组
getBytes():返回字符串的byte类型数组
length():返回字符串长度
toLowerCase():将字符串转换成小写字母
toUpperCase():将字符串转换成大写字母
substring:截取字符串
equals():字符串比较

11抽象类必须要有方法吗?

不需要,抽象类不一定非要有抽象方法
abstract class Cat{
    public static void sayHi(){
        System.out.println("hi~");
    }
}
//抽象类并没有抽象方法但完全可以正常运行

12普通类和抽象类有哪些区别?

普通类不能包含抽象方法,抽象类可以包含抽象方法
抽象类不能直接实例化,普通类可以直接实例化

13 抽象类能使用final修饰吗?

不可以.因为 定义抽象类就是让其它类继承的,final类是不可以被继承的.

14 接口和抽象类有什么区别?

实现:抽象类的子类使用extends来继承,接口使用implements来实现接口.
构造函数 抽象类可以有构造函数;接口不能有.
main方法:抽象类可以有main方法,并且我们可以运行它;但接口不能有main方法

15 java中I/O六分为几种?

按功能来分 输入流(input),输出流(output)
按类型来分:字节流,字符流

区别 字节流按8位一字节为传输单位输入输出数据,字符流按16为字符为输入输出数据.

16 BIO NIO AIO 有什么区别?

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

17 Files的常用方法有哪些?

Files.exists()检测文件路径是否存在

Files.createFile():创建文件
Files.createDirectory()创建文件夹
Files.delete()删除一个文件或目录
Files.copy()复制文件
Files.move()移动文件
Files.size()查看文件个数
Filess.read()读取文件
Filess.write()写入文件

二 容器

18 Java容器都有哪些?

常见容器的目录

19Collection 和Collections有什么区别?

java.util.Collection是一个集合接口(集合类的一个顶级接口),他提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java类库中有很多具体实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有LIst与Set.
Collections则是集合类的一个工具类/帮助类,其中提供了一系列景天方法,用域对结合中元素进行排序,搜索以及线程安全等各种操作

20 List Set Map之间的区别是什么?区别### 21 HashMap和Hashtable有什么区别

hashMap去掉了HashTable的contains方法但是加上了containsValue()和containsKey()方法.
hashTable是同步的,HashMap是飞同步的,效率上比hashTable要高
hashMap允许空键值,而hashTable不允许

22 如何决定使用hashMap还是TreeMap?

treeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。
TreeMap类不仅实现了Map接口 还实现了java.util.SortMap接口, 因此集合中的映射关系具有一定的顺序 但是在添加 删除 和定位映射关系上 TreeMap类比HashMap类的性能差一些.TreeMap类实现的Map集合中的映射关系是根据键值对象按一定的顺序排列的 因此不允许键对象是null.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值