Java面试题总结

it2022-05-06  15

1.Object有哪些公用方法

equals clone getClass notify notifyAll wait

2、Java中的四种引用

强引用:强引用的对象不会被回收,内存不足会报oom。显式地将null赋值给引用可以中断引用和对象之间的关联以便gc回收。

           平时写的变量基本上都是强引用。

软引用:当内存不足时,gc会回收

弱引用:如果gc发现了,不管内存足不足都会回收

虚引用:相当于没有引用

3、String、StringBuffer和StringBuilder的区别

String不可改变,StringBuffer和StringBuilder都可以改变,StringBuffer线程安全、StringBuilder线程不安全。

4、解析xml的几种方式的原理与特点、

DOM解析:消耗内存,先把xml文档读到内存中,然后再用DOM api来访问树形结构,并获取数据。这个写起来简单,但是很消耗内存。

SAX解析:解析效率高,占用内存少,基于事件驱动:扫描到开始与结束标志时通知事件处理函数,由事件处理函数做出相应的动作。

PUll解析:与SAX类似,也是基于事件驱动。调用next()来获取下一个解析事件(开始文档,结束文档,开始标签,结束标签)。当处于某个元素时可以调用XmlPullParser的getAttribute方法来获取属性的值,也可以调用他的nextText()获取本节点的值。

5、wait和sleep的区别

sleep来自thread,wait来自object

调用sleep,不会释放对象锁。而调用wait,线程会释放对象锁

sleep不让出系统资源,而wait让出系统资源让其他的线程可以占用CPU、

sleep(milliseconds)需要指定睡眠时间,时间一到会自动唤醒

6、多态的实现原理:

多态的意思是同一个方法由不同的对象执行会产生不同的结果,多态的实现原理就是动态绑定,程序调用的方法在运行期才动态绑定。

7、垃圾回收机制

垃圾回收的意思是JVM回收内存中不被使用的对象以释放内存。

如果对象被强引用持有,就一定不会被回收;

如果对象被弱引用持有,那么当gc发现被弱引用持有的对象时,就会将其回收。

如果对象被软引用持有,那么当内存不足时gc会将持有软引用对象回收,内存充足时则不会回收。

如果对象没有持有任何引用,则gc随时会将其回收。

8、

浅谈Java浅层复制和深层复制

Java对象的深层复制是指Java对象A本身被clone成新对象B,同时A的属性也是被clone成新对象,赋值到A的各个属性上去,A与B的相同属性都引用到不同的对象; Java对象的浅层复制是指Java对象A本身被clone成新对象B,但A的属性没有被clone处理,只是把A的各个属性所指的对象赋值到B对应的属性上,A与B的相同属性都引用到同一个对象。

在java中,默认是浅层复制的,如果要复制的对象中只含有基本数据类型和String类型,

那么浅层复制和浅层复制是没有区别的,所以你可以放心的使用默认的浅层复制,

 9、ArrayList/LinkedList/Vector的区别

ArrayList 和Vector底层是采用数组方式存储数据,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差

LinkedList使用双向链表实现存储,随机存取比较慢,但是插入速度快。

10、

对象的创建有几种方式

有4种显式地创建对象的方式:

   用new语句创建对象,这是最常用的创建对象的方式。

   运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

   调用对象的clone()方法。

   运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.

 

转载于:https://www.cnblogs.com/wut-caibin/p/5960158.html


最新回复(0)