面试查漏补缺2

网易2020开发面试题

第二题:
题目描述:
在这里插入图片描述答案:
在这里插入图片描述解析:
Java 中泛型在编译时会进行类型擦除,因此l1和 l2 类型擦除后的结果都是 java.util.ArrayLis ,进而
l1.getClass() == l2.getClass() 的结果是 true。

第十题:
题目描述:
在这里插入图片描述答案:
在这里插入图片描述
解析:在这里插入图片描述在Demo类的内部有一个静态内部类,静态内部类只有在被外部类调用的时候才会加载。故在外部类调用的时候内部类才会进行加载并且实例化,在这里保证了是懒加载。

第十一题:
题目描述:
对象的浅拷贝和深拷贝区别是什么?在JAVA中如何实现?

解答:
首先不管是浅拷贝还是深拷贝,被拷贝的对象都要实现Cloneable接口,并且重写clone方法。

浅拷贝:在拷贝的时候只考虑被拷贝的对象,对被拷贝对象的引用数据类型不考虑,即从某种意义上来说克隆出的对象和原对象之前还存在一些关联。

深拷贝:在复制的时候不只考虑被复制的对象,也考虑到了被复制对象的引用数据类型,需要其内部的引用数据类型也要实现Cloneable接口,并且重新clone方法。如果内部的引用数据类型的内部还有引用别的数据类型,那么也需要实现Cloneable接口重新clone方法。还有的某些方法通过将原对象序列化输出后又读取进内存,这样读进来的对象就是原对象的一个深拷贝。
(注:基本数据类型是不存在引用的问题)

第十二题:
题目描述:
使用Thread类和Runnable方法来创建一个线程的区别是什么?

解答:
两种方式创建的线程本质上没有区别,主要是创建方式不同。
Thread类:通过继承Thread类并重写run()方法实现;

Runnable方法:通过实现Runnable接口并重写run()方法实现;

由于Java是单继承,多实现的,后者的可扩展性更高;同时通过Runnable实现的线程类能够实现某些资源的共享。

发布了12 篇原创文章 · 获赞 6 · 访问量 120

猜你喜欢

转载自blog.csdn.net/qq_38041105/article/details/105600885