JAVA基础面试(续002)

文章目录

  • ArrayList 和 LinkedList 的区别
  • ArrayList 和 Vector 的区别
  • 字符流和字节流的区别
  • 说明缓冲流的优点和原理
  • 方法的重载和方法的覆盖有什么不同?
  • Java集合框架的基础接口有哪些
  • java中有哪几种xml解析方式?
  • 如何自定义异常类?

ArrayList 和 LinkedList 的区别

  • 数据结构实现ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。
  • 随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
  • 增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为ArrayList 增删操作要影响数组内的其他数据的下标。
  • 内存空间占用:LinkedList 比 ArrayList 更占内存,因为 LinkedList 的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
  • 线程安全:ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;

ArrayList 和 Vector 的区别

  • Vector是线程安全的(方法实现加了一个synchronized的关键字),ArrayList不是线程安全的(有类似关系的还有:StringBuilder 和 StringBuffer、HashMap 和 Hashtable。)
  • ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。
  • 在源码的实现中,ArrayList的初始值是一个空串,也就是容量为0,等到使用add方法的时候才初始化容量为10。而Vector在一开始的时候初始容量就已经是10了。
    JAVA基础面试(续002)_第1张图片

字符流和字节流的区别

字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串。
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
stream结尾都是字节流,reader和writer结尾都是字符流。
两者的区别就是读写的时候一个是按字节读写,一个是按字符。

说明缓冲流的优点和原理

读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从而提高了工作效率。
优点:减少对硬盘的读取次数,降低对硬盘的损耗。

方法的重载和方法的覆盖有什么不同?

方法重载,指的是在类中创建多个具有相同名称,但使用不同参数的方法,
Java虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。
方法的覆盖指在子类中重新定义父类中已有的方法,对于重写的方法,运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。

Java集合框架的基础接口有哪些

Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。以下的3个接口都是Collection接口的实现类。

  1. Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合。
  2. List是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。
  3. Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。

java中有哪几种xml解析方式?

SAX解析、DOM解析、JDOM解析、DOM4J解析

如何自定义异常类?

class  异常名称 extends Exception{}

你可能感兴趣的:(java,java,面试,链表)