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

Wesley13
• 阅读 498

问: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常见的异常:

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

数据结构考点:

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

算法考点:

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

算法常问的问题:

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

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

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

集合中set和list:

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

总结就是:

  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)

O(1)

O(n)

O(n)

O(n)

Resizable array list (List)

O(1)

O(n)

O(n)

O(1)

Stack (Stack)

O(1)

-

O(1)

-

Queue (Queue)

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)

O(1)

O(1)

O(1)

-

Tree based set (SortedSet)

O(log n)

O(log n)

O(log n)

-

点赞
收藏
评论区
推荐文章
如何优雅的处理异常
Java语言按照错误严重性,从throwale根类衍生出Error和Exception两大派系。本文从异常的定义、处理异常的方式、如何优雅的抛出异常以及处理异常等方面来聊聊如何异常这件事
Wesley13 Wesley13
2年前
javaAPI_IO流基础_异常
异常1.异常的概述和分类java中的异常有一个超类Throwable,然后其有俩个子类接口Error和Exception,其中Error是严重问题,这一个是程序中无法解决的,而另一个Exception则是一般问题。Exception又可以分为俩个:(1).编译时期异常:不是RuntimeException的异常,这一个是必须
Wesley13 Wesley13
2年前
java异常处理
_1.异常的分类_Error:称为错误,有java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。Exception:所以异常类的父类,其子类对应了各种各样可能出现的异常,一般需要用户显示的声明或捕获。RuntimeException:一类特殊的异常,如被0除,数组下标超范围等,其产生比较频繁,处理比较麻烦,如果显示
Wesley13 Wesley13
2年前
Java中的异常
异常的概述异常就是不正常的意思,Java语言中主要指程序在运行阶段产生的错误Throwable(可抛出、可扔出的)Java.lang.Throwable类是Java程序所有错误或异常的超类主要有两个子类:  Error:主要描述比较严重的错误,无法通过编程来解决的重大的错误  Exception:主要描述比较轻量
Wesley13 Wesley13
2年前
JEE开发异常处理
      在Java开发中,到处可见Exception或者它的子类。如何在一个已有的框架中或者自己的项目中利用好异常,而不让异常漫天飞,需要开发的积累和总结,这篇日志就为这个目的总结几年来的开发对异常使用总结吧。      首先认识Java异常体系结构,Java中使用Throwable作为所有的异常父类,下面有两大子类Error和Excepti
Wesley13 Wesley13
2年前
Java 的Throwable、error、exception的区别
1.  什么是异常?异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使用空的引用(NullPointerException)、数组下标越界(IndexOutOfBoundsException)、内存溢出错误等。Throwable类是Java语言中所有错误或异常的超类。有两个重要的子类:Exception(异常)和Error(错误),
Stella981 Stella981
2年前
Exception、Thorow、Throws、TryCatch
一、异常 概述:  异常指的是不正常,指的是程序中出现了某种问题       java中,所有问题都可以使用一个类来表示,这个类叫做Throwable  Throwable:       Throwawble是java中所有异常和错误的父类      Error: 表示错误,指的是不可挽回的严重问题    
Wesley13 Wesley13
2年前
Java异常
异常分为两种:Exception、ErrorException:异常,可以捕捉到,进行处理以后可以让程序继续正常执行Error:错误,不能捕捉,只能修改代码,重新执行ThrowableException(RuntimeException非运行时异常)throw:抛出指定的异常throws:用在方法声明处,声明该方法可能发生
Wesley13 Wesley13
2年前
JAVA学习笔记 之 异常
异常的概述代码在运行时期发生的问题就称之为异常。在java中,异常被封装成为了一个类,当程序出现了异常类中的问题时,异常的信息(如位置和原因)就会被抛出。在java中用Exception来描述异常,publicclassExceptionextendsThrowable则是异常的继承体系。 Throwable是所有错误或异常的
Stella981 Stella981
2年前
PlayJava Day020
1.异常Exception补充:①错误(Error)指的是致命性错误,一般无法处理②异常以类的形式封装程序可以处理的异常对应的类是java.lang.Exception及其子类运行时异常对应的类是java.lang.RuntimeException错误异常对应的类是java.lang.Error③异常相关类的继承树:java.la