不知不觉中,已经将面试题更新到第六篇了,庞大的java面试题库,想要刷完似乎不大可能,需要一点一点的积累。
1、java 中会存在内存泄漏吗,请简单描述。
答:会;存在无用但可达的对象,这些对象不能被GC 回收,导致耗费内存资源。
2、静态变量和实例变量的区别?
答:静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问;而实例变量必须依存于某一实例,只能通过对象才能访问到它。
3、是否可以从一个static 方法内部发出对非static 方法的调用?
答:不可以,如果其中包含对象的method(),不能保证对象初始化。
4、写clone()方法时,通常都有一行代码,是什么?
答:Clone 有缺省行为:super.clone(),他负责产生正确大小的空间,并逐位复制。
5、GC 是什么? 为什么要有GC?
答:GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() 。
6、说出数据连接池的工作机制是什么?
答:J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
7、EJB 的激活机制?
答:以Stateful Session Bean 为例:其Cache 大小决定了内存中可以同时存在的Bean 实例的数量,根据MRU 或NRU 算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB 实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean 实例则从其去激活Bean 存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive 和ejbPassivate 方法.
未完待续~~