大爷的面试刷题 2019/12/11
程序员文章站
2022-03-13 23:43:10
...
- java 中 IO 流分为几种?
输出流和输入流
字节流和字符流
节点流和处理流
答案
按功能来分:输入流(input)、输出流(output)。
按类型来分:字节流和字符流。
字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。
-
BIO、NIO、AIO 有什么区别?
答案
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。mark -
Files的常用方法都有哪些?
Files.exists():检测文件路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除一个文件或目录。
Files.copy():复制文件。
Files.move():移动文件。
Files.size():查看文件个数。
Files.read():读取文件。
Files.write():写入文件。
Files类不同于File类,此类不可被实例化,所有方法都是静态方法,类似于Math对象,小心搞混
try {
System.out.println(Files.size(Paths.get("D:\\JavaUtils\\Lombok\\lombok.jar")));
//1763775
} catch (IOException e) {
e.printStackTrace();
}
大概试了一下,用法大概这样子
第一模块完
- java 容器都有哪些?
此问题大概等于问集合有哪几个类
List,Set,Map,Queue
其中接口List,Set,Queue都是实现于Collection
List类集合内容是可重复,相对有序排列的
Set类集合内容是不可重复,相对无序排列的
Queue类集合是一个队列,
Map类则是键值对,每个key对应一个value,一个value可以对应多个key
下图的虚线边框是接口,实线是类
Vector是一个线程安全的类,但是比较古老
ArrayList用的比较多,底层用数组实现,用的时候最好一次性给它自己想要的大小,不然扩容比较耗资源
LinkedList是链式集合,添加对象和删除对象相对ArrayList来说耗资源更少,但是随机访问集合内容耗资源比ArrayList集合多,因为需要获得index,依次遍历过去,而ArrayList本身以有index
HashSet没什么好说的,判断同一个对象的依据是equals的返回值true和hashcode的值是否相等,如果判断是同一个对象就不可以添加进集合
TreeSet是一个自排列集合,用之前需要声明储存对象,储存对象需要实现Comparable接口,然后重写compareTo方法,
public int compareTo(Object o) {
//需要比较的数值,返回-1表示排左边,靠前,返回1表示排右边,靠后,返回0表示相同
if (this.getPrice()>o.getPrice())
{
return -1;
}
else if (this.getPrice()<o.getPrice())
{
return 1;
}else {
return 0;
}
}
还有一个定制排序
TreeSet<Phone2> treeSet4=new TreeSet<Phone2>((o1, o2) -> {
return o1.getPrice()>o2.getPrice()?1:o1.getPrice()==o2.getPrice()?0:-1;
});
//直接在实例化对象的时候,输入参数重写compare方法,决定排序根据的数值和大小
下课了,回宿舍打游戏