BIO、NIO、AIO 有什么区别?
- BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
- NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
- AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。
Files的常用方法都有哪些?
- Files.exists():检测文件路径是否存在。
- Files.createFile():创建文件。
- Files.createDirectory():创建文件夹。
- Files.delete():删除一个文件或目录。
- Files.copy():复制文件。
- Files.move():移动文件。
- Files.size():查看文件个数。
- Files.read():读取文件。
- Files.write():写入文件。
Java容器
collection和collections区别是collection是一个集合的接口,collections是一个集合类的实现类。
List,Set,Map区别
hashmap对于插入,删除和定位元素,进行遍历选择treemap
hashmap实现原理:
是基于哈希表的map接口的非同步实现,可以允许使用null值和null键,是数组和链表的结合体.首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。
hashset实现原理:
底层由hashmap实现,值存在于hashmap的key上,HashMap的value统一为PRESENT
ArrayList和LinkedList区别:
arrayList底层数据结构是数组,支持随机访问,LinkedList底层数据结构是双向循环链表,不支持随机访问,使用下标访问arrayList更快.
List转为数组:调用arrayList的toArray方法 数组转为List:调用arrays的asList方法
arratList和vector的区别:不同步和同步
array和arrayList的区别:array可以容纳基本类型和对象,arrayList只能容纳对象。array不可以改变,arrayList可以改变大小
Queue中poll()和ramove()是一个获取元素失败时返回空,另一个抛出异常
线程安全的有:vector,stack,hashtable,enumeration
迭代器是什么:是一种设计模式,使用next()获取下一个元素,使用remove()检查是否还有元素
Iterator可以用来遍历set和List集合,ListIterator只能遍历List,ListIterator实现了Iterator接口。