Java基础面试题(上)(2022整理)

本文详细介绍了Java基础面试中的重要知识点,包括Object类的方法、异常体系、内存分配、线程安全、反射原理、数据结构与算法等。讨论了throw与throws的区别、对象创建过程、BIO/NIO/AIO的区别、类加载器工作原理、不同类型的集合实现及其线程安全性,以及JDK1.8的新特性如Lambda表达式和Stream API。通过这些内容,帮助读者准备Java面试并深化对Java语言的理解。
摘要由CSDN通过智能技术生成

点击观看Java基础面试题(下)

点击观看Java并发面试题

Object类中的方法

  • clone方法:可以实现对象的浅复制来保护方法,只有实现了Cloneable接口才可以调用该方法,否则抛出 CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要类中复写clone方法。
  • getClass方法:final方法,获得运行时类型。
  • toString方法
  • finalize方法:该方法用于释放资源。该方法一般由垃圾回收器来调用。
  • wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁和CPU资源。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法后当前线程被唤醒(进入“就绪状态”),wait(long
    timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
  • hashCode方法:该方法用于哈希查找,可以减少在查找中使用equals 的次数,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
  • notify方法:该方法唤醒在该对象上等待的某个线程。 notifyAll方法:该方法唤醒在该对象上等待的所有线程。

异常体系

Throwable的子类为Error和Exception。
Exception的子类为RuntimeException(运行时)异常和RuntimeException及其子类以外的(编译)异常(例如IOException)。
主要分为错误、运行时异常和编译时异常。

  • Error:就是一些程序处理不了的错误,代表JVM出现了一些错误,应用程序无法处理。例如当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。
  • 运行时异常:RuntimeException及其子类表示JVM在运行期间可能出现的异常,比如:使用空值对象引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException),此类异常属于不可查异常,在程序中可以选择捕获处理,也可以不处理
  • 编译异常:如果程序中出现此类异常,必须对异常进行处理(try catch、throw)否则编译不通过。

throw与throws区别

throw关键字用在方法内部,只能用于抛出一种异常; throws关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表

JAVA获取对象的四种方式

  • 使用new创建对象
  • 通过反射的方式
  • 通过clone的方式
  • 通过反序列化的方式
反射
Class class = Class.forname("com.heyjia.test.Hello");
Hello hello = (Hello)class.newInstance();
克隆
Hello hello1 = new Hello();
Hello hello2 = (Hello)hello1.clone();

Java中BIO、NIO、AIO的区别

  • BIO是面向流的,NIO是面向缓冲区的;
  • BIO是阻塞的,NIO是非阻塞的,阻塞就意味着一个线程调用read或write时,线程会被阻塞直到数据被读取或数据完全写入,而NIO的话,线程可以去做别的事情,数据读取到buffer中后,线程再去处理数据
  • NIO的选择器允许一个单独线程监视多个输入通道,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值