JavaSE面试题整理(4)

简述Java中的集合
Java中的集合分为 value,key–vale(Conllection Map)两种。
存储值有分为 List 和Set.
List是有序的,可以重复的。
Set是无序的,不可以重复的。根据 equals和hashcode判断,也就是如果
一个对象要存储在 Set中,必须重写 equals和hashCode方法。
存储key-value的为map.

讲一下HashMap哈HashTable的区别?HashTable和ConcurrentHashMap的区别
相同点: HashMap和HasheTalbe都可以使用来存储 key–value的数据。
区别:
HashMap是可以把 null作为key或者value的,而 HashTable是不可以的。
HashMap是线程不安全的,效率较高。而 HashTalbe是线程安全的,效率较低。
如果想线程安全但是又要效率高怎么办?
通过把整个 Map分为N个Segment(类似 HashTable),可以提供相同的线程安全,但是效率提升 N倍,默认提升 16倍

Java中的线程并发库
JDK5中增加了Doug Lea的并发库,这一引进给 Java线程的管理和使用提供了强大的便利性。 java.util.current包中提供了对线程优化、管理的各项操作,使得线程的使用变得的心应手。该包提供了线程的运行,线程池的创建,线程生命周期的控制 .
Java通过Executors提供四个静态方法创建四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序 (FIFO, LIFO, 优先级 )执行

线程池的作用?
限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃
线程池不需要每次都去创建或销毁,节约了资源、
线程池不需要每次都去创建,响应时间更快。

什么是设计模式?
设计模式就是经过前人无数次的实践总结出的 ,设计过程中可以反复使用的、可以解决特定问题的设计方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值