-
Collection和Collections区别?
- Collection 是集合类顶级接口
- Collections 是操作集合类工具类。
-
接口的特点有哪些?
- 属性 默认且只能是public static final 常量
- 方法 默认且只能是public abstract
- 构造方法:接口没有构造方法
- jdk8 开始有default 和 static 方法 jdk9 可以 private
- 接口是可以多继承,类也可以实现多个接口
-
并发和并行的区别?
- 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生
- 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
- 解释三:并行是在多台处理器上同时处理多个任务。如 hadoop 分布式集群,并发是在一台处理器上“同时”处理多个任务。
- 并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能
- 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
- 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行
简单说 并发是一个CPU同时段内执行多个任务,并行同一时间多个CPU同时执行各自任务。
-
同步和异步区别?
-
同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。
-
异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响
或者
-
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
-
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
-
-
内存泄漏和内存溢出的区别?
- 内存溢出: 指程序申请内存时,没有足够的内存供申请者使用,简单来说就是自己所需要使用的空间比我们拥有的内存大内存不够使用所造成的内存溢出。
- 内存泄露 :是指程序在申请内存后,无法释放已申请的内存空间就造成了内存泄漏
- 内存泄漏的分类(按发生方式来分类)
- 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。
偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。 - 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。
- 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏
- 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。