如何强制执行垃圾回收?
(1)首先,垃圾回收是JVM自动处理的,我们不能强制致敬,尽管我们可以调用System.gc()。
(2)JVM不能保证GC能够直接开始回收。
(3)每一个class都从Object基础了finalize()方法。
(4)当垃圾回收器觉得应用中没有更多的引用对象存在时就会调用finalize()。因此我们手动调用finalize()并没有什么多大作用
(5)我们可以通过调用System.gc()和Runtime.gc()来请求回收不用的对象,但是不能保证这些对象何时会被回收。
Java的Socket的有点和缺点
优点:
(1)Socket是灵活的,可以很容易的实现一般的通信。
(2)Socket通信只需要很少的流量而不像HTML表单和CGI脚本那样每次请求网页都会传输整个页面。
缺点:
(1)基于Socket的通信只允许在应用间发送原始的数据。
(2)无论是客户端还是服务端都必须提供一个机制使数据在任何情况下都是有用的。
你如何理解Synchronization?为什么它很重要?
(1)Synchronization关键字是控制多线程访问共享资源的一种手段。
(2)Synchronization只允许在一个时间点一个线程访问一个资源。
(3)Synchronization保证当一个线程在修改共享的对象时另一个线程不能再访问该对象。
(4)Synchronization通常会导致错误,因为它防止了一些类型的数据被损坏。
什么是不变类?如何创建一个不变类?
(1)不变类是指一个类一旦被创建了,它的内容就不能被修改。比如不能被继承,其所有属性/方法都不能被重写等。
(2)不变对象是那些一旦被创建就状态不能再被修改的对象
(3)既然不变类一般被创建就不能被修改,那么它们就是典型的线程安全的。
(4)JDK的不变类有八大基本类型的包装类:String、Integer、Boolean、等等。
ArrayList和Vector的区别?
(1)ArrayList是线程不安全的,Vectory是线程安全的,因为Vectory的每一个方法都用synchronization装饰了。
(2)这两者的元素都是通过数组来持有的
JDK、JRE和JVM有什么区别?
JVM为内存分配了多少类型的区域?
什么是JIT编译器?
什么是Platform?
Java平台和其他平台的主要区别是什么?
Java的“一次编写处处运行”的本质是什么?
什么是类加载器(ClassLoader)
局部变量默认值是多少?
什么是运行时多态性(Runtime Polymorphism)?
什么是抽象?
抽象是隐藏实现的细节而只向用户突出功能的一个过程。
在Java中创建对象有哪几种方式?
(1)使用关键字new对象
(2)使用Class.forName()根据对象的名称去反射一个对象,反射见http://blog.csdn.net/u012481172/article/details/49668315;
(3)使用clone()方法克隆一个已经存在的对象。
(4)使用反序列化,将已经序列化的对象反序列化成对象。