java常见面试题

1、面向对象的特征有哪些方面 
  
抽象:
   
继承:
   
封装:
   
多态性: 

2、String是最基本的数据类型吗?

基本数据类型包括byte、int、char、long、float、double、Boolean和short。

java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提

高效率节省空间,我们应该用StringBuffer

3、int 和 Integer 有什么区别?

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原

始数据类型,Integer是java为int提供的封装类。

4、String 和StringBuffer的区别?

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包

含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。   

5、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

6、数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。String有length()这个方法。

7、是否可以继承String类?

String类是final类故不可以继承。

8、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,在return前还是后?

会执行,在return前执行。

9、你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 
   Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

10、多线程有几种实现方法,都是什么? 
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 

11、JSP的内置对象及方法
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环境的信息 
   page表示从该页面产生的一个servlet实例

12、servlet的生命周期
web
容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet

的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束

服务,web容器调用servlet的destroy()方法。

13、页面间对象传递的方法

request,session,application,cookie等

14、一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制? 

可以,必须只有一个类名与文件名相同。

15、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

16.Java支持的数据类型有哪些?

byte

short

int

long

float

double

boolean

char

17.Java支持多继承么?

不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

18.什么是死锁(deadlock)

两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。

19.什么是表达式(Expression)

JSP表达式是Web服务器把脚本语言表达式的值转化成一个String对象,插入到返回给客户端的数据流中。表达式是在<%=和%>这两个标签之间定义的。

20.如何知道是哪一个客户端的机器正在请求你的Servlet

ServletRequest类可以找出客户端机器的IP地址或者是主机名。getRemoteAddr()方法获取客户端主机的IP地址,getRemoteHost()可以获取主机名。

21.doGet()方法和doPost()方法有什么区别?

doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。

 

doPOSTPOST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。

22.什么是Servlet

Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息。

23.什么是JDBC

JDBC是允许用户在不同数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不需要关心底层特定数据库的细节。

24.Class.forName()方法有什么作用?

这个方法用来载入跟数据库建立连接的驱动。

25.PreparedStatement比Statement有什么优势?

PreparedStatements是预编译的,因此,性能会更好。同时,不同的查询参数值,PreparedStatement可以重用。

26.throw和throws有什么区别?

throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。

27.异常处理的时候,finally代码块的重要性是什么?(译者注:作者标题的序号弄错了)

无论是否抛出异常,finally代码块总是会被执行。就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。最后要说的是,finally代码块主要用来释放资源,比如:I/O缓冲区,数据库连接。

28、ArrayList 和 LinkedList 有什么区别。

ArrayList和LinkedList都实现了List接口,有以下的不同点: 

1.ArrayList是基于索引的数据接口。它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。以此对应,LinkedList是以元素列表的形式存储的数据,每一个元素都和它的前一个后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。 

2.相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。

3.LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

29、Ajax可以做异步请求么?

可以.ajax请求默认是异步的.如果想同步 把 async设置为false就可以了默认是true

如果是jquery

$.ajax({

url: some.php,

async: false,

success : function(){

}

});

30、 一网站如果有大量的人登陆访问。那么会产生很多的session,如果你是程序员你该怎么办。

session默认保存在内存中,内存资源宝贵,session数据量大导致内存利用率高,以下方案解决session内存存储问题:

1、可以设置session超时时间,达到超时时间session自动清空

<session-config>

<session-timeout>20</session-timeout>

</session-config> 

2、将session中的数据序列化到硬盘中

3、不使用session,使用cookie(此方法存在安全性问题)

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_39212006/article/details/80215707