面试题:反射、对象拷贝、异常

130 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

  • 个人简介:微信公众号关注:SteveCode。为您分享更多的知识学术。生于忧患死于安乐
  • 专注Java技术干货分享,Java基础技术、数据结构、相关工具、Spring全家桶、intellij idea......

文章面试题整理出自:Java 最常见的 200+ 面试题:面试必备_Java中文社群的博客-CSDN博客_java面试题

要么做好要么不做

四、反射

57.什么是反射?

对于任意类都能够获取他的属性和方法。

对于任意对象都可以调用他的属性和方法。这种动态获取类的信息和调用属性与方法的功能称为Java的反射机制。

www.cnblogs.com/ynzj123/p/1…

反射是:检测、访问、修改他本身状态或行为的一种能力。

58.什么是 java 序列化?什么情况下需要序列化?

序列化:Java对象转成字节流的过程

反序列化:字节流转换成Java对象的过程

当一个对象需要在网络上传输或者是要保存到硬盘当中时,这个时候需要对Java对象序列化。

实现序列化的方式:类实现serialization接口,这个接口没有任何方法,某类实现了这个接口,jvm就会知道该类要序列化。

59.动态代理是什么?有哪些应用?

blog.csdn.net/woshichuanq…

动态代理就是:将某个接口中的方法添加额外的功能,比如:事务与日志。顾名思义:给一个类创建一个代理类,代理类不仅拥有原来那个类的方法,而且还做了额外的功能。

应用:事务,日志、Spring Aop

60.怎么实现动态代理?

cglib代理类,是采用继承的方式来实现代理。目标类不能是final修饰的

jdk动态代理:(代理接口)

1、先创建一个类去实现InvocationHandler这个接口,并实现invoke方法。

2、实现动态代理的方法: Proxy.newProxyInstance()

jiankunking.blog.csdn.net/article/det…

五、对象拷贝

blog.csdn.net/weixin_4184…

61.为什么要使用克隆?

想对一个对象进行处理,却又想保留原有的数据。这个时候就需要克隆了

62.如何实现对象克隆?

类实现cloneable接口重写clone()方法

类实现serializable接口,通过对象序列化和反序列化来实现。

63.深拷贝和浅拷贝区别是什么?

深拷贝就是:复制对象的值,其中任意一个值发生改变另一个值不会发生变化。(拷贝出来的对象值的变化与元对象无关)

先拷贝:复制对象的内存地址,一个值发生改变另一个值也会发生改变,(你变我也变我来值都相同)

七、异常

74.throw 和 throws 的区别?

try catch{ 使用throw }指定要抛出的异常

throws:在方法参数后面,加上。表示:可能会抛出的异常

75.final、finally、finalize 有什么区别?

用法:final可以修饰类,方法,属性。

finaly一般用在try catch{}finaly{},不管 发生任何情况都会执行里面的代码。

finalize是一个object中的一个方法,对象在被垃圾回收之前完成资源的回收

76.try-catch-finally 中哪个部分可以省略?

-finally、catch都可以省略,但是有try 的时候,后面至少要跟他俩的其中一个。

77.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

会执行,在return之前执行。

**还有一种情况都有return,肯定会执行finally中的return的值。

blog.csdn.net/qq_40180411…

78.常见的异常类有哪些?

空指针异常、IO异常、sql异常、网络链接异常、数组越界异常、等

www.cnblogs.com/hongwei2085…