java 面试知识点笔记(十四)异常体系

问:Error和Exception的区别?java

ps:Throwable上层是Object算法

  • Error:程序没法处理的系统错误,编译器不作检查
  • Exception:程序能够处理的异常,捕获后可能恢复

RuntimeException:不可预知的,程序应当自行避免(好比加入if(name!=null))数组

非RuntimeException:可预知的,从编译器校验的异常安全

从责任角度看:数据结构

  1. Error属于JVM须要负担的责任
  2. RuntimeException是程序应该负担的责任
  3. CheckedException可检查异常是java编译器应该负担的责任

RuntimeException常见的异常:框架

  1. NullPointerException - 空指针引用异常
  2. ClassCastException - 类型强制转换异常
  3. IllegalArgumentException - 传递非法参数异常
  4. IndexOutOfBoundsException - 下标越界异常
  5. NumberFormatException - 数字格式异常
  6. ArithmeticException - 算术运算异常
  7. ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
  8. NegativeArraySizeException - 建立一个大小为负数的数组错误异常
  9. SecurityException - 安全异常
  10. UnsupportedOperationException - 不支持的操做异常 

非RuntimeException常见异常:优化

  1. ClassNotFoundException 找不到指定class的异常
  2. IOexception IO操做异常
  3. FileNotFoundException 找不到指定文件的异常

Error常见的异常:spa

  1. NoClassDefFoundError 找不到class定义的异常(class或jar不存在、类文件存在可是在不一样的域中、大小写问题,javac无视大小写)
  2. StackOverflowError 深递归致使栈被消耗尽而抛出的异常
  3. OutOfMemoryError 内存溢出异常

 

数据结构考点:指针

  1. 数组和链表的区别
  2. 链表的操做,如反转、链表环路检测、双向链表、循环链表相关操做
  3. 队列、栈的应用
  4. 二叉树的遍历方式(前序中序后序)以及递归和非递归的实现
  5. 红黑树旋转

 

算法考点:orm

  1. 内部排序:如递归排序、交换排序(冒泡、快排)、选择排序、插入排序
  2. 外部排序:应掌握如何利用有限的内存配合海量的歪脖存储来处理超大的数据集,写不出来也要有相关思路(归并排序)

算法常问的问题:

  1. 哪些排序是不稳定的,稳定意味着什么?(快排、堆排)
  2. 不一样数据量级,各类排序最好或者最差的状况(算法的时间、空间复杂度)
  3. 如何优化算法(空间换时间)

java集合框架 主要集中在java.util包中 其中最关键的是juc包

集合中set和list:

总结就是:

  1. list:有序可重复(可经过索引直接查找元素)
    1. 底层是数组ArrayList和Vector。查找第n个数据时间复杂度是O(1),插入或者删除时间复杂度是O(N),在数组的任意位置插入或者删除,后面的数据都要移动(最好的状况是O(1)最坏O(N)),因此整体的时间复杂度仍然是O(N)
    2. 底层是链表 LinkedList。在链表中查找第n个数据的时间复杂度是 O(N),可是插入和删除数据的时间复杂度是O(1) ,由于只要改指针就好了
  2. list:无序不重复(查找只能经过遍历整个集合)
    1. 底层是hashMap的hashSet 时间复杂度为O(1)  
    2. 底层是二叉树 TreeSet 时间复杂度为O(log(n))

经常使用数据结构的时间复杂度:

Data Structure Add Find Delete GetByIndex
Array (T[]) O(n) O(n) O(n) O(1)
Linked list (LinkedList<T>) O(1) O(n) O(n) O(n)
Resizable array list (List<T>) O(1) O(n) O(n) O(1)
Stack (Stack<T>) O(1) - O(1) -
Queue (Queue<T>) O(1) - O(1) -
Hash table (Dictionary<K,T>) O(1) O(1) O(1) -
Tree-based dictionary(SortedDictionary<K,T>) O(log n) O(log n) O(log n) -
Hash table based set (HashSet<T>) O(1) O(1) O(1) -
Tree based set (SortedSet<T>) O(log n) O(log n) O(log n) -
相关文章
相关标签/搜索