java 面试

Wesley13
• 阅读 743
1 、ArrayList、Vector、LinkedList 之间的 区别?

ArrayList:底层数组,查询快,增删慢,线程不安全,效率高
Vector:底层数组,查询快(由于线程安全,其实查询也不快),增删慢,线程安全,效率低
LinkedList:底层双重链表,查询慢,增删快,线程不安全,效率高。

3、列举Collections工具类常用方法?

Collections.sort(list);按自然顺序排序;
Collections.binarySearch(list,key); 二分查找;
Collections.reverse(list) 反转;
Collections.shuffle(list) 随机替换;

4、final、finally、finalize的区别?

final:修饰类,不能被继承,修饰方法不能被重写,修饰变量是常量
finally:是异常处理的一部分,用于释放资源,一般来说代码肯定会执行,除非在执行finally之前,jvm退出了。
finalize:是Object的一个方法,用于垃圾回收。

5、如果catch里有return语句,请问finally还会执行吗?如果会是在return前还是return后?

会,在return前执行。不过finally的逻辑不会改变return的返回值。

6、实现多线程有几种方式?分别是什么

有三种方式,继承Thread类,实现runnable接口,实现callable接口

7、runnable与callable的区别?

Callable任务执行后可以有返回值,而runnable不能返回值,call方法可以抛出异常,而run方法只能try catch,运行callable任务可以拿到一个Future对象,callable依赖线程池。

8、使用线程池的好处?

使用线程池提高系统的性能,减少创建,销毁线程的资源开销,因为代码结束后,线程不会死亡,而是再回到线城池,等待下一个对象的调用。

9、线程的生命周期?

java 面试

10、sleep()和wait()的区别?

Sleep  会把执行机会给其他线程,到时后自动恢复,不会释放对象锁,

wait 会释放对象锁,只有对象发出notify或notifyAll才准备获取对象锁。

11 、join()

join  单核cpu运行多线程时底层实现原理是多个线程间切换,由于cpu的处理速度很快,看上去像多个线程同时运行。

那么我们如何实现让线程T1,T2,T3,在T1执行完成后才执行T2,T2执行完成后才执行T3,

也就是线程的串行化,通过Thread类的join方法就可以实现。

11、run()和start()的区别?

Run仅仅是调线程执行的普通方法,start首先会启动线程,由Jvm调用run方法。

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Chase620 Chase620
3年前
ArrayList底层
一、ArrayList集合底层数据结构1.ArrayList集合介绍List集合的可调整大小数组实现。2.数组结构介绍增删快:每次增加删除元素,都需要更改数组长度、拷贝以及移除元素位置。查询快:由于数组在内存中是一块连续空间,因此可以根据地址索引的方式快速获
Wesley13 Wesley13
3年前
java16
1:List的子类(掌握)(1)List的子类特点ArrayList:底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector:底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList:底层数据结构是链表,查询慢,增删快线程不安全,效率高(2)ArrayListA:
Wesley13 Wesley13
3年前
java集合基础复习
温故知新,好一段学习时间过后到了收割的季节。java中集合java.util包下的一个集合根接口collection,其子接口list和set,map接口定义keyvalue键值对。ArrayList、linkedlist、vector实现了list接口。也称线性集合。数据有序可重复。ArrayList:底层实现的数组,线程不安全的,效率
Stella981 Stella981
3年前
List接口(动态数组)
List接口(动态数组)List集合类中元素_有序且可重复_ArrayList(重要)作为List接口的主要实现类线程不安全的,效率高底层使用Object\\elementData数组存储ArrayList的源码分析jdk7
Wesley13 Wesley13
3年前
Java 集合线程安全
线程不安全的的集合有(HashSet,TreeSet,ArrayList,ArrayDeque,LinkedList,HashMap,TreeMap);线程安全的集合有(Vector,HashTable);Java(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Flib.csd
Wesley13 Wesley13
3年前
Java中常见数据结构:List与Map
1:集合Collection(单列集合)List(有序,可重复)ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList底层数据结构是链表,查询慢,增删快线程不安全,效率高Set(无序,唯一)HashSet底层数据结构是哈希表(实际上是
Stella981 Stella981
3年前
BAT面试笔试33题:JavaList、Java Map等经典面试题!
JavaList面试题汇总1、List集合:ArrayList、LinkedList、Vector等。2、Vector是List接口下线程安全的集合。3、List是有序的。4、ArrayList和LinkedList数据结构不一样,前者用在查询较多的场合,后者适用于插入较多的场合。5、ArrayList使用的是
Wesley13 Wesley13
3年前
Vector, ArrayList, LinkedList 区别与用法
ArrayList和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,
Stella981 Stella981
3年前
ArrayList的非快速失败机制和Vector与ArrayList的(基础)分析
/\\ \1、copyOnWriteArrayList 如何实现(nonfastfail)非快速失败机制??? \2、Vector底层源码,主要看属性,构造函数、增删改查方法、明白ArrayList与Vector之间的区别与联系 \(底层数据结构、效率、扩容机制、是否线程安全) \ \/