41、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?
hashCode()方法提供了对象的hashCode值,是一个native方法,返回的默认值与
System.indetityHashCode(obj)一致。
hashCode()的作用是获取哈希码,也成为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象
在哈希表中的索引位置。
equals()相等的两个对象,hashCode()一定相等;
hashCode()不相等,一定能推出equals()也不相等;
hashCode()相等,equals()可能相等,也可能不等
42、字节流与字符流的区别
字节流:数据以字节数据的方式传输,传输过程不做中间处理。
字符流:字符数据在传输开始时会转换为字节进行传输,传输结束时会从字节转换回字符
43、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读
写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements
Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个
ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法
就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流
44、描述一下JVM加载class文件的原理机制?
JVM中类的装载是由ClassLoader和它的子类来实现的,JavaClassLoader是一个重要的运行时系统组件。它负责
在运行时查找和装入类文件的类
45、heap和stack有什么区别。
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个
组成元素
46、GC是什么?为什么要有GC?
GC是垃圾收集器。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理
47、垃圾回收的优点和原理。并考虑2种回收机制。
①,Java语言最显著的特点就是引入了垃圾回收机制,它使java程序员在编写程序时不再考虑内存管理的问题
②,由于有这个垃圾回收机制,java中的对象不再有”作用域”的概念,只有引用的对象才有”作用域”
③,垃圾回收机制有效的防止了内存泄漏,可以有效的使用可使用的内存;
④,垃圾回收器通常作为一个单独的低级别的线程运行,在不可预知的情况下对内存堆中已经死亡的或很长时间没
有用过的对象进行清除和回收;
⑤,程序员不能实时的对某个对象或所有对象调用垃圾回收器进行垃圾回收
垃圾回收机制有分代复制垃圾回收、标记垃圾回收、增量垃圾回收
48、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
GC(Garbage Collection)是指垃圾回收,对于Java来说,就是回收内存中无用的数据、对象等。Java有多套规
则可以判断一个对象是否是垃圾,是否应该被回收。主要规则是:当没有任何引用指向一个对象的时候,这个对
象就可以被回收了。
Java中有专门的线程负责垃圾回收,不需要程序员自己控制回收过程,以便让程序员专注于业务逻辑代码,而不
用考虑数据回收等繁琐问题。
此外Java中提供了System.gc()方法来通知JVM尽快回收,但也不是立马回收,JVM会选择合适的时机进行回收
49、Java 中,throw 和 throws 有什么区别
Java中throw语句用来明确地抛出一个”异常”;
throws用来标明一个成员方法可能抛出的各种”异常”
50,java中会存在内存泄漏吗,请简单描述。
内存泄漏指的是:没用的内存不被回收而导致的内存浪费。虽然说GC会帮我们释放无用对象占用的内存,但是GC
只会释放没有任何引用的对象,如果一个对象已经没用了,但是由于我们代码的问题导致整个对象一直被引用,
它占据的内存就迟迟不能被回收,这种情况也属于内存泄漏
上一篇: Java常用面试题之Java基础篇(四)
下一篇: Java常用面试题之JavaWeb篇(六)