失效链接处理 |
2020年java大数据面试基础v2 PDF 下载
本站整理下载:
相关截图:
主要内容:
1. java基础
1.1. java容器/集合
1.1.1.Collection-集合
1.1.1.1. List-有序集合
ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全),数组实现初始长度10;扩容的的策略为:取(oldCapacity * 3)/2 + 1
LinkedList:双向链表实现,增删快,查询慢 (线程不安全)
Vector:数组实现,重量级 (线程安全、使用少)
1.1.1.2. Set-无序无重复集合
HashSet 具有比较好的读取和查找性能,线性不安全,底层其实是包装了一个HashMap去实现的。
TreeSet:实现了SortedSet接口,用TreeMap实现的,本质上是一个红黑树原理;线性不安全;排序分自然排序和定制排序,自然序通过对象的compareTo方法实现,定制序通过关联一个Comparator对象实现。TreeSet中元素将按照升序排列,默认是按照自然顺序进行排列
LinkedHashSet:HashSet的一个子类,用一个链表来维护元素的插入顺序,线性不安全,哈希表+双向链表实现;LinkedHashSet的所有方法都继承自HashSet, 而它能维持元素的插入顺序的性质则继承自LinkedHashMap。
EnumSet:专为枚举类型设计的集合,因此集合元素必须是枚举类型,否则会抛出异常。 EnumSet集合也是有序的,其顺序就是Enum类内元素定义的顺序。 EnumSet存取的速度非常快,批量操作的速度也很快。
transient关键字标记的成员变量不参与序列化过程
1.1.1.3. Queque-队列
非阻塞队列:
*LinkedList
* PriorityQueue类实质上维护了一个有序列表。加入到 Queue 中的元素根据它们的天然排序(通过其 java.util.Comparable 实现)或者根据传递给构造函数的 java.util.Comparator 实现来定位。
* ConcurrentLinkedQueue 是基于链接节点的、线程安全的队列。并发访问不需要同步。因为它在队列的尾部添加元素并从头部删除它们,所以只要不需要知道队列的大小,ConcurrentLinkedQueue 对公共集合的共享访问就可以工作得很好。收集关于队列大小的信息会很慢,需要遍历队列。
阻塞队列:BlockingQueue
* ArrayBlockingQueue :一个由数组支持的有界队列。按 FIFO(先进先出)排序
* LinkedBlockingQueue :一个由链接节点支持的可选有界队列。按 FIFO(先进先出)排序元素
* PriorityBlockingQueue :一个由优先级堆支持的无界优先级队列。
* DelayQueue :一个由优先级堆支持的、基于时间的调度队列。
* SynchronousQueue :一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制。
1.1.2. Map-键值集合
HashMap:key不能重复,但是value可以重复;value对应着放;允许null的键或值;无序,存入顺序和输出顺序无关,null key元素,放置0号元素,平衡因子0.75;1.8之后len>8转红黑树。
Hashtable:线程安全的,不允许null的键或值;
Properties::key和value都是String类型,用来读配置文件;
LinkedHashMap:HashMap的子类,维护着一个运行于所有条目的双向链表。存储的数据是有序的,可实现LRU自动回收式缓存。
TreeMap:对key排好序的Map; key就是TreeSet, value对应每个key; key要实现Comparable接口或TreeMap有自己的构造器;红黑树实现。
concurrentHashMap:加入分段锁(Segment);1.8后采用cas和syschronized
WeakHashMap:通过使用WeakHashMap来引用缓存对象,由JVM对这部分缓存进行回收。
ConcurrentCache:Tomcat中的ConcurrentCache使用了WeakHashMap来实现缓存功能。且是分代缓存。
1.2. 异常
1.2.1. Throwable-异常超类
1.2.2.Exception-异常
Checked Exception:可检查的异常,这是编码时非常常用的,所有checked exception都是需要在代码中处理的。它们的发生是可以预测的,正常的一种情况,可以合理的处理。比如IOException,或者一些自定义的异常。除了RuntimeException及其子类以外,都是checked exception。
Unchecked Exception:RuntimeException及其子类都是unchecked exception。比如NPE空指针异常,除数为0的算数异常ArithmeticException等等,这种异常是运行时发生,无法预先捕捉处理的。Error也是unchecked exception,也是无法预先处理的。
1.2.3. Error-错误
Error是错误,对于所有的编译时期的错误以及系统错误都是通过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。
1.3. 多线程
|