您的位置 首页 java

Java面试题之反射和对象拷贝

在去面试 Java 开发工作之前,多做一些复习题不仅能够让自己再加深一遍对于Java概念的印象和理解,还能够帮助自己在面试时更加从容和自信。在Java面试题中,反射和对象拷贝是两个考点,常见考题如下:

青岛Java

反射:

1、什么是反射?

答:Java中的反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息。

2、什么是Java 序列化 ?什么情况下需要序列化?

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

当Java对象需要在网络上传输或者 持久化 存储到文件中时,就需要对Java对象进行序列化处理。

3、动态代理是什么?有哪些应用?

答:动态代理:在程序运行时,运用 反射机制 动态创建而成。

应用:(1)统计每个 api 的请求耗时;

(2)统一的日志输出;

(3)校验被调用的api是否已经登录和权限鉴定;

(4)Spring的 AOP 功能模块就是采用动态代理的机制来实现切面编程。

4、怎么实现动态代理?

答:Java领域中,常用的动态代理实现方式有两种,一种是利用 JDK 反射机制生成代理,另外一种是使用 CGLIB 代理。JDK代理必须要提供接口,而CGLIB则不需要,可以直接代理类。

对象拷贝:

1、为什么要使用克隆?

答:想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了。

2、如何实现对象克隆?

答:(1)实现Cloneable接口并重写Object类中的clone()方法;

(2)实现 Serializable接口 ,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

3、深拷贝和浅拷贝区别是什么?

答:浅拷贝:只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化。

深拷贝:将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变。

它们的区别简单点说就是:在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存,采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。

文章来源:智云一二三科技

文章标题:Java面试题之反射和对象拷贝

文章地址:https://www.zhihuclub.com/181793.shtml

关于作者: 智云科技

热门文章

网站地图