java面试题(经典面试克星)

更新时间:2023-10-18 11:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

面试题

JAVA面试题

1. Servlet执行时一般实现哪几个方法?(☆☆☆☆)

public void init(ServletConfig config)

public void service(ServletRequest request,ServletResponse response) public ServletConfig getServletConfig() public String getServletInfo() public void destroy()

(说明:init ()方法在servlet的生命周期中仅执行一次,在servlet引擎创建servlet对象后执行。Servlet在调用init方法时,会传递一个包含servlet的配置和运行环境信息的ServletConfig对象。如果初始化代码中要使用到ServletConfig对象,则初始化代码就只能在Servlet的init方法中编写,而不能在构造方法中编写。覆盖init()方法时,应调用super.init()以确保仍然执行这些任务。

service ()方法是servlet的核心,用于响应对Servlet的访问请求。对于HttpServlet,每当客户请求一个 HttpServlet对象,该对象的service()方法就要被调用,HttpServlet缺省的service()方法的服务功能就是调用与 HTTP请求的方法相应的do功能,doPost()和doGet(),所以对于HttpServlet,一般都是重写doPost()和doGet() 方法。

destroy()方法在servlet的生命周期中也仅执行一次,即在服务器停止卸载servlet之前被调用,把servlet作为 服务器进程的一部分关闭。缺省的destroy()方法通常是符合要求的,但也可以override,来完成与init方法相反的功能。比如在卸载servlet时将统计数字保存在文件 中,或是关闭数据库连接或IO流。

getServletConfig()方法返回一个servletConfig对象,该对象用来返回初始化参数和servletContext。servletContext接口提供有关servlet的环境信息。

getServletInfo()方法提供有关servlet的描述信息,如作者,版本,版权。可以对它进行覆盖。)

2. Java Servlet API中forward() 与sendRedirect()的区别?(☆☆☆☆☆)

电话:086-0510-81026001 传真:086-0510-81026010 邮件:UNISTRAINING@UNISSOFT.COM 第1页/共13页

面试题

答案1:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

答案2:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的相应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求对应地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

3. 说出Servlet的生命周期,并说出Servlet和CGI的区别。(☆☆☆☆☆)

Servlet有良好的生存期定义,包括加载和实例化、初始化、处理请求以及服务结束。

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

Servlet与CGI的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

4. String和StringBuffer的区别(☆☆☆☆☆)

String 是不可以变的字符串,StringBuffer 是可变的字符串;

对StringBuffer进行操作,是在原来的对象之上进行改变.,而对String进行操作,是创建新的对象。StringBuffer的处理速度明显优于String,值传递更符合Java原则,没有String特殊性,不能像String那样使用直接赋值法,而必须采用标准的实例化法才行,不能使用加号“+”去联结字符串,而必须使用一个名叫

电话:086-0510-81026001 传真:086-0510-81026010 邮件:UNISTRAINING@UNISSOFT.COM 第2页/共13页

面试题

append的方法将指定内容追加到序列中。

5. final,finally,finalize的区别(☆☆☆☆)

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

6. 静态变量和实例变量的区别(☆☆☆☆)

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

7. Java语言如何进行异常处理?关键字:

throws ,throw ,try ,catch ,finally分别代表什么意义?在try块中可以抛出异常吗?(☆☆☆☆☆)

Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。

1) Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。

电话:086-0510-81026001 传真:086-0510-81026010 邮件:UNISTRAINING@UNISSOFT.COM 第3页/共13页

面试题

2) 用try来指定一块预防所有\异常\的程序。

紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的\异常\的类型。

throw语句用来明确地抛出一个\异常\。

throws用来标明一个成员函数可能抛出的各种\异常\。

Finally为确保一段代码不管发生什么\异常\都被执行一段代码。

3) 可以。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,\异常\的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种\异常\进行处理,堆栈就会展开,直到遇到有处理这种\异常\的try语句。

8. 说出一些常用的类,包,接口,请各举5个(☆☆☆☆)

常用的类: BufferedReader BufferedWriter FileReader FileWirter String Integer

常用的包:java.lang java.awt java.io java.util java.sql 常用的接口:Remote List Map Document NodeList

(说明:BufferedReader类用于缓冲读取字符,将字节流封装成BufferedReader对象BufferedWriter提供字符的缓冲写出功能 FileReader 用于以字符为单位读取文本文件 FileWriter类用于将字符数据写出到文本文件中)

9. Java中的异常处理机制的简单原理和应用。(☆☆☆☆)

当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。

一种情况是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是

10. 概述MVC体系结构(☆☆☆☆)

MVC包括三类对象,model是应用对象,view是视图,controller是控制器,

电话:086-0510-81026001 传真:086-0510-81026010 邮件:UNISTRAINING@UNISSOFT.COM 第4页/共13页

面试题

它定义用户界面对用户输入的响应方式。

在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反应数据的变化。控制器控制着模型和视图之间的交互工程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型。在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。

11. Error和exception有什么区别?(☆☆☆☆)

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

12. 同步和异步有何异同,举例说明在什么情况下分别使用他们?(☆ ☆☆☆)

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

13. 你所知道的集合类都有哪些?主要方法?(☆☆☆☆)

最常用的集合类是 List和Map。

List的具体实现包括 ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。

Map 提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作\键\和\值\),其中每个键映射到一个值。

14. 多线程有几种实现方法?同步有几种实现方法? (☆☆☆☆☆)

电话:086-0510-81026001 传真:086-0510-81026010 邮件:UNISTRAINING@UNISSOFT.COM 第5页/共13页

本文来源:https://www.bwwdw.com/article/5t5f.html

Top