darling_shadow吧 关注:26贴子:1,642
  • 2回复贴,共1

JAVA基础知识,技术男,宅男的福音,宅女,腐女也不要错过.....

只看楼主收藏回复

...


1楼2012-09-11 09:04回复
    某公司Java面试题及部分解答(难度较大)
    1。请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别。(5)
    2。请问你在什么情况下会在你的JAVA代码中使用可序列化?(5)
    为什么放到HttpSession中的对象必须要是可序列化的?(5)
    3。为什么在重写了equals()方法之后也必须重写hashCode()方法?(10)
    4。sleep()和wait()有什么区别?(10)
    5。编程题:用最有效率的方法算出2乘以17等于多少?(5)
    6。JAVA是不是没有内存泄漏问题?看下面的代码片段,并指出这些代码隐藏的问题。(10)
    Object[] elements = new Object[10];
    int size;
    ...
    public Object pop() {
    if (size == 0)
    return null;
    Object o = elements[--size];
    return o;
    }
    7。请阐述一下你对JAVA多线程中“锁”的概念的理解。(10)
    8。所有的递归实现都可以用循环的方式实现,请描述一下这两种实现方式各自的优劣。
    并举例说明在什么情况下可以使用递归,而在什么情况下只能使用循环而不能使用递归?(5)
    9。请简要讲一下你对测试驱动开发(TDD)的认识。(10)
    10。请阐述一下你对“面向接口编程”的理解。(10)
    11。在J2EE中有一个“容器(Container)”的概念,不管是EJB、PICO还是Spring都有他们
    各自实现的容器,受容器管理的组件会具有有生命周期的特性,请问,为什么需要容器?
    它的好处在哪里?它会带来什么样的问题?(15)
    12。请阐述一下你对IOC(Inversion of Control)的理解。(可以以PICO和Spring的IOC作为例子说明他们在实现上各自的特点)(10)
    13。下面的代码在绝大部分时间内都运行得很正常,请问在什么情况下会出现问题?问题的根源在哪里?(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();
    }
    }
    }
    解答:
    。请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别。(5)线程安全与否
    2。请问你在什么情况下会在你的JAVA代码中使用可序列化?(5)cluster中session复制,缓存persist与reload
    为什么放到HttpSession中的对象必须要是可序列化的?(5)没必须,不过session反序列化过程会导致对象不可用.
    3。为什么在重写了equals()方法之后也必须重写hashCode()方法?(10)API规范
    4。sleep()和wait()有什么区别?(10)前者占用CPU,后者空闲CPU
    5。编程题:用最有效率的方法算出2乘以17等于多少?(5)17>>1
    6。JAVA是不是没有内存泄漏问题?看下面的代码片段,并指出这些代码隐藏的问题。(10)不是
    ...
    ...没发现内存泄漏的问题
    7。请阐述一下你对JAVA多线程中“锁”的概念的理解。(10)同步因子,在某段代码上增加同步因子,那么整个JVM内部只能最多有一个线程执行这段,其余的线程按FIFO方式等待执行.
    8。所有的递归实现都可以用循环的方式实现,请描述一下这两种实现方式各自的优劣。
    并举例说明在什么情况下可以使用递归,而在什么情况下只能使用循环而不能使用递归?(5)没发现所有的递归都可以用循环实现的,尤其是那种不知道循环重数的递归算法.递归的优点是简炼,抽象性好;循环则更直观.递归一般用于处理一级事务能转化成更简的二级事务的操作.归纳不出二级事务或者二级事务更复杂的情况不能用.
    


    6楼2012-09-11 09:08
    回复

      9。请简要讲一下你对测试驱动开发(TDD)的认识。(10)不认识
      10。请阐述一下你对“面向接口编程”的理解。(10)1,利于扩展;2,暴露更少的方法;
      11。在J2EE中有一个“容器(Container)”的概念,不管是EJB、PICO还是Spring都有他们
      各自实现的容器,受容器管理的组件会具有有生命周期的特性,请问,为什么需要容器?
      它的好处在哪里?它会带来什么样的问题?(15)组件化,框架设计...
      12。请阐述一下你对IOC(Inversion of Control)的理解。(可以以PICO和Spring的IOC作为例子说明他们在实现上各自的特点)(10)不理解
      13。下面的代码在绝大部分时间内都运行得很正常,请问在什么情况下会出现问题?问题的根源在哪里?(10)wait和notify使用目的不能达到,wait()的obj,自身不能notify().出题人对wait和notify机制不够理解.
      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();
      }
      }
      }
      你拿了多少分?
      1。请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别。(5)
      // thread-safe or unsafe, could contain null values or not
      2。请问你在什么情况下会在你的JAVA代码中使用可序列化?(5)
      为什么放到HttpSession中的对象必须要是可序列化的?(5)
      // save, communicate
      3。为什么在重写了equals()方法之后也必须重写hashCode()方法?(10)
      // implementations of dictionaries need hashCode() and equals()
      4。sleep()和wait()有什么区别?(10)
      // threads communication: wait() and notifyAll()
      5。编程题:用最有效率的方法算出2乘以17等于多少?(5)
      // 2<<4+2
      6。JAVA是不是没有内存泄漏问题?看下面的代码片段,并指出这些代码隐藏的问题。(10)
      ...
      Object[] elements = new Object[10];
      int size;
      ...
      public Object pop() {
      if (size == 0)
      return null;
      Object o = elements[--size];
      return o;
      }
      // elements[size] = null;
      7。请阐述一下你对JAVA多线程中“锁”的概念的理解。(10)
      // optimistic lock, pessimistic lock, signal, dead lock, starvation, synchronization
      8。所有的递归实现都可以用循环的方式实现,请描述一下这两种实现方式各自的优劣。
      并举例说明在什么情况下可以使用递归,而在什么情况下只能使用循环而不能使用递归?(5)
      // recursive: when you need a stack and stack memory is enough
      // non-recursive: when you need a queue
      9。请简要讲一下你对测试驱动开发(TDD)的认识。(10)
      // write unit testing code first
      10。请阐述一下你对“面向接口编程”的理解。(10)
      // adapter, listener, bridge, decorator, proxy... patterns
      11。在J2EE中有一个“容器(Container)”的概念,不管是EJB、PICO还是Spring都有他们
      各自实现的容器,受容器管理的组件会具有有生命周期的特性,请问,为什么需要容器?
      它的好处在哪里?它会带来什么样的问题?(15)
      // encapsulation
      12。请阐述一下你对IOC(Inversion of Control)的理解。(可以以PICO和Spring的IOC作为例子说明他们在实现上各自的特点)(10)
      // reduce classes' dependencies
      13。下面的代码在绝大部分时间内都运行得很正常,请问在什么情况下会出现问题?问题的根源在哪里?(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();
      }
      }
      }
      // dead lock, synchronized on both 'list' and 'this'
      47、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
      


      7楼2012-09-11 09:08
      回复