三.JAVA基础面试题:其他
1.异常的结构
- JAVA有异常(Exception)和错误(error)
- 错误
编译时错误:语法不通过。
运行时错误:JVM虚拟机出错。 - 异常
编译时异常(受检异常):编译时异常和代码本身逻辑无关,一般都为环境。(filenotfoundException,SQLException,classnotfoundException)
运行时异常(不受检异常)(nullpointerException,arrayindexoutofboundsException)
2.异常的处理try-catch-finally的使用
- 抛出异常(抛)
throw - 处理异常(抓)
try-catch-finally
throws - try-catch-finally的使用
try不能单独出现。
编译器规定,受检异常必须通过try-catch。
运行时异常不需要,故可以try-finally。 - try-catch-finally的顺序
有异常:异常之后的try块内代码不执行,依次执行catch和finally里面的代码。
无异常:try代码和finally代码。
有返回值时:try和catch返回前都要先执行finally,finally可提前return,但是finally改变不了try和catch的return的值
3.try-with-resources的使用
- try(){ } catch(){}
将需要手动关闭的资源放到try的括号中,java自动关闭资源。
1.什么是泛型?有什么作用?
- 编译器对泛型参数进行检测,能够指定传入对象的类型,增强代码的可读性。
2.泛型有哪几种?实际用途?
- 泛型有泛型类,泛型接口,泛型方法。
- 泛型可用在通用的返回结果。工具类。
1.什么是反射?反射的缺点?
- 反射赋予我们在运行时分析类,获取类的方法属性的结构并且可以调用。
- 反射可以无视泛型参数的安全检查。
2.什么是注解?
- 注解本质是继承了annotation的特殊接口,必须通过解析之后才能生效。
3.注解的解析方法有哪几种?
1.spi和api的区别
- spi是调用方提供接口(规范),实现方具体实现。
- api是实现方实现了接口并提供给调用方调用。
2.序列化和反序列化机制是什么
- 序列化:将数据结构或者对象转化为二进制流的过程
- 反序列化:将二进制流转化为数据结构或者对象的过程
- 序列化的主要目的:通过网络传输对象或者将对象持久化。
3.有些字段不想序列化怎么办
- 不想进行序列化的变量用transient关键字修饰
- transient的使用说明
只能修饰变量,不能修饰方法。
如果对象被序列化后其中有属性被transient修饰,那么反序列化后该属性会被赋默认值(null或0)。
static变量不会被序列化,因为不属于对象。
4.IO流了解吗?IO流为什么分为字节流和字符流?
- IO流分为输入流(外部存储到内存)和输出流(内存到外部存储)。
- IO流也分为字节流和字符流。
- 为什么要有字符流?
字节流转换字符非常耗时。不知道编码类型的话,转换字符时容易出现乱码,故可以直接用字符流。
有些字符不清楚编码类型无法得知几个字节,如只需要前三个字符,但是不清楚有几个字节,可以直接字符流的前三个。
5.什么是语法糖?常见的语法糖有哪些?
- 语法糖是指编程语言方便程序员开发而涉及的特殊语法。
- 语法糖
泛型,自动装拆箱,变长参数,增强for循环,try-with-resources
未更新