标题：Java程序员面试指南
图书信息
作　者：张昆 等编著  
出 版 社：电子工业出版社
出版时间：2009-7-1
页　数：468页
开　本：16开
I S B N ：9787121091865
定价：55.00元（含DVD光盘1张）
内 容 简 介
该书涵盖了Java面试中会经常出现的问题，并指导读者快速、巧妙地回答问题。全书共分18章，内容涵盖了面试前必须要知道的几件事、Java程序基础、Java语言中的符号、数据类型及类型转换、数组与字符串、流程控制、异常处理及内存管理、输入/输出流、面向对象、Java的多线程、包和访问控制、集合、数据库、J2EE技术、XML/UML技术、Servlet/JSP技术以及常见的上机编程和思维训练等有趣的试题。
该书非常适合刚走出校门，初次进入IT领域的毕业生使用；同时也适合Java初中级程序员使用。
前 言
从企业面试的角度来梳理Java程序员的技术功底
以技术经理的眼光来审视对Java编程知识的掌握
随着Java框架的逐渐成熟，其功能越来越强大，使用越来越简便，其使用范围越来越广，使用人数也越来越多。Java在带来方便的同时，无形中也带了不便，作为软件开发的王牌语言，各企业对Java程序员的要求也不断的提升，所以，求职面试成了Java程序员们最头疼又不得不面对的现实。为了给广大Java程序员面试提供最贴心的指导，作者搜集整理了大量Java程序员面试的资料，并结合自己主持面试的经历，写作了本书，希望能对广大Java程序员的面试具有一定的指导意义。
求职者在面试中的常见问题
同样作为软件开发出身的我，身边有朋友，也有同事。在和他们交谈的过程中，我发现现在的面试难度要比以往难得多，自以为准备得很充分，胸有成竹地认为可以顺利通过，但事实并非如同他们预想的那样，面试常见的问题如下：
（1）面试过程中不是题目颇深就是难度颇大，不经过缜密细致的思考是不会得出正确答案的。例如：，String s = new String("xyz");创建了几个String Object呢？这个问题还真得好好想想，不要轻易地下结论。
（2）陷阱是又多又狠，隐藏得很深，没有一双慧眼还真难辨虚实。例如：，if(-0.0 == 0.0)是相等还是不等？
（3）面试的花样也越来越多，在比较传统的笔试→面试的基础上，又增加了相当折磨人的“魔鬼测试”→“压力测试”，而且这种测试相当火，很多招聘企业都在使用。例如：，“你都将自身排到最终一名了，你还会被录用吗？”如果你是面试者该怎样回答呢？
（4）增加了综合测试及外语能力测试。现在商品都实行了面向全球化，自然IT领域也有面向全球的发展驱趋势，同时，随着越来越多的外藉籍人员的加入，很多企业不得不对外语提高重视力度。面对这样那样的问题，有些经验丰富的高级程序员都应接不暇，更何况是刚走出校园的白面小生。例如：，考官会让面试者用英文进行自我介绍，这是外语能力测试最基础的测试内容。
该书的特点
针对上面的种种情况，笔者凭借在IT界多年的工作经验和多个大型实际项目开发的优势，由原来的一个普通职员晋升为一个去考别人的主考官，主要负责公司技术人员的面试工作，通过一年多的面试经验和与公司内资历比较深厚的HR经理的多次交流，总结了一些面试中常见的问题，对考官提出的灾难性问题给出了巧妙的应答。从面试题目内容的角度总结和归纳出知识点，帮助读者快速准备Java程序员的面试，提高晋级的机会。
需要声明的是，本书不是一本教程，不会细致到每一个操作步骤的说明、每一个细节的详细讲解、每一个开发工具的安装过程。本书主要是为有了一定Java基础却无法应对面试的人而服务的。通过一些建议和方法帮助他们尽快就职。
建议读者在熟练掌握相关技术内容后再阅读本书，也不要认为“宝典”是一本万能书，一个合格的程序员，不是混过面试就能万事大吉的，具备扎扎实实的编程技术才是最重要的。本书具有如下特点：
• 针对性强，用来帮助读者应对Java程序员面试。主要包括职业规划的设定、中英文简历的制作、简历投递的注意事项、如何加大简历的浏览数量、面试的相关流程和应对突发事件的技巧等。
• 考前回顾，在进入每章的试题分析之前，都会有相应的知识点回顾，可以帮助读者理解该章的考试重点。
• 选取各大公司的经典试题，每个试题都会有详细的试题分析，可以帮助读者加深理解。
• 层次分明，会对重点内容进行细致的讲解和描述，对次要的内容讲解篇幅略短，有的甚至会一带而过，可以帮助读者分清主次，了解应该在哪些地方多下功夫下工夫，不会出现盲目不知所措的局面。
• 涉及内容广泛，涉及技术新，例如在其他相关面试书籍中从未出现过的EJB3.0规范等内容。
• 操作性强，本书含有大量经典的、出现频率颇高的上机测试题，可以帮助读者加深理解。
该书的主要内容
第一篇（第1章）介绍了求职面试前都需要做好哪些准备工作：如何做好自己的职业规划；掌握面试的流程，在以后的面试中不会感到陌生，消除恐惧；怎样制作一个令人满意、访问量高的简历；去参加面试的时候着装上都需要注意什么；了解面试官会经常问的问题，以备不时之需；对于多个offer（录用通知）需要选择时，是选择大公司还是小公司？
第二篇（第2章～第13章）介绍了Java程序员涉及的基础知识，内容包括Java语言基础、异常的处理、I/O控制流、面向对象编程、线程、集合以及数据库技术等基本知识点。
第三篇（第14章～第16章）专门介绍了Java开发的高端Web开发的相关题目，内容包括J2EE技术、XML/UML以及Servlet/JSP技术。
第四篇（第17章～第18章）专门介绍了基本的上机编程题目，涉及常见的算法、字符串操作和常见的排序原理相关题目。同时介绍了常见的对数据库操作的SQL语句。另外还介绍了目前经常出现的思维拓展题目，首先介绍了思维拓展编程题目，该题目的特点是需要自己建立模型，然后编程实现；最后介绍了一些智力测试题，帮助读者熟悉出题思路和解答技巧。
适合阅读该书的读者
该书具有涉及面广、分析透澈彻、实例精彩的特点，力求以全面的知识性及丰富的实例来指导读者突破面试难关。本书可以作为初中级Java程序员以及想了解Java或者相关技术的人员的参考书籍，特别适合想从事Java程序开发的毕业生学习使用。
该书作者
该书主要由张昆编写，其他参与编写的人员有张增强、方振宇、陈冠佐、傅奎、陈勤、梁洋洋、毕梦飞、陈庆、柴相花、陈非凡、陈华、陈嵩、承卓、陈先在、樊丽、房健、陈科、公芳亮、郭刚、陈松、季国飞。
编著者
目 录
第一篇 求职你准备好了吗
第1章 面试前必须知道的几件事 18
一次次的求职面试考试，就像一场场无形的战役一样，决定着不同的人生和不同人的命运。如果想在战役中取得胜利，就必须做到知已知彼，才能百战百胜。想要在众多对手中脱颖而出，靠的不再是健壮的体魄，而是灵敏的思维和充分的准备，在战斗即将打响之际，你准备好了吗？通过学习本书，你将准备充分，信心十足，摩拳擦掌等待战场上大显身手的那一刻。
1.1 做好自己的职业规划 18
1.1.1 走好职业生涯第一步 18
1.1.2 确定符合自己的人生目标 19
1.1.3 紧跟社会发展的步伐 19
1.1.4 为职业生涯画上圆满的句号 20
1.2 面试的流程 20
1.2.1 填写求职申请表 20
1.2.2 笔试 20
1.2.3 面试 21
1.2.4 压力测试 23
1.2.5 外语能力测试 24
1.2.6 综合测试 24
1.3 一个漂亮的简历 25
1.3.1 中文简历的制作 25
1.3.2 英文简历的制作 26
1.3.3 如何用E-mail投递简历 27
1.3.4 简历浏览量低的原因 28
1.3.5 华丽的辞藻未必是美的 29
1.3.6 简历被筛选的秘密 30
1.4 着装要注意的问题 30
1.4.1 面试着装（男生篇） 30
1.4.2 面试着装（女生篇） 31
1.5 面试官经常问到的几个问题 31
问题1 谈谈你的缺点 31
问题2 你为什么选择我们公司 32
问题3 对这项工作，你有哪些可预见的困难 32
问题4 如果我录用你，你将怎样开展工作 32
问题5 与上级意见不一时，你将怎么办 33
问题6 你能为我们做什么 33
问题7 你是应届毕业生，缺乏经验，如何能胜任这项工作 33
问题8 你希望与什么样的上级共事 34
问题9 你在前一家公司离职的原因是什么 34
问题10 你以前的上级对你的评价如何 35
问题11 如果你的工作出现失误，给本公司造成经济损失，你认为该怎么办 35
问题12 怎样理解团队？请举例并说明启示 36
1.6 大公司VS小公司 36
1.6.1 大公司VS小公司的区别 36
1.6.2 大公司的利和弊 37
1.6.3 小公司的利和弊 37
第二篇 Java程序设计
第2章 Java程序基础 40
学好Java最重要的一个步骤就是上机编程，熟悉Java的开发运行环境是成为一个Java程序员的第一步。通过Java编程基础方面的考查，可以全面体现面试者对于Java语言的理解程度和熟练程度。在本章内容中通过真实的面试题，从多个角度讲解Java编程基础部分的考点，使面试者能够快速掌握Java面试的要领，提高自己在面试中成功的概率。
2.1 环境搭建与开发 40
面试题1 如何在Linux环境下安装JDK 44
面试题2 如何编译运行应用程序 46
面试题3 Java开发工具 48
面试题4 关于Java命令提示符的问答题 49
2.2 Java语言概述 52
面试题5 关于Java命名规范的代码分析题 53
面试题6 关于Java代码安全的选择题 54
面试题7 关于Java语言的特性的问答题 55
面试题8 关于Java的类和对象的选择题 56
2.3 变量与常量 57
面试题9 变量及其范围 57
面试题10 根据代码找出错误原因 58
面试题11 修改错误代码 59
面试题12 关于静态方法的代码分析题 59
面试题13 关于在类中定义方法的选择题 60
面试题14 关于main()的选择题 60
面试题15 关于静态变量的选择题 60
面试题16 关于实例成员和类成员区别 61
面试题17 找出错误的代码 63 
第3章 Java语言符号 65
Java编程语言同其他编程语言一样，也是由语法规则和语义定义组成的。语法规则制定了由语言元素构造合法的句式，语义定义则解释了这些句式的含义，应深刻理解各知识点的概念，牢记一些Java的语法，从而达到学习的目的。
3.1 标识符 65
面试题1 选择合法的标识符 65
面试题2 找出错误的代码 66
3.2 关键字 67
面试题3 Java中的关键字1 67
面试题4 Java中的关键字2 68
面试题5 关键字语法含义 68
3.3 分隔符 69
面试题6 Java中的注释1 70
面试题7 Java中的注释2 70
3.4 算数运算符 71
面试题8 求表达式的结果 74
面试题9 编程计算103的值 74
3.5 关系运算符 75
面试题10 确定x的取值范围 75
面试题11 equals()和== 76
面试题12 分析程序写出结果 77
3.6 逻辑运算符 77
面试题13 根据程序选择正确的运行结果 80
3.7 位运算符 80
面试题14 指出错误代码的位置 84
面试题15 选出相等的值 85
面试题16 根据代码，推测结果 85
3.8 条件运算符 86
面试题17 关于条件运算符的操作规则 86
3.9 赋值运算符 87
面试题18 选出正确的赋值语句 88
3.10 优先级和结合性 88
面试题19 运算符的结合性测试 89
面试题20 写出程序运行结果 90
第4章 数据类型及类型转换 91
数据类型是指数据的内在表现形式。Java语言是一个强调数据类型的语言，在声明任何变量时，必须将该变量定义为一种数据类型。根据数据的不同形式，数据划分为多种不同的类型。数据类型不同，所进行的运算就不同，取值范围也不同。Java提供的数据类型包括基本数据类型和复合数据类型。
4.1 整型数据 91
面试题1 int和Integer有什么区别 92
面试题2 正确的赋值方式 93
面试题3 选择合法的声明 93
面试题4 正确表示八进制值 94
面试题5 Java的原始数据类型 94
面试题6 int的取值范围 95
面试题7 根据代码选择正确的答案 95
面试题8 正确表示10的十六进制值 96
面试题9 判断表达式的正误 96
4.2 实型数据 96
面试题10 选出对float变量的合法声明 98
面试题11 正确的赋值 98
面试题12 合法的声明 99
4.3 字符型数据 99
面试题13 char的取值范围 100
面试题14 哪些表达式的结果是正确的 101
面试题15 在char中是否能存储汉字 101
4.4 布尔型数据 102
面试题16 对boolean型变量的声明哪个是正确的 103
面试题17 选出合法的表达式 103
4.5 数据类型转换 104
面试题18 选出合法的类型转换 107
面试题19 基本数据类型与String之间的转换 108
4.6 值传递 108
面试题20 选择正确的结果 108
面试题21 final的参数传递 111
第5章 数组与字符串 113
本章介绍Java中预定义的两个类：数组与字符串。它们也是所有程序设计语言必须要处理的两类数据结构。在传统语言（如C）中，数组和字符串都只是一片连续的内存空间，用于存放同类型的数据，语言本身并没有为它提供更多的支持。Java将其设计为对象，内置了更多的方法，降低了程序员的工作量。另外，Java会对数组的下标进行检测，如果有下标越界的情况，就会及时报告，避免了困扰C/C++程序员的一大难题。
5.1 一维数组 113
面试题1 选择合法的数组声明 115
面试题2 对数组进行初始化 116
面试题3 默认初始化 116
面试题4 根据代码选择正确的答案 117
面试题5 根据代码选出对结果正确描述的选项 118
面试题6 编程题（求最大数） 118
5.2 二维数组 119
面试题7 判断程序的运行结果 122
面试题8 将正确的选项插入指定的位置 123
面试题9 选择二维数组的合法声明 123
面试题10 获得数组的大小 124
面试题11 编程题（根据要求设计程序） 124
5.3 类String字符串 127
面试题12 分析代码的输出结果 130
面试题13 String的数据类型 131
面试题14 判断程序的返回结果 131
面试题15 判断创建的对象个数 132
5.4 类StringBuffer字符串 133
面试题16 String和StringBuffer的区别 135
面试题17 正确的构造方法 135
面试题18 setLength方法的作用 136
第6章 流程控制 137
什么是流程控制？流程就是做一件事情的顺序，或者说是次序。在程序设计中，流程就是要完成一个功能，而流程控制则是指如何在程序设计中控制完成某种功能的次序。
语句是程序的控制成分，它具有特定的语法规则和严格的表达方法，用来控制程序的运行，因此语句也是一些具有结构化的控制结构。这些控制结构可以归为三类：顺序结构、选择结构和循环结构。实现这些控制结构的语句可分为5类：表达式语句、复合语句、分支语句、循环语句和跳转语句。本章将逐一介绍这些语句。
6.1 if控制语句 137
面试题1 分析代码的运行结果 140
面试题2 写出if语句的运行结果 140
面试题3 分析程序代码是否有错 141
面试题4 编程题 142
6.2 switch控制语句 142
面试题5 分析代码的运行结果 144
面试题6 根据已知结果选择未知条件 145
面试题7 switch语句的使用范围 146
面试题8 找出代码中的错误并改正 146
面试题9 编程题 147
6.3 循环控制语句 147
面试题10 选出错误代码的位置（while） 151
面试题11 分析代码选择正确的
答案（for） 152
面试题12 写出程序的运行结果（do-while） 153
面试题13 判断do…while语句的输出结果 153
面试题14 编程题 154
6.4 跳转控制语句 156
6.4.1 break跳转语句 156
6.4.2 continue跳转语句 157
6.4.3 return返回语句 159
面试题15 分析程序的运行结果 160
面试题16 关于break和continue的描述哪些是正确的 161
面试题17 可以返回最大值的方法 161
面试题18 编程题 162
第7章 异常处理及内存管理 163
在实际项目开发过程中，经常会遇到这样的问题，例如某程序在编译时没有产生错误信息，但在程序运行时，经常会出现一些运行时的错误，这种错误对Java而言就是一种异常。异常指的是程序在运行时发生的错误或者不正常的状况，有了异常就要有相应的处理方式。异常处理是Java的一个优点，在异常处理中，它的处理机制设计先进、使用方便，不仅提高了程序的健壮性，而且还大大降低了程序员的编程工作量。因此想成功地成为一名合格的Java程序员，掌握好异常处理机制是编写大型程序必不可少的基本功。
7.1 异常的分类 163
面试题1 运行时异常与一般异常的异同 165
面试题2 所有异常的基础类 166
7.2 异常的处理方式之一：try/catch 166
面试题3 分析代码的运行结果 168
面试题4 对try-catch-finally的正确理解 169
面试题5 分析代码的运行结果 169
7.3 异常的处理方式之二：throws 170
面试题6 正确的异常声明方式 172
面试题7 使用throws处理异常 172
7.4 异常的处理方式之三：throw 173
面试题8 分析程序的运行结果 175
面试题9 异常处理 176
7.5 内存的管理 178
面试题10 垃圾回收 178
面试题11 对象在什么地方变得
适用于垃圾收集 180
面试题12 对垃圾回收的正确描述 181
面试题13 关于finalize()的正确描述 182
面试题14 垃圾收集 184
面试题15 Sun公司程序员考试中的
常见题型 184
第8章 输入/输出流 186
如果一个应用程序没有输入和输出，那么就不能给使用者提供所需要的信息。输入和输出也是整个应用程序为用户提供的接口，让用户能够清楚此应用程序的目的是什么、要做什么等。例如，从键盘上输入一些数据，在显示器上显示数据，并将其存入一个文件中，这些都会涉及信息输入/输出的处理。在Java中，信息的输入和输出（I/O）是程序设计语言中一个很重要的部分。I/O就是指应用程序对这些设备的数据输入与输出，在程序中，键盘被用做文件输入，显示器被用做文件输出。
8.1 File类 186
8.1.1 目录和文件管理 186
8.1.2 随机存取文件Random
AccessFile类 188
面试题1 FileInputStream类构造方法的参数 192
面试题2 建立文件“file.txt” 192
8.2 Stream类 192
8.2.1 字节流的处理方式 193
8.2.2 Reader类和Writer类 196
8.2.3 FileReader和FileWriter类 199
8.2.4 BufferedReader和BufferedWriter类 200
面试题3 InputStream类中的方法 202
面试题4 什么是System.out 202
面试题5 分析代码的编译运行结果 203
面试题6 将字符写入文件末尾 203
面试题7 补全程序 204
面试题8 创建一个InputStream
Reader的实例 205
面试题9 编程题 205
第9章 面向对象 207
面向对象编程（Object Oriented Programming，OOP）对于IT界的将士来说并不陌生，因为从跨入IT界的大门开始，首先接触的就是OOP，每个人每天都在说OOP，要有OOP思想，但是什么是OOP？什么是OOP思想呢？不论是刚接触Java的小将，还是工作多年的老将，对这个问题都感到很茫然，感觉很抽象化，脑海里只是一个模糊的概念，因为问题的抽象化，理解的难度大，所以大部分的招聘企业将其作为考核的标准，因此如何理解OOP设计思想、继承及接口等是面试中常见的考试内容。
9.1 抽象 207
9.2 继承 208
面试题1 分析程序的输出结果 210
面试题2 根据给定代码判断输出
结果 211
面试题3 对程序的正确分析 212
9.3 封装 213
9.3.1 成员变量的封装 213
9.3.2 成员函数的封装 215
面试题4 类的描述 216
面试题5 对封装的理解 217
9.4 多态 217
9.4.1 方法重载 217
9.4.2 方法重写 218
面试题6 分析所执行的代码 219
面试题7 分析代码的运行结果 220
面试题8 实现多态的机制 221
9.5 内部类 222
面试题9 实例分析 222
9.5.1 在类中创建一个内部类的实例 223
9.5.2 在对象中创建一个内部类的
实例 224
9.5.3 关于final声明的一个实例 225
面试题10 分析代码的输出结果 227
面试题11 关于内部类的问答题 228
面试题12 找出代码中的错误 228
9.6 抽象类 228
面试题13 关于抽象方法的问题 231
面试题14 编程题，仔细看清代码的
需求 231
9.7 接口 233
面试题15 抽象类和接口的区别 235
面试题16 根据代码找出错误 235
9.8 方法的重写和重载 236
9.8.1 方法重写的实例 236
9.8.2 方法重载的实例 237
面试题17 重写和重载的区别 239
面试题18 哪些方法可以加入类
Man中 239
9.9 构造函数 240
9.9.1 合法的构造函数 240
面试题19 选择合法的构造函数 241
9.9.2 构造函数重载 241
面试题20 写出程序的运行结果 242
面试题21 关于构造函数的选择题 244
面试题22 指出代码的错误之处 244
面试题23 针对this()方法的找错题 245
第10章 Java的多线程 246
到目前为止，在传统的程序语言里，大多数的程序设计者习惯上考虑怎样使程序从头到尾顺序地执行各任务的方法，即一个程序只有一条执行路线，但是在生活中会有很多过程是同时发生的。Java的“多线程”恰可弥补这个缺憾，它可以让不同的程序块一起运行，可以让程序运行更为顺畅，也可以达到多任务同时处理的目的。
10.1 认识线程 246
10.1.1 线程的5种状态 246
10.1.2 关于单线程的一个实例 247
面试题1 关于线程基础的简答题 248
面试题2 对线程的正确叙述 248
10.2 多线程的创建方式 249
10.2.1 继承Thread类创建线程的方式 249
10.2.2 实现Runnable接口创建线程的方式 250
面试题3 简要回答创建线程的两种
方式及区别 253
面试题4 对Threads的正确描述 253
10.3 线程和进程 253
10.4 线程的同步 254
10.4.1 多线程同步代码块 255
10.4.2 多线程同步方法 256
面试题5 线程同步的方法 257
面试题6 分析代码片段 258
面试题7 找出代码中的错误 259
面试题8 分析程序的输出结果 259
面试题9 指向不同类实例的多线程 260
面试题10 编程题（Thread和Runnable） 262
10.5 线程的操作 263
面试题11 设置线程名称 263
面试题12 关于isAlive()的推测题 264
面试题13 关于resume()的选择题 265
面试题14 关于sleep()和write()的简答题 266
面试题15 关于yield()方法的选择题 266
面试题16 编程题 266
第11章 包和访问控制 270
在Java里，可以将具有相似功能和具有共用性质的类和接口放到一个文件里，这样既可以划分类名空间，又可以控制类之间的访问。再将这些文件一起编译执行，如此的程序代码将更易于维护。同时在将类分割开之后对于类的使用也就有了相应的访问权限。本章将介绍如何使用包及访问控制权限。
11.1 包的创建及使用 270
11.1.1 包的创建 270
11.1.2 包的使用 271
面试题1 选择正确的代码片段 273
面试题2 选择正确的Java语法 274
面试题3 了解native声明 274
面试题4 选择正确的答案 275
11.2 Java常用类库 275
11.2.1 Java JDK中的常用软件包 275
11.2.2 容易混淆的软件包 277
面试题5 Object中hasCode()的返回类型值 278
面试题6 Object类中的clone()方法 280
面试题7 hasCode()与equals() 280
面试题8 Math.abs()方法的使用 280
面试题9 Math. ceil(-6.8)的值等于多少 282
面试题10 谁的值会等于12 282
11.3 访问控制 283
面试题11 不能被外部类所访问的修饰符 285
面试题12 只能被同包中的类访问的修饰符 286
面试题13 正确的声明 286
面试题14 类中的调用方法 287
第12章 类集框架 288
在计算机科学中，有两门很重要的课程——数据结构和算法——来告诉你如何完成常见的任务。由于人们对这两者的学习和理解是相当有难度的，所以Java的设计者为了帮助程序员能够快速越逾壕沟，设计了大量的方法，将常用的数据结构和算法封装在里面。这些处理数据结构和算法的类，都统一放在集合库中，本章就将介绍这些类的使用。
12.1 类集接口 288
12.1.1 Collection接口的使用方法 288
12.1.2 List接口的使用方法 289
12.1.3 Set接口的使用方法 290
12.1.4 SortedSet接口的使用方法 290
12.1.5 Iterator接口的使用方法 291
面试题1 Collection和Collections的区别 291
面试题2 用什么方法来区分Set里的元素是否重复 292
面试题3 Collection接口的子接口 292
面试题4 集合框架中的核心接口 292
面试题5 可以按序存放元素的集合接口 293
面试题6 根据程序代码选择正确的选项 293
12.2 接口实现类的使用 294
12.2.1 List接口的实现类 294
12.2.2 Set接口的实现类 299
12.2.3 Map映射接口 301
面试题7 HashMap和Hashtable的区别 302
面试题8 heap和stack的区别 302
面试题9 常用的类集合 303
面试题10 关于List、Map、Set的问答题 303
面试题11 关于ArrayList、Vector、LinkedList的问答题 303
面试题12 覆盖方法 303
面试题13 分析代码的输出结果 304
面试题14 写出程序的输出结果 305
面试题15 接口java.util.Map.Entry中定义的原型是什么 305
面试题16 如何实现hashCode()方法 306
面试题17 实现Map接口的对象 307
第13章 数据库 308
本章介绍如何使用Java类库中的类来编写数据库应用程序，数据库（Database）在程序中扮演着重要的角色。大部分实用的应用程序都会使用数据库来存储信息。数据库与应用程序相互独立，数据库负责持久化数据，应用程序负责业务逻辑。要学习数据库编程，除了学习Java类库中的有关类如JDBC，还需要专门学习数据库的查询语言——SQL，学习这种专门为数据库设计的语言，就可以在Java程序中编写数据库应用程序。语言学习完毕后，还要学习数据库软件，对数据库进行可视化操作。如Oracle、MySQL等大型数据库。
13.1 SQL 308
13.1.1 SQL的基本数据定义语句 308
13.1.2 SQL的基本数据操作语句 312
13.1.3 SQL中的统计函数 315
面试题1 如何使用LIKE运算符 315
面试题2 如何使用ORDER BY
子句 316
面试题3 对约束的理解 316
面试题4 关于SQL的面试题（中兴面试题） 316
13.2 JDBC数据库编程 317
13.2.1 创建数据源 317
13.2.2 加载驱动程序 320
13.2.3 连接数据源 321
13.2.4 对数据库的操作 321
面试题5 Connection类中的事物处理方法有哪些 325
面试题6 JDBC连接数据库的步骤 325
面试题7 用JDBC写一段程序 325
13.3 Oracle数据库 327
面试题8 判断SELECT语句的查询结果 327
面试题9 处理分组的子句是什么 327
面试题10 可以返回非空表达式的函数是什么 327
面试题11 如何理解索引 328
面试题12 PL/SQL的内置数据类型是什么 328
面试题13 什么是视图 328
面试题14 冷备份和热备份的不同点及其各自的优点 329
面试题15 如何利用备份恢复数据库 329
13.4 SQL Server数据库 329
面试题16 COUNT(*)函数的作用是什么 329
面试题17 请选择正确的答案 330
面试题18 分析SQL语句的结果 330
面试题19 选择正确的SQL语句 330
面试题20 TRUNCATE TABLE
命令的作用是什么 331
面试题21 如何理解BETWEEN…AND 331
面试题22 选择正确的SELECT语句 331
面试题23 SQL Sever的系统数据库是什么 332
面试题24 删除数据表 332
面试题25 如何声明游标 332
第三篇 Java Web开发
第14章 J2EE（Java EE）和EJB 3.0技术开发 334
J2EE是Java平台企业版的简称（Java Platform，Enterprise Edition），它包含一组技术规范与指南，包含许多组件，主要可以简化且规范应用系统的开发与部署，进而提高可移植性、安全与再用价值。
J2EE基于Java SE，此外新加了企业应用所需的类库。Sun公司在其Java平台企业版最初命名为J2EE，从J2EE 1.5版本后更名为Java EE 5.0。Java EE是软件技术发展的结果。
14.1 J2EE的核心API与组件 334
面试题1 什么是J2EE 336
面试题2 关于J2EE的名词解释 337
14.2 EJB组件 337
14.2.1 搭建EJB 3.0开发环境 337
14.2.2 Session Bean（会话Bean） 341
14.2.3 Message-Driven Bean
（消息驱动Bean） 347
14.2.4 Entity Bean
（开发实体Bean） 350
面试题3 什么是EJB 351
面试题4 EJB规定禁止的操作有哪些 352
面试题5 EJB与Java Bean有什么区别 352
面试题6 EJB的类型有哪几种 353
面试题7 Session Bean的分类 353
面试题8 开发无状态会话Bean 353
面试题9 在Entity Bean中如何与表进行映射 354
面试题10 Entity Bean中哪些方法实现了数据同步 355
面试题11 Entity Bean的分类 356
面试题12 正确理解Message-Driven Bean 356
面试题13 Bean的生命周期范围 356
14.3 常见的J2EE应用服务器 357
面试题14 如何在WebLogic上部署EJB 357
面试题15 如何给WebLogic的内存指定大小 357
面试题16 J2EE的应用服务器有哪些 358
面试题17 persistent与non-persistent的区别 358
面试题18 在WebLogic中发布EJB需要哪些配置文件 358
面试题19 JBoss服务器监听服务默认端口是什么 359
面试题20 创建一个Enterprise Application的同时还会
创建哪个组件 359
面试题21 选出错误的操作 359
面试题22 创建JDBC 360
第15章 XML、UML和MVC 361
在本章主要讲解一下XML和UML的基本概念和简单的使用方式以及MVC的含义。XML（eXtensible Markup Language）是由万维网协会（W3C）推出的新一代数据交换的标准，翻译成中文就是“可扩展标识语言”。UML（Unified Modeling Language）是一种建模语言，是进行需求分析和概要设计的主要工具。MVC（Model，View，Controller）是Application开发的设计模式。M是指数据模型；V是指用户界面；C则是控制器。
15.1 XML 361
15.1.1 XML的基础知识 361
15.1.2 XML解析模型 363
面试题1 XML有哪几种解析技术 369
面试题2 如何使用XML技术 369
面试题3 选择正确的描述 370
面试题4 在DTD中哪个元素属性可加不可加 370
面试题5 XML的组成包括几部分 371
面试题6 关于对于内部DTD文档的
叙述，哪个选项是正确的 371
面试题7 在DTD文档中CONTENT的规范 372
面试题8 什么是对象模型（DOM） 372
15.2 UML 373
面试题9 选择正确的UML类图 376
面试题10 活动图强调什么 377
面试题11 跨越多个用例的单个
对象的行为类型图 378
面试题12 什么是用例图 378
面试题13 用例之间的关系 379
面试题14 表示系统行为的图有哪些 379
面试题15 用例图由哪几部分组成 380
面试题16 什么是模型 380
15.3 MVC 380
面试题17 理解MVC设计模式 381
面试题18 MVC各个部分的实现
技术及实现方法 381
第16章 JSP/Servlet技术 382
在Java开发中，JSP/Servlet是属于Web层技术，JSP与Servlet是一体的两面，你可以使用单独一项技术来解决动态网页呈现的需求，但最好的方式是取两者的长处，JSP是由网页设计人员导向的，而Servlet是由程式设计人员导向的，目前国内的大部分Java开发均是Java Web开发，理清它们之间的职责可以让两个不同专长的团队彼此合作，并降低相互间的牵制作用。所以，Servlet/JSP也是在Java程序员面试中必考的内容。
16.1 JSP的核心技术 382
16.1.1 JSP的基本语法 382
16.1.2 JSP指令 383
16.1.3 JSP动作 384
16.1.4 JSP内置对象 386
面试题1 在浏览器中如何访问JSP
文件 390
面试题2 分析代码的输出结果 390
面试题3 JSP页面跳转的方式 391
面试题4 JSP位于MVC模式的
哪一层 391
面试题5 标签库的指令 391
面试题6 <jsp:useBean>的属性 392
面试题7 Page指令的属性 392
面试题8 JSP的内置对象及其作用 392
面试题9 JSP注释标签的语法格式 393
面试题10 Page指令中属性的作用 393
面试题11 Cookie的工作流程 394
面试题12 静态页面和动态页面中
INCLUDE的作用是否
相同 394
面试题13 JSP的动作指令 395
16.2 Servlet的核心技术 395
16.2.1 Servlet接口 395
16.2.2 Servlet接口实现类 398
16.2.3 HttpServlet对象 399
16.2.4 Servlet的生命周期 399
16.2.5 Servlet之间的跳转 400
面试题14 Servlet的生命周期 401
面试题15 Servlet的class文件放在哪个目录下 401
面试题16 ServletContext对象的产生 402
面试题17 Servlet配置中的标记 402
面试题18 Servlet位于MVC模式的哪一层 403
面试题19 在Servlet生命周期中，哪个方法只能调用一次 403
面试题20 标识会话的方法 403
面试题21 可以读取ServletContext对象属性的方法是什么 404
面试题22 部署时，<Servlet>标签中可以包含哪些标签 404
面试题23 Servlet中的状态码 405
面试题24 在HttpServlet中，处理请求的方法有哪些 406
第四篇 算 法
第17章 常见的Java上机面试题 408
上机编程考试，要求面试者能够根据题目的要求，使用一种编程工具，编写全部代码并调试运行。这主要是考查面试者代码书写和编程的熟练程度。值得注意的是，这类面试题要求能够正确运行，往往要求面试者使用比较原始的JDK编译方式也就是使用DOS命令提示符，而不是提供Eclipse或者JBuilder等快速开发环境。本章将经常出现的上机编程题进行分类，希望能够给读者带来帮助和启示。
17.1 Java基础编程试题 408
面试题1 怎样截取字符串 408
面试题2 怎样实现元素互换 409
面试题3 怎样实现元素排序 411
面试题4 怎样实现Singleton模式编程 413
面试题5 哥德巴赫猜想的近似证明 414
面试题6 怎样实现金额转换 416
面试题7 爱因斯坦的阶梯问题 420
面试题8 如何判断回文数字 421
17.2 数据库编程试题 423
面试题9 根据表结构写出相应的SQL语句 423
面试题10 编写MySQL数据库的JDBC连接 423
17.3 Java高级编程试题 424
面试题11 怎样用SAX解析XML 425
面试题12 利用Servelt的doPost方法实现表单内容的读取 427
面试题13 编程实现Servlet的记录访问功能 428
第18章 思维与智力测试 431
这类面试题对面试者提出了更高的要求。思维拓展方面的试题大体可以分为两类，一类是思维拓展编程，首先需要面试者建立编程模型，然后使用代码编程并给出答案；另一类是智力测试，考查面试者思考问题的方式方法和反应能力，不需要编程来解决问题。
18.1 思维拓展测试 431
面试题1 掷骰子游戏 431
面试题2 求出最大公约数 433
面试题3 阶乘阶梯式的函数 434
面试题4 背包问题 436
面试题5 求最大的连续组合值（华为校园招聘笔试题） 438
面试题6 洗扑克牌（乱数排列） 440
面试题7 巧妙过桥 441
面试题8 字符移动（金山笔试题） 443
面试题9 八皇后问题 444
18.2 智力（IQ）测试 447
面试题10 找出质量不相同的球 448
面试题11 有多少人及格 449
面试题12 他说的是真话吗 450
面试题13 哪个开关控制哪盏灯 450
面试题14 谁的存活概率最大 451
面试题15 猴子分桃 451
面试题16 三个女儿的年龄分别是多少 452
面试题17 哪一种是“王牌”花色 452
面试题18 巧猜扑克牌 453
面试题19 谁得第二名 454
面试题20 计时烧绳 454
面试题21 海盗分金问题 455
面试题22 聪明的法官 456
附录A 个人简历英文词汇速查 457