1.面向对象的特征:
封装
多态
继承
抽象
2.LinkedList和ArrayList哪个增添数据更快,效率更高?
答:整体来说LInkedList更快,效率更高。但是在扩容之前,数据量较大的时候,并且插入是靠后的情况下是ArrayList效率高。在数据增添次数和查询次数差不多的情况下选择LinkedList。
3.如何使main线程最后关闭?
答:使用Thread.join方法,将指定线程加入当前线程中,使其交替执行合并为顺序执行。比如在线程B中调用了线程A的join()方法,直到线程A执行完毕后,才会继续执行线程B。
4.Exception(异常)的基类是什么?
答:Throwable
5.Hashset和Treeset的区别是什么?
答:Hashset存储数据是无序的,Treeset是有序的。
Hashset:LinkedHashset会记录Hashset存储顺序,可以按顺序遍历出来,其实依靠hashcode,equal方法来确定是否是重复元素。
Treeset:Treeset是ShortedSet的实现类,数据是升序排序的,必须实现comparable接口,没有此接口将无法判定其大小,并且他是依靠comparato()方法来判断是否是重复元素。
拓展:Set是不能存放重复元素的。
6.如何限制一个类的继承?
答:使用final类修饰,使其变为最终类。
7.了解的排序算法有哪几种,说一下快速排序原理?
答:冒泡排序,选择排序,插入排序,快速排序,希尔排序,归并排序,堆排序,基数排序,桶排序,计数排序等。
快速排序的原理:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
8.Vector与ArrayList和linkedList的区别
答:三者都是List的子类,方法基本相同,都可以对数据的增删查改,但是在安全,性能,行为上有着不同的表现。
Vector是线程安全的集合类,但是如果不必要线程安全,就不用使用,因为它大大降低了性能。
ArrayList是现在应用广泛的动态数组实现的集合类,它是线程不安全的,但是性能要好的多,可以根据需要增加数组容量,但是与Vector调整逻辑不同,ArrayList增加50%,Vector增加一倍。
LinkedList 是不需要增加长度的,也是线程不安全的。
Vector和ArrayList应该保证修改和插入操作的减少,因为每次执行这样的操作,都会对集合的元素进行移动除了尾部数据的操作。
LinkedList在修改或者出入元素时要高效很多,但是访问数据对于该集合就要满很多了。