相关面试题 回答

来源:互联网 发布:java 7 jdk 32位下载 编辑:程序博客网 时间:2024/05/17 09:27
 

 1、简单描述继承,抽象与封装,多态的含义.


   抽象: 把现实中需要处理的事物通过数据的方式表达出来 ;

   封装: 把事物的数据和方法用类的方式集合起来 ;

   继承 : 封装的数据和方法通过继承来实现重用 ;

   多态 : 同一个方法名,通过方法重载 ,实现不同的逻辑 ;

 

 2、java中除了public外还有那些修饰符 ?

    private : 私有 ,只有在当前类中可以访问 ;

   protected : 保护 ,当前类、同包以及子类可以访问 ;

   friendly(default) :友好 ,当前类和同包可以访问

  abstract :抽象类 ;

   final : 最终类, 此类型的类不能被继承 ;

  static : 静态类 ;

 

3、实现多线程有哪两种方法,举例说明 

a 、继承Thread  ;

public class Test extends Thread{

 public void run(){
   System.out.println("运行继承Thread的线程.") ; 
 }
 
 public static void main(String []args){
  Test t = new Test() ;
  t.start() ;
 }
}


b、实现Runnable接口
public class Test implements Runnable{

  public void run(){
 System.out.println("运行实现Runnable接口的线程.") ;
  }
 
  public static void main(String []args){
 Test t = new Test() ;
 
 Thread thread = new Thread(t) ;
 thread.start() ;
  }
}

4、java.io.Reader 和java.io.InputStream 的区别

 

    java.io.Reader 用于读入16位字符也就是Unicode编码的字符

    java.io.InputStream 用于读入ASCII字符 和二进制数据 ;

 

5、静态变量的作用

    a、全局使用 b、调用时,类不需要实例化直接通过类名调用 ; c、共享,所有该类的实例对象共用这个变量 ;

 

6、const,Volatile,synchrnize 什么情况下使用?如何声明一个常量

 被   const修饰的东西都受到强制保护 ,作用和final差不多,java中作为保留字 和goto一样 ;

 Volatile的目的是让变量的操作保证为原子操作 ,主要在多线程中使用  ;

 Synchronized :多线程中使用,主要是线程同步,可以同步方法 ,可以同步块 ;

 

声明一个常量:

public static final int MAX = 100 ;

public static final String S_INFO = "Hello World" ;

7、Jsp中内部对象有那些?至少写出4种

 

  request   :客户端请求 javax.servlet.HttpServletRequest

  response :网页传回客户端的响应 javax.servlet.HttpServletResponse

  application :servlet正在执行的内容 javax.servlet.ServletContext

  session :与请求相关的会话 javax.servlet.HttpSession

  pageContext :网页的属性在这里管理 javax.servlet.jsp.PageContext

 

  out :用来传输相应的输出流 javax.servlet.jsp.JspWriter

  page :JSP网页本身 javax.servlet.jsp.HttpJspPage

  config   :servlet的架构对象  javax.servlet.ServletConfig

  exception  :针对错误网页,未捕捉的例外 java.lang.Throwable 

8、Servlet生命周期怎样的?doGet方法和doPost方法的区别.

Servlet被服务器实例化后 ,容器运行其init()方法,请求到达时运行其service()方法,service()方法自动派遣与请求对应的doXXX方法(doGet,doPost等) ,当服务器决定将实例销毁时调用其destroy()方法;
doGet方法和doPost方法的区别:

doGet可以通过URL传递参数,而doPost不能;

URL刷新时doGet不重复提交原来提交的数据,doPost会再重新提交 ;

提交数据的数量不一样,doGet最多只能在URL后跟255个字符,而doPost不限制 ;

服务器接收方式不同 :随机接收doGet方法的数据, 而doPost,先接收数据信息的长度,再接收数据;

             

9、J2EE构架有哪四层?

数据层 、中间层、表示层、实体层

 

10、  什么是MVC设计模式.简述优点和缺点

应用程序的输入 、处理和输出分开,使应用程序分为3个核心部件:模型、视图、控制器,他们各自处理自己的任务 ;

优点: 1、模型 、视图和控制器分离,实现低耦合  2、模型和控制器的可重用 3、开发周期 和成本降低 4、因为MVC分离,可维护性提高 5、可快速部署

缺点: 1、没有明确的定义 2、不适合小、中等规模的应用程序 ;

 

 

11、设计1个servlet读出客户端上载的文档,继承自哪个类?支持Post/Get提交方式要实现哪些方式?简述怎么样读出
上载文档。

 

   继承 HttpServlet 类 ,

支持Post/Get提交方式要实现:

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{

//..... 

}

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{

      doPost(request, response) ;
}