1、Java 中异常机制。
Java 中所有异常都是Throwable的子类,他的直接子类有两个,一个是Error, 一个是Exception。Error一般表示 JVM 出现了严重问题,比如说栈溢出或 OOM,Exception中异常分为两类,一类是RuntimeException表示运行期间出现的错误,比较常见的是空指针异常和数组下标越界,出现这种异常一般是程序出现了逻辑错误,也就是代码有 Bug。另一类是编译时异常(除了RuntimeException以外的异常),常见的一般有IOException等, 出现这种错误程序编译会不通过。
还有一种分类方式是checked exception和uncheck exception。unchecked exception包括Error和RuntimeExcetion,checked exception指之前所说的编译时异常。
2、Java 中异常怎么处理,什么时候抛出,什么时候捕获;
一般原则是提早抛出,延迟捕获
出现异常时,若当前无法处理则抛,否则捕获异常,尝试恢复。
3、说一说对 java io 的理解
Java 的 I/O 操作类在包 java.io 下,大概有将近 80 个类,但是这些类大概可以分成四组,分别是:
基于字节操作的 I/O 接口:InputStream 和 OutputStream
基于字符操作的 I/O 接口:Writer 和 Reader
基于磁盘操作的 I/O 接口:File
基于网络操作的 I/O 接口:Socket
4、知不知道 NIO
三个特点:
Channels and Buffers // 通过 Channels 访问 Buffers
Non-blocking IO // 非阻塞 IO
Selectors // 单线程,监控 nultiple Channels
5、说下 IO 模型。
BIO:JDK1.4 之前的阻塞 IO
NIO:JDK1.4 及以后的版本,非阻塞 IO
AIO:JDK1.7 之后,又叫 NIO.2,异步 IO
整个Java I/O模型,大致可以分为三类:
6、Java 锁机制
7、重入锁、对象锁、类锁的关系
8、哪些方法实现线程安全?
synchronized,volatile,然后重点说了下 volatile 在某些情况下可以实现线程安全,然后就把面试官注意力往 volatile 上引,因为volatile 这个专门看了一下,果然,面试官马上问了 volatile。
9、Java 中的同步机制,synchronized 关键字,锁(重入锁)机制,其他解决同步的方 volatile 关键字 ThreadLocal 类的实现原理要懂。
10、Synchronized 和 lock 区别
11、锁的优化策略
读写分离
分段加锁
减少锁持有的时间
多个线程尽量以相同的顺序去获取资源
12、Java线程阻塞调用 wait 函数和 sleep 区别和联系,还有函数 yield,notify 等的作用。
sleep时线程的方法(让出 CPU),wait是对象的方法。
13、谈谈的 Java 反射的理解,怎么通过反射访问某各类的私有属性
通过反射,我们可以获取类的运行时内部结构。
反射 API 中有个方法getDeclaredFields()
14、动态代理的原理
动态代理基于反射实现,调用者通过代理对象来访问方法的时候,代理对象可以做相应的处理,然后通过反射调用被代理对象的方法。
关注重庆java圈
网友评论