11. 题目:HashSet 实现原理是什么什么特点br> HashSet 是基于 HashMap 实现的,查询速度特别快。
HashMap 是支持 key为 null 值的,所以 HashSet 支持添加 null值。
HashSet 存放自定义类时,自定义类需要重写 hashCode()和equals()方法,确保集合对自定义类的对象的唯一性判断。
特点:无序、不可重复。
12.题目:TreeSet 的原理是什么用需要注意什么br> TreeSet 基于 TreeMap 实现,TreeMap 基于红黑树实现。
特点:有序,无重复,添加、删除元素、判断元素是否存在,效率比较高,时间复杂度0(log(N))。
使用方式:
TreeSet默认构造方法,调用add()方法时会调用对象类实现的Comparable 接口compareTo()方法和集合中的对象比较,根据方法返回的结果有序存储。
TreeSet 默认构造方法,存入对象的类未实现 Comparable接口,抛出ClassCastException 异常。
TreeSet支持构造方法指定 Comparator 接口,按照 Comparator实现类的比较逻辑进行有序存储。
13.题目:什么是函数式接口br> 只包含一个抽象方法的接口称为函数式接口,也叫功能性接口,也称函数式接口。
14.题目:HashMap和ConcurrentHashMap 有何异同/p>
相同点:
两者都实现了 Map 接口,可以用来存储键值对。
不同点:
HashMap是java.util包下的类,底层采用数组+链表实现,可以存储null键和 null 值,线程不安全。
ConcurrentHashMap是java.util.concurrnet 包下的类,底层常用分段数组+链表实现,是线程安全的。一般我们使用 HashMap 存储键值对,当在多线程中因并发而出现的数据异常,我们可以使用 ConcurrentHashMap来代替 HashMap
15.题目:BIO、NIO、AIO 有什么区别br> BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:NewIO 同步非阻塞 I0,是传统IO的升级,客户端和服务器端通过Channel(通道)通讯,实现了多路复用。
AIO:AsynchronousIO是NIO 的升级,也叫 NIO2,实现了异步非堵塞 I0,异步I0的操作基于事件和回调机制。
16.题目:深拷贝和浅拷贝区别是什么br> 浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝。
深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringifyO,但是此方法无法复制函数类型)。
17.题目:为什么要使用克隆br> 想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了,Java 语言中克隆针对的是类的实例。
18.题目:并行和并发有什么区别br> 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。
所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。
19.题目:什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)br> 线程调度器是一个操作系统服务,它负责为 Runnable 状态的线程分配 CPU时间。一旦创建一个线程并启动它,它的执行便依赖于线程调度器的实现。
时间分片是指将可用的 CPU 时间分配给可用的 Runnable 线程的过程。分配 CPU时间可以基于线程优先级或者线程等待的时间。
20.题目:如何在两个线程间共享数据br> 将共享数据封装到一个对象中,把这个对象传递给不同的 Runnable。
使用wait/notify/notifyAll 或await/signal/signalAll。
管道通信。字节管道流 PipedInputStream、PipedOutputStream。字符管道流PipedReader、PipedWriter。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91628 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!