题目均来自https://blog.csdn.net/sufu1065/article/details/88051083。
一.Java基础
- JDK 、JRE 和 JVM 有什么区别?
JDK是Java Development Kit的缩写,是java开发工具包,包含JRE。
JRE是Java Runtime Environment的缩写,是java程序的运行环境,其包含JVM。
JDK = JRE + Java工具包(javac.exe + java.exe + javadoc.exe)
JRE = JVM + Java核心类库 - == 和 equals 的区别?
== 是判断两个变量或实例是不是指向同一个内存空间。
equals 是判断两个变量或实例指向的内存空间的值是否相同。 - 两个对象的hashCode()相同,则equals()也一定为true,对吗?
不对。hashCode()相同,只能说明两个对象在散列存储结构的同个位置,hash值相同,不代表对象的值一定相同。
反之,equals() true的两个对象,hashCode()一定相同。 - final在Java中的作用是什么?
final是Java中的非访问修饰符。它修饰的变量为常量,不可改变;修饰的类不能被继承;修饰的方法不可以被继承重写。 - java中的Math.round(-1.5)等于多少?
Math.round()方法是四舍五入,所以 Math.round(-1.5) = -1 - String 属于基础的数据类型吗?
不属于。基础数据类型有八种,分别为byte、short、int、long、float、double、char、boolean - java中操作字符串都有哪些类?它们之间有什么区别?
操作字符串的类有String、StringBuffer、StringBuilder。
String类:被final修饰,不能对字符串对象进行修改,每次修改都会产生一个新的对象。
StringBuffer:线程安全,可以对字符串对象进行修改
StringBuilder:线程不安全,可以对字符串对象进行修改
速度:StringBuilder > StringBuffer > String
少数据量:String
单线程,数据量大:StringBuilder
多线程,数据量大:StringBuffer - String str="i"与 String str=new String(“i”)一样吗?
不一样,前者是在常量池中的对象,后者是在堆中对常量池中"i"对象的复制对象。 - 如何将字符串反转?
使用StringBuffer的reverse()方法
使用String的toCharArray()方法,将获得的char[]再拼成字符串;
使用String的CharAt()方法,遍历获取各个位置的字符,拼成字符串。 - String类的常用方法都有哪些?
equals() :字符串比较
concat():拼接字符串
charAt():获取指定位置字符
indexOf():获取指定字符串第一次出现的索引
trim():去除字符串两端空格
length():获取字符串长度
subString():截取字符串 - 抽象类必须要有抽象方法吗?
抽象类可以有抽象方法和非抽象方法,不一定要有抽象方法。反过来,有抽象方法的类必须声明为抽象类。 - 普通类和抽象类有什么区别?
抽象类有abstract关键字修饰;抽象类不能被实例化;普通类不能有抽象方法;抽象类的子类必须实现父类的所有抽象方法 - 抽象类能用final修饰吗?
不能,因为用final修饰的类,不能被继承,而抽象类就是用于被继承。 - 接口和抽象类有什么区别?
抽象类可以有普通方法和抽象方法,接口只能有抽象方法。
抽象类可以有构造方法,接口没有构造方法
抽象类有普通变量,接口中只有public常量
抽象类只能单继承类,接口可以多继承接口(比如:interface A extends B,C,D{})
实现类只能继承一个抽象类,但是可以实现多个接口 - Java中的IO流分为几种?
按数据的流向分为:输入流和输出流
按流数据的格式分为:字符流和字节流
按流数据的包装过程分为:节点流和处理流
其中 InputStream/Read是所有输入流的基类
OutputStream/Writer是所有输出流的基类 - BIO、NIO、AIO 有什么区别?
BIO是同步阻塞IO模型,服务器实现模式为一个连接一个线程。。。
NIO是同步非阻塞IO模型,服务器实现模式为一个请求一个线程。。。
AIO是异步非阻塞IO模型,服务器实现模式为一个有效请求一个线程。。。 - Files的常用方法都有哪些?
Files.exist() 检查文件路径是否存在
Files.delete() 删除文件或者目录
FIles.copy() 复制文件
Files.move() 移动文件
Files.createFile() 创建文件
Files.createFileDirectory() 创建文件夹
Files.size() 查找文件个数
Files.read() 读取文件
Files.write() 写入文件
二.容器
- Java容器有哪些?
- Collection 和 Collections 有什么区别?
- List、Set、Map 之间的区别是什么?
- HashMap 和 Hashtable 有什么区别?
- 如何决定使用 HashMap 还是 TreeMap?
- 说一下 HashMap 的实现原理?
HashMap是数组+链表的数据结构,