京东研发类面试题-2012年

面试问答题 

1.       JSP的内置对象及方法。

2.       说出Servlet的生命周期。

3.       说出ArrayListVectorLinkedList的存储性能和特性。

4.       请说出你所知道的线程同步的方法。

编程题

5.       写一个Singleton出来。

参考答案:

1、答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,header, session数据的有用的方法;

response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(cookies,头信息等)

out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果;

pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法;

session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息;

applicaton表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息;

config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数;

page表示从该页面产生的一个servlet实例。

2、答:Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGetdoPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

3、答:ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

4、答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常;

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级;

     Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

编程题

5、答:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

例如,定义一个类,它的构造函数为private的,它有一个staticprivate的该类变量,在类初始化时实例话,通过一个publicgetInstance方法获取对它的引用,继而调用其中的方法。

public
  class Singleton {
  private
  Singleton(){}
  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用
  private static Singleton instance = new Singleton();
  //这里提供了一个供外部访问本class的静态方法,可以直接访问
  public static Singleton getInstance() {
  return instance;
  }
}

个人资料
游弋的蔷薇
等级:7
文章:27篇
访问:3.8w
排名: 10
上一篇: 美团算法工程师笔试题-2016年
下一篇:京东研发类面试题-2013年
猜你感兴趣的圈子:
京东笔试面试圈
标签: servlet、singleton、javax、唤醒、实例、面试题
隐藏