本帖最后由 hurryup 于 2013-12-27 21:41 编辑
分享一下面试中遇到的问题,几个不懂的请不吝赐教。
1.请问你在什么情况下会在你的java代码中使用可序列化?为什么放到HttpSession中的对象必须要是可序列化的?
2.为什么在重写了equals()方法之后也必须重写hashcode()方法?
3.sleep()和wait()有什么区别?
4.编程题:用最有效率的方法算出2乘以17等于多少?
5.请阐述一下你对JAvA多线程中“锁”的概念和理解。
6.所有递归实现都可以用循环的方式实现,请描述一下这两种实现方式各自的优劣。
并举例说明在什么情况下可以使用递归,而在什么情况下只能使用循环而不能使用递归?
7.请阐述一下你对“面向接口编程的”理解。
8.在J2EE中有一个“容器(Container)”的概念,不管是EJB,PICO还是Spring都有他们各自实现的容器,受容器管理的组件会具有生命周期的特性,请问,为什么需要容器?它的好处在哪里?它会带来什么样的问题?
9.请阐述一下你对IOC(Inversion of Control)的理解。(可以以PIOC和Spring的IOC作为例子说明他们在实现上各自的特点)。
10.下面的代码在绝大部分时间内都会运行得很正常,请问在什么情况下会出现问题?问题的根源在哪里?
import java.util.LinkedList;
public class Stack{
LinkedList list=new LinkedList();
public synchronized void push(Object x)
{
synchronized(list){
list.addLast(x);
notify();
}
}
public synchronized Object pop() throws Exception{
synchronized(list){
if(list.size()<=0){
wait();
}
return list.removeLast();
}
}
} |
|