发布时间 : 星期三 文章常见面试题及答案更新完毕开始阅读83cf2af7ba0d4a7302763a25
常见面试题
1. 谈谈final, finally, finalize的区别。
final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 。
finally:再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 只有调用system.exit()方法,finally才不会被执行,否则finally块总是被执行。
finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。
2.Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 Collection是个java.util下的接口,它是各种集合结构的父接口。
char型变量中能不能存贮一个中文汉字?为什么?
是能够定义成为一个中文,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
3. HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。 HashMap允许null 键和null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。 HashTable是线程同步的,HashMap则不是。
4. error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。程序员可以对其捕获处理。
5. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
6. 作用域public,private,protected,以及不写时的区别
区别如下:
作用域 当前类 同一package 子孙类 其他package public √
√ √ √ ×
√ √ × ×
√ × × ×
protected √ default √ private √
7. GC是什么? 为什么要有GC? 。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc()
Runtime.getRuntime().gc()
8. String s = new String(\创建了几个String Object?
两个对象,一个是字符串池中的“xyx”,一个是new在堆中的字符串对象。
9. String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
10. 说一说servlet生命周期
当客户第一次发送请求过来的时候,servlet容器会创建出一个servlet实例,并以单例模式运行,创建完实例后,容器会调用其init方法做一些初始化操作,并只调用一次,当请求到达后,容器会以多线程的方式调用service方法处理客户端请求,但一般会以doGet和doPost来代替,当服务器决定将实例销毁的时候调用其destroy方法。
11. 说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
12. &和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)或短路与。
13. 应用服务器有那些?
BEA WebLogic Server,IBM WebSphere,jBoss,Tomcat
14.数据库连接池的工作机制是什么?
连接池最基本的思想就是预先建立一些连接放置于内存对象中以备使用,当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率
15. 数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。String有length()这个方法。
16. 构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
17. JSP的内置对象及方法。
Request,response,pageContext,out,session,application,exception,config,page
18. 一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。必须只有一个类名与文件名相同。
19. MVC的各个部分都有那些技术来实现?如何实现?
MVC 是Model-View-Controller的简写。\代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), \是应用的表示面(由JSP页面产生),\是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
20. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被\屏蔽\了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
21. 抽象类和接口的区别
含有abstract修饰符的class 即为抽象类,abstract类不能创建实例对象,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不必是抽象的,抽象来中定义抽象方法必须放在具体子类中实现,所以,不能有抽象的构造方法或抽象的静态方法,如果子类没有实现抽象父类中的所有方法,那么,子类也必须定义为抽象类。
接口(interface)可以说成是抽象类的特例。接口中的所有方法都必须是抽象的,接口中的方法定义默认为public abstract 。接口中的变量是全局常量,即public static final修饰的。
1,抽象类里可以有构造方法,而接口内不能有构造方法。
2,抽象类中可以有普通成员变量,而接口中不能有普通成员变量。
3,抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。
4,抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5,抽象类中可以包含静态方法,接口内不能包含静态方法。
6,抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static类型,并且默认为public static类型。
7,一个类可以实现多个接口,但只能继承一个抽象类。
22. 转发和重定向的区别
(1)转发只能将请求转发给同一个WEB应用中的组件;而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
(2)重定向后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而转发后,浏览器地址栏保持初始的URL地址不变。
(3)转发的所在资源与目标资源之间共享相同的request 对象和response 对象,它们属于同一个访问请求和响应过程;而重定向所在资源与目标资源使用各自的request 对象和response 对象,它们属于两个独立的访问请求和响应过程。
23. jsp中的静态包含和动态包含的区别?
<%@include file=”动态或静态页面”>静态包含:include编译指令是jsp程序的转换时期就将file属性所指定的程序内容嵌入进来了,然后再编译执行,只生成一个class文件,并且静态包含不能带参数。包含页面与被包含页面共享同一个request。
24. JAVA语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? throws:表示定义抛出一个异常类。 Throw:表示将抛出一个异常的实例。 Try:表示在执行try块内的代码时会抛出异常。 Catch:表示捕获一个异常类 Finally:表示定义在此块中的语句一定会被执行,执行此语块后使资源回复到初始状态。 25. 给我一个你最常见到的runtime exception。 IndexOutOfBoundsException ClassCastException ArithmeticException NullPointerException 26. jsp有哪些动作?作用分别是什么? JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:用于在浏览器中播放或显示一个对象(典型的就是applet和Bean) 27. 一段Jdbc连Oracle的程序,并实现数据查询. Connection c=null; Statement conn; ResultSet rs=null; String dbUrl=\:@127.0.0.1:1521:orcl\String theUser=\min\String thePw=\; Class.forName(\ewInstance(); c = DriverManager.getConnection(dbUrl,theUser,thePw); conn=c.createStatement(); rs=conn.executeQuery(sql); 28.jsp中的四种会话跟踪技术。 Cookie Session URL重写 隐藏表单域