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对象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