作者:vippiv
链接:https://www.nowcoder.com/discuss/157387
来源:牛客网
这里对大佬的面试题作一些简单的回答,有错误的还请指正!
一、Java 基础
1.JDK 和 JRE 有什么区别?
答:
JDk是Java应用的jar包(工具类),JRE是Java的运行环境
2.== 和 equals 的区别是什么?
答:
==比较的事地址,equals比较的字面上的值
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
答:
不对
4.final 在 java 中有什么作用?
答:
不允许在对final修饰的类或变量修改
5.java 中的 Math.round(-1.5) 等于多少?
答:
-1.0
6.String 属于基础的数据类型吗?
答:
不属于,String属于类
7.java 中操作字符串都有哪些类?它们之间有什么区别?
答:
StringBuffer ,StringBuilder.前者是线程安全的,后者不是
8.String str="i"与 String str=new String("i")一样吗?
答:
不一样,在栈中存储的地址不一样
9.如何将字符串反转?
答:
最简便的事StringBuffer的reverse方法
public static String reverse4(String s) {
return new StringBuffer(s).reverse().toString();
}
其次是String类的CharAt方法
public static String reverse3(String s) {
int length = s.length();
String reverse = "";
for (int i = 0; i < length; i++)
reverse = s.charAt(i) + reverse;
return reverse;
}
当然还有其他的方法
10.String 类的常用方法都有那些?
答:
equals,split,CharAt,length,compareto,indexof等等
11.抽象类必须要有抽象方法吗?
答
不一定
12.普通类和抽象类有哪些区别?
答:
1.普通类可以new对象,抽象类不可以new对象。
2.两者都可以被继承。抽象类里面的抽象方法没有方法体,如果要实现,抽象类必须被继承,在子类中被实现
13.抽象类能使用 final 修饰吗?
答:
不能
14.接口和抽象类有什么区别?
答:
本质上的区别:接口是高度的抽象。接口是对动作的抽象,抽象类是对本质的抽象。比如人可以吃东西,动物也可以吃东西。那么可以把吃作为接口单独抽象出来,供子类实现。
使用上的区别:接口里面的方法全是没有实现体的,如果实现了接口或抽象类,那么接口里面的所以的方法都需要重写,抽象类只有抽象方法必须要重写。
相同点:
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化
不同点:
(1)接口成员变量默认为public static final
,必须赋初值,不能被修改;其所有的成员方法都是publlic
(2)抽象类中成员变量默认default
,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract
修饰,不能被private
、static
、synchronized
和native
等修饰,必须以分号结尾,不带花括号。
15.java 中 IO 流分为几种?
答:
字节流和字符流
16.BIO、NIO、AIO 有什么区别?
答:
BIO是阻塞同步IO,NIO是非阻塞同步IO,AIO是非阻塞异步IO
在性能上NIO和AIO比较好,编码上比较复杂,BIO性能相对差一点,编码简单。
17.Files的常用方法都有哪些?
mkdir,exists,isfile,getName,length...