Java 面试宝典
一. Java 基础部分..................................................................................................................... 7
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7
2、Java 有没有 goto? ....................................................................................................... 8
3、说说&和&&的区别。 ............................................................................................... 8
4、在 JAVA 中如何跳出当前的多重嵌套循环? .......................................................... 8
5、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上? .. 9
6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? ....................... 9
7、char 型变量中能不能存贮一个中文汉字?为什么? ................................................ 10
8、用最有效率的方法算出 2 乘以 8 等於几? ............................................................. 10
9、请设计一个一百亿的计算器 ................................................................................... 10
10、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
......................................................................................................................................... 11
11、"=="和 equals 方法究竟有什么区别? ................................................................. 12
12、静态变量和实例变量的区别? ............................................................................. 12
13、是否可以从一个 static 方法内部发出对非 static 方法的调用? ........................ 13
14、Integer 与 int 的区别 .............................................................................................. 13
15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? ................................... 14
16、下面的代码有什么不妥之处? ............................................................................... 14
17、请说出作用域 public,private,protected,以及不写时的区别 ........................ 14
18、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?
......................................................................................................................................... 14
19、构造器 Constructor 是否可被 override? ................................................................ 15
20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继
承具体类(concrete class)? 抽象类中是否可以有静态的 main 方法? ...................... 16
21、写 clone()方法时,通常都有一行代码,是什么? ............................................. 16
22、面向对象的特征有哪些方面 ................................................................................. 16
23、java 中实现多态的机制是什么? ......................................................................... 17
24、abstract class 和 interface 有什么区别? ................................................................. 18
25、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是
synchronized? .................................................................................................................. 19
26、什么是内部类?Static Nested Class 和 Inner Class 的不同。 ........................... 19
27、内部类可以引用它的包含类的成员吗?有没有什么限制? ............................. 21
28、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可
以 implements(实现)interface(接口)? ............................................................................ 22
29、super.getClass()方法调用 .......................................................................... 22
30、String 是最基本的数据类型吗? ............................................................................ 22
31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String 对象中的
内容到底变了没有? ..................................................................................................... 23
32、是否可以继承 String 类? ....................................................................................... 24
33、String s = new String("xyz");创建了几个 String Object? 二者之间有什么区别?
......................................................................................................................................... 24
34、String 和 StringBuffer 的区别 ............................................................................... 24
35、如何把一段逗号分割的字符串转换成一个数组? ............................................... 25
36、数组有没有 length()这个方法? String 有没有 length()这个方法? .................... 25
37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; .................. 25
38、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不
会被执行,什么时候被执行,在 return 前还是后? .................................................... 25
39、下面的程序代码输出的结果是多少? ................................................................. 26
40、final, finally, finalize 的区别。 .............................................................................. 28
41、运行时异常与一般异常有何异同? ..................................................................... 28
42、error 和 exception 有什么区别? ............................................................................. 28
43、Java 中的异常处理机制的简单原理和应用。 ..................................................... 29
44、请写出你最常见到的 5 个 runtime exception。 ................................................... 29
45、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代表
什么意义?在 try 块中可以抛出异常吗? .................................................................. 30
46、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和
suspend()方法为何不推荐使用? ................................................................................. 30
47、sleep() 和 wait() 有什么区别? ............................................................................. 31
48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ................. 33
49. 下面两个方法同步吗?(自己发明) .................................................................. 34
50、多线程有几种实现方法?同步有几种实现方法? ................................................. 34
51、启动一个线程是用 run()还是 start()? . .................................................................. 34
52、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此
对象的其它方法? ........................................................................................................... 34
53、线程的基本概念、线程的基本状态以及状态之间的关系 ................................. 35
54、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ? ........................ 35
55、设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。
写出程序。 ..................................................................................................................... 37
56、子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次,接着
再回到主线程又循环 100,如此循环 50 次,请写出程序。 .................................... 39
57、介绍 Collection 框架的结构 .................................................................................. 44
58、Collection 框架中实现比较要实现什么接口 ....................................................... 44
59、ArrayList 和 Vector 的区别 .................................................................................... 45
60、HashMap 和 Hashtable 的区别 .............................................................................. 45
61、List 和 Map 区别? ............................................................................................... 46
62、List, Set, Map 是否继承自 Collection 接口? ......................................................... 46
63、List、Map、Set 三个接口,存取元素时,各有什么特点? ............................. 46
64、说出 ArrayList,Vector, LinkedList 的存储性能和特性 ......................................... 47
65、去掉一个 Vector 集合中重复的元素 .................................................................... 47
66、Collection 和 Collections 的区别。 ..................................................................... 48
67、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是
equals()? 它们有何区别? .............................................................................................. 48
68、你所知道的集合类都有哪些?主要方法? ......................................................... 48
69、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不
对? ................................................................................................................................... 49
70、TreeSet 里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用
的是父类的 compareTo 方法,还是使用的子类的 compareTo 方法,还是抛异常!
......................................................................................................................................... 49
71、说出一些常用的类,包,接口,请各举 5 个 ..................................................... 50
72、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请
说出他们分别是哪些类? ............................................................................................. 50
73、字节流与字符流的区别 ......................................................................................... 51
74、什么是 java 序列化,如何实现 java 序列化?或者请解释 Serializable 接口的作
用。 ................................................................................................................................. 52
75、描述一下 JVM 加载 class 文件的原理机制? ....................................................... 53
76、heap 和 stack 有什么区别。 .................................................................................. 53
77、GC 是什么? 为什么要有 GC? .............................................................................. 53
78、垃圾回收的优点和原理。并考虑 2 种回收机制。 ............................................. 53
79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法
主动通知虚拟机进行垃圾回收? ................................................................................. 53
80、什么时候用 assert。 ............................................................................................... 54
81、java 中会存在内存泄漏吗,请简单描述。 ......................................................... 54
82、能不能自己写个类,也叫 java.lang.String? ....................................................... 58
83. Java 代码查错................................................................................................................... 58
二. 算法与编程 ...................................................................................................................... 62
1、编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文
件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。 . 62
2、编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并将原
来文件的扩展名从.java 改为.jad。 .............................................................................. 63
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取
的字符串,但要保证汉字不被截取半个,如“我 ABC”,4,应该截取“我 AB”,
输入“我 ABC 汉 DEF”,6,应该输出“我 ABC”,而不是“我 ABC+汉的半个”。
......................................................................................................................................... 66
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各
个字符的个数。 ............................................................................................................. 66
5、说明生活中遇到的二叉树,用 java 实现二叉树 .................................................. 67
6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次
数,并按重复次数排序: ............................................................................................. 72
7、写一个 Singleton 出来。 ......................................................................................... 76
8、递归算法题 1 ............................................................................................................ 78
9、递归算法题 2 ............................................................................................................ 79
10、排序都有哪几种方法?请列举。用 JAVA 实现一个快速排序。 ...................... 80
11、有数组 a[n],用 java 代码将数组元素顺序颠倒 ................................................. 81
12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千
零一拾一元整)输出。 ................................................................................................. 82
三. html&JavaScript;&ajax; 部分 ............................................................................................. 83
1. 判断第二个日期比第一个日期大 ............................................................................ 83
2. 用 table 显示 n 条记录,每 3 行换一次颜色,即 1,2,3 用红色字体,4,5,6
用绿色字体,7,8,9 用红颜色字体。 ...................................................................... 84
3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提
示用户并终止提交? ....................................................................................................... 85
4、请写出用于校验 HTML 文本框中输入的内容全部为数字的 javascript 代码 .... 85
5、说说你用过那些 ajax 技术和框架,说说它们的区别 .......................................... 86
四. Java web 部分 ................................................................................................................... 86
1、Tomcat 的优化经验 .................................................................................................. 86
2、HTTP 请求的 GET 与 POST 方式的区别 .............................................................. 86
3、解释一下什么是 servlet; .......................................................................................... 86
4、说一说 Servlet 的生命周期? .................................................................................... 87
5、Servlet 的基本架构 .................................................................................................. 87
6、SERVLET API 中 forward() 与 redirect()的区别? ............................................... 87
7、什么情况下调用 doGet()和 doPost()? ................................................................... 87
8、Request 对象的主要方法: ..................................................................................... 88
9、forward 和 redirect 的区别 ...................................................................................... 88
10、request.getAttribute() 和 request.getParameter() 有何区别?............................... 89
11. jsp 有哪些内置对象?作用分别是什么? 分别有什么方法? ................................ 89
12. jsp 有哪些动作?作用分别是什么? .......................................................................... 89
13、JSP 的常用指令 ...................................................................................................... 90
14. JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? ............................................. 90
15、两种跳转方式分别是什么?有什么区别? ............................................................. 90
16、页面间对象传递的方法 ......................................................................................... 90
17、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? ................. 91
18、MVC 的各个部分都有那些技术来实现?如何实现? ........................................... 91
19、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,
如何输出一个某种编码的字符串? ............................................................................. 91
20.现在输入 n 个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就
在另一页面显示按什么排序,结果为,提供 reset .................................................... 92
五. 数据库部分 ...................................................................................................................... 92
1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 ....... 92
2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排
序..................................................................................................................................... 92
3、存储过程与触发器必须讲,经常被面试到? ......................................................... 93
4、数据库三范式是什么? ............................................................................................. 95
5、说出一些数据库优化方面的经验? ......................................................................... 96
6、union 和 union all 有什么不同? ............................................................................... 97
7.分页语句 ...................................................................................................................... 98
8.用一条 SQL 语句 查询出每门课都大于 80 分的学生姓名................................... 101
9.所有部门之间的比赛组合 ........................................................................................ 101
10.每个月份的发生额都比 101 科目多的科目 .......................................................... 102
11.统计每年每月的信息 .............................................................................................. 103
12.显示文章标题,发帖人、最后回复时间 .............................................................. 104
13.删除除了 id 号不同,其他都相同的学生冗余信息 ................................................ 105
14.航空网的几个航班查询题: .................................................................................. 105
15.查出比经理薪水还高的员工信息: ...................................................................... 106
16、求出小于 45 岁的各个老师所带的大于 12 岁的学生人数 ............................... 107
17.求出发帖最多的人: .............................................................................................. 108
18、一个用户表中有一个积分字段,假如数据库中有 100 多万个用户,若要在每年
第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? ......................... 108
19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。
....................................................................................................................................... 109
20. xxx 公司的 sql 面试 ............................................................................................... 109
21、注册 Jdbc 驱动程序的三种方式.......................................................................... 110
22、用 JDBC 如何调用存储过程 ............................................................................... 110
23、JDBC 中的 PreparedStatement 相比 Statement 的好处 ...................................... 111
24. 写一个用 jdbc 连接并访问 oracle 数据的程序代码 ........................................... 112
25、Class.forName 的作用?为什么要用? .................................................................. 112
26、大数据量下的分页解决方法。 ........................................................................... 112
27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). ............. 113
28、这段代码有什么不足之处? ................................................................................. 113
29、说出数据连接池的工作机制是什么? ................................................................. 114
30、为什么要用 ORM? 和 JDBC 有何不一样? .................................................... 114
六. XML 部分 ....................................................................................................................... 114
1、xml 有哪些解析技术?区别是什么? ...................................................................... 114
2、你在项目中用到了 xml 技术的哪些方面?如何实现的? ..................................... 115
3、用 jdom 解析 xml 文件时如何解决中文问题?如何解析? ................................... 115
4、编程用 JAVA 解析 XML 的方式. .......................................................................... 116
5、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种
方式? ........................................................................................................................... 118
七. 流行的框架与新技术 .................................................................................................... 118
1、谈谈你对 Struts 的理解。...................................................................................... 118
2、谈谈你对 Hibernate 的理解。 ............................................................................... 119
3、AOP 的作用。 ........................................................................................................ 119
4、你对 Spring 的理解。 ............................................................................................ 119
5、谈谈 Struts 中的 Action servlet。 .......................................................................... 121
6、Struts 优缺点 优点: 1. 实现 MVC 模式,结构清晰,使开发者只关注业务逻
辑的实现. ...................................................................................................................... 121
7、STRUTS 的应用(如 STRUTS 架构) ..................................................................... 122
8、说说 struts1 与 struts2 的区别。............................................................................ 122
9、hibernate 中的 update()和 saveOrUpdate()的区别,session 的 load()和 get()的区别。
....................................................................................................................................... 123
10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件.
....................................................................................................................................... 123
11、iBatis 与 Hibernate 有什么不同? ......................................................................... 123
12、写 Hibernate 的一对多和多对一双向关联的 orm 配置? ................................... 123
9、hibernate 的 inverse 属性的作用? .......................................................................... 123
13、在 DAO 中如何体现 DAO 设计模式? ................................................................ 124
14、spring+Hibernate 中委托方案怎么配置? ............................................................ 124
15、spring+Hibernate 中委托方案怎么配置? ............................................................ 124
16. hibernate 进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没
有一个实体类与之对应如何解决; ........................................................................... 124
17.介绍一下 Hibernate 的二级缓存 ............................................................................ 124
18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message 属性, 字符串类型,
注入值为 "Hello" 的 XML 配置文件该怎么写? .................................................... 126
19、Jdo 是什么? .......................................................................................................... 126
20、什么是 spring 的 IOC AOP ............................................................................... 127
21、STRUTS 的工作流程! ....................................................................................... 127
22、spring 与 EJB 的区别!! .................................................................................... 127
八. 软件工程与设计模式 .................................................................................................... 127
1、UML 方面 ............................................................................................................... 127
2、j2ee 常用的设计模式?说明工厂模式。 ............................................................. 127
3、开发中都用到了那些设计模式?用在什么场合? ................................................. 128
九. j2ee 部分 ......................................................................................................................... 128
1、BS 与 CS 的联系与区别。 .................................................................................... 128
2、应用服务器与 WEB SERVER 的区别? .............................................................. 129
3、应用服务器有那些? ............................................................................................. 129
4、J2EE 是什么? ....................................................................................................... 129
5、J2EE 是技术还是平台还是框架? 什么是 J2EE ................................................ 129
6、请对以下在 J2EE 中常用的名词进行解释(或简单描述) .................................... 130
7、如何给 weblogic 指定大小的内存? ...................................................................... 130
8、如何设定的 weblogic 的热启动模式(开发模式)与产品发布模式? .................... 130
9、如何启动时不需输入用户名与密码? ................................................................... 131
10、在 weblogic 管理制台中对一个应用域(或者说是一个网站,Domain)进行 jms 及
ejb 或连接池等相关信息进行配置后,实际保存在什么文件中? .............................. 131
11、说说 weblogic 中一个 Domain 的缺省目录结构? 比如要将一个简单的
helloWorld.jsp 放 入何 目录 下 , 然的 在 浏览 器上就 可 打入 http:// 主 机 : 端 口 号
//helloword.jsp 就可以看到运行结果了? 又比如这其中用到了一个自己写的
javaBean 该如何办? ..................................................................................................... 131
12、在 weblogic 中发布 ejb 需涉及到哪些配置文件 ............................................... 131
13、如何在 weblogic 中进行 ssl 配置与客户端的认证配置或说说 j2ee(标准)进行 ssl
的配置? ......................................................................................................................... 131
14、如何查看在 weblogic 中已经发布的 EJB? ......................................................... 132
十. EBJ 部分 ......................................................................................................................... 132
1、EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,
StatefulBean 和 StatelessBean 的区别。 ..................................................................... 132
2、简要讲一下 EJB 的 7 个 Transaction Level? .................................................... 132
3、EJB 与 JAVA BEAN 的区别? .............................................................................. 132
4、EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
....................................................................................................................................... 133
5、EJB 容器提供的服务 ............................................................................................. 133
6、EJB 的激活机制 ..................................................................................................... 133
7、EJB 的几种类型 ..................................................................................................... 133
8、客服端调用 EJB 对象的几个基本步骤 ................................................................ 134
十一. webservice 部分 .......................................................................................................... 134
1、WEB SERVICE 名词解释。JSWDL 开发包的介绍。JAXP、JAXM 的解释。SOAP、
UDDI,WSDL 解释。 ................................................................................................... 134
2、CORBA 是什么?用途是什么? .............................................................................. 134
3. Linux ................................................................................................................................. 135
4、LINUX 下线程,GDI 类的解释。 ....................................................................... 135
5. 问得稀里糊涂的题 .......................................................................................................... 135
6、四种会话跟踪技术 ................................................................................................. 135
7、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 ............................................... 135
十二. 其他 ............................................................................................................................ 135
1、请用英文简单介绍一下自己. ................................................................................ 135
2、请把 http://tomcat.apache.org/ 首页的这一段话用中文翻译一下? .................... 136
3、美资软件公司 JAVA 工程师电话面试题目 .......................................................... 136