标题：进入IT企业必读的324个Java面试题
图书信息
书 名: 进入IT企业必读的324个Java面试  题 
作　者：张昆
出版社： 电子工业出版社
出版时间： 2011年8月1日
ISBN: 9787121138065
开本： 16开
定价: 59.80元
内容简介
本书涵盖了Java面试中会经常出现的问题，并指导读者快速、巧妙地回答问题。全书共分18章，内容涵盖了面试前必须要知道的几件事、Java程序基础、Java语言中的符号、数据类型及类型转换、数组与字符串、流程控制、异常处理及内存管理、输入/输出流、面向对象、Java的多线程、包和访问控制、集合、数据库、J2EE技术、XML/UML技术、Servlet/JSP技术以及常见的上机编程和思维训练等有趣的试题。
图书目录
第一篇 求职你准备好了吗
第1章 面试前必须知道的几件事2
一次次的求职面试，就像一场场无形的战役一样，决定着不同的人生和不同人的命运。如果想在战役中取得胜利，就必须做到知己知彼，才能百战百胜。想要在众多对手中脱颖而出，靠的不再是健壮的体魄，而是灵敏的思维和充分的准备，在战斗即将打响之际，你准备好了吗？通过学习本书，你将准备充分，信心十足，摩拳擦掌等待战场上大显身手的那一刻。
1.1 做好自己的职业规划2
1.1.1 走好职业生涯第一步2
1.1.2 确定符合自己的人生目标3
1.1.3 紧跟社会发展的步伐3
1.1.4 为职业生涯画上圆满的句号4
1.2 面试的流程4
1.2.1 填写求职申请表4
1.2.2 笔试4
1.2.3 面试5
1.2.4 压力测试7
1.2.5 外语能力测试8
1.2.6 综合测试8
1.3 一个漂亮的简历9
1.3.1 中文简历的制作9
1.3.2 英文简历的制作10
1.3.3 如何用E-mail投递简历11
1.3.4 简历浏览量低的原因12
1.3.5 华丽的辞藻未必是美的13
1.3.6 简历被筛选的秘密14
1.4 着装要注意的问题14
1.4.1 面试着装（男生篇）14
1.4.2 面试着装（女生篇）15
1.5 面试官经常问到的几个问题15
问题1 谈谈你的缺点15
问题2 你为什么选择我们公司16
问题3 对这项工作，你有哪些可
预见的困难16
问题4 如果我录用你，你将怎样
开展工作16
问题5 与上级意见不一时，
你将怎么办17
问题6 你能为我们做什么17
问题7 你是应届毕业生，缺乏经验，
如何能胜任这项工作17
问题8 你希望与什么样的上级共事18
问题9 你在前一家公司离职的
原因是什么18
问题10 你以前的上级对你的
评价如何19
问题11 如果你的工作出现失误，给
本公司造成经济损失，你认为
该怎么办19
问题12 怎样理解团队？请举例并
说明启示20
1.6 大公司VS小公司20
1.6.1 大公司VS小公司的区别20
1.6.2 大公司的利和弊21
1.6.3 小公司的利和弊21
第二篇 Java程序设计
第2章 Java程序基础24
学好Java最重要的一个步骤就是上机编程，熟悉Java的开发运行环境是成为一个Java程序员的第一步。通过Java编程基础方面的考查，可以全面体现面试者对于Java语言的理解程度和熟练程度。在本章内容中通过真实的面试题，从多个角度讲解Java编程基础部分的考点，使面试者能够快速掌握Java面试的要领，提高自己在面试中成功的概率。
2.1 环境搭建与开发24
面试题1 如何在Linux环境下
安装JDK28
面试题2 如何编译运行应用程序30
面试题3 Java开发工具32
面试题4 关于Java命令提示符的
问答题33
2.2 Java语言概述36
面试题5 关于Java命名规范的
代码分析题37
面试题6 关于Java代码安全的
选择题38
面试题7 关于Java语言的特性的
问答题39
面试题8 关于Java的类和对象的
选择题40
2.3 变量与常量41
面试题9 变量及其范围41
面试题10 根据代码找出错误原因42
面试题11 修改错误代码43
面试题12 关于静态方法的
代码分析题43
面试题13 关于在类中定义方法的
选择题44
面试题14 关于main()的选择题44
面试题15 关于静态变量的选择题44
面试题16 关于实例成员和
类成员区别45
面试题17 找出错误的代码47
第3章 Java语言符号49
Java编程语言同其他编程语言一样，也是由语法规则和语义定义组成的。语法规则制定了由语言元素构造合法的句式，语义定义则解释了这些句式的含义，应深刻理解各知识点的概念，牢记一些Java的语法，从而达到学习的目的。
3.1 标识符49
面试题1 选择合法的标识符49
面试题2 找出错误的代码50
3.2 关键字51
面试题3 Java中的关键字151
面试题4 Java中的关键字252
面试题5 关键字语法含义52
3.3 分隔符53
面试题6 Java中的注释154
面试题7 Java中的注释254
3.4 算数运算符55
面试题8 求表达式的结果57
面试题9 编程计算103的值58
3.5 关系运算符58
面试题10 确定x的取值范围59
面试题11 equals()和==60
面试题12 分析程序写出结果61
3.6 逻辑运算符61
面试题13 根据程序选择正确的
运行结果64
3.7 位运算符64
面试题14 指出错误代码的位置68
面试题15 选出相等的值68
面试题16 根据代码，推测结果69
3.8 条件运算符69
面试题17 关于条件运算符的
操作规则70
3.9 赋值运算符71
面试题18 选出正确的赋值语句72
3.10 优先级和结合性72
面试题19 运算符的结合性测试73
面试题20 写出程序运行结果74
第4章 数据类型及类型转换75
数据类型是指数据的内在表现形式。Java语言是一个强调数据类型的语言，在声明任何变量时，必须将该变量定义为一种数据类型。根据数据的不同形式，数据划分为多种不同的类型。数据类型不同，所进行的运算就不同，取值范围也不同。Java提供的数据类型包括基本数据类型和复合数据类型。本章主要介绍数据的基本类型。在Java程序中，总共有8大基本类型，包括4种整型、1种字符型、2种浮点型、1种布尔型，除了这几种基本类型外，其他都属于复合数据类型。表4.1体现了Java语言中各数据类型的划分。
4.1 整型数据75
面试题1 int和Integer有什么区别76
面试题2 正确的赋值方式77
面试题3 选择合法的声明77
面试题4 正确表示八进制值78
面试题5 Java的原始数据类型78
面试题6 int的取值范围79
面试题7 根据代码选择正确的答案79
面试题8 正确表示10的十六进
制值80
面试题9 判断表达式的正误80
4.2 实型数据80
面试题10 选出对float变量的
合法声明82
面试题11 正确的赋值82
面试题12 合法的声明83
4.3 字符型数据83
面试题13 char的取值范围84
面试题14 哪些表达式的
结果是正确的85
面试题15 在char中是否能存储汉字85
4.4 布尔型数据86
面试题16 对boolean型变量的声明
哪个是正确的87
面试题17 选出合法的表达式87
4.5 数据类型转换88
面试题18 选出合法的类型转换91
面试题19 基本数据类型与String
之间的转换92
4.6 值传递92
面试题20 选择正确的结果92
面试题21 final的参数传递95
第5章 数组与字符串97
本章介绍Java中预定义的两个类：数组与字符串。它们也是所有程序设计语言必须要处理的两类数据结构。在传统语言（如C）中，数组和字符串都只是一片连续的内存空间，用于存放同类型的数据，语言本身并没有为它提供更多的支持。Java将其设计为对象，内置了更多的方法，降低了程序员的工作量。另外，Java会对数组的下标进行检测，如果有下标越界的情况，就会及时报告，避免了困扰C/C++程序员的一大难题。下面就从数组开始讲起。
5.1 一维数组97
面试题1 选择合法的数组声明99
面试题2 对数组进行初始化100
面试题3 默认初始化100
面试题4 根据代码选择正确的答案101
面试题5 根据代码选出对结果
正确描述的选项102
面试题6 编程题（求最大数）102
5.2 二维数组103
面试题7 判断程序的运行结果106
面试题8 将正确的选项插入指定的
位置107
面试题9 选择二维数组的合法声明107
面试题10 获得数组的大小108
面试题11 编程题（根据要求
设计程序）108
5.3 类String字符串111
面试题12 分析代码的输出结果114
面试题13 String的数据类型115
面试题14 判断程序的返回结果115
面试题15 判断创建的对象个数115
5.4 类StringBuffer字符串116
面试题16 String和StringBuffer的
区别119
面试题17 正确的构造方法119
面试题18 setLength方法的作用119
第6章 流程控制121
什么是流程控制？流程就是做一件事情的顺序，或者说是次序。在程序设计中，流程就是要完成一个功能，而流程控制则是指如何在程序设计中控制完成某种功能的次序。
语句是程序的控制成分，它具有特定的语法规则和严格的表达方法，用来控制程序的运行，因此语句也是一些具有结构化的控制结构。这些控制结构可以归为三类：顺序结构、选择结构和循环结构。实现这些控制结构的语句可分为5类：表达式语句、复合语句、分支语句、循环语句和跳转语句。本章将逐一介绍这些语句。
6.1 if控制语句121
面试题1 分析代码的运行结果124
面试题2 写出if语句的运行结果124
面试题3 分析程序代码是否有错125
面试题4 编程题126
6.2 switch控制语句126
面试题5 分析代码的运行结果128
面试题6 根据已知结果选择
未知条件129
面试题7 switch语句的使用范围130
面试题8 找出代码中的错误并改正130
面试题9 编程题131
6.3 循环控制语句131
面试题10 选出错误代码的
位置（while）135
面试题11 分析代码选择正确的
答案（for）136
面试题12 写出程序的运行结果
（do-while）137
面试题13 判断do…while语句的
输出结果137
面试题14 编程题138
6.4 跳转控制语句140
6.4.1 break跳转语句140
6.4.2 continue跳转语句141
6.4.3 return返回语句143
面试题15 分析程序的运行结果144
面试题16 关于break和continue的
描述哪些是正确的145
面试题17 可以返回最大值的方法145
面试题18 编程题146
第7章 异常处理及内存管理147
在实际项目开发过程中，经常会遇到这样的问题，例如某程序在编译时没有产生错误信息，但在程序运行时，经常会出现一些运行时的错误，这种错误对Java而言就是一种异常。异常指的是程序在运行时发生的错误或者不正常的状况，有了异常就要有相应的处理方式。异常处理是Java的一个优点，在异常处理中，它的处理机制设计先进、使用方便，不仅提高了程序的健壮性，而且还大大降低了程序员的编程工作量。因此想成功地成为一名合格的Java程序员，掌握好异常处理机制是编写大型程序必不可少的基本功。
7.1 异常的分类147
面试题1 运行时异常与一般异常的
异同149
面试题2 所有异常的基础类150
7.2 异常的处理方式之一：try/catch150
面试题3 分析代码的运行结果152
面试题4 对try-catch-finally的
正确理解153
面试题5 分析代码的运行结果153
7.3 异常的处理方式之二：throws154
面试题6 正确的异常声明方式156
面试题7 使用throws处理异常156
7.4 异常的处理方式之三：throw157
面试题8 分析程序的运行结果159
面试题9 异常处理160
7.5 内存的管理162
面试题10 垃圾回收162
面试题11 对象在什么地方变得
适用于垃圾收集164
面试题12 对垃圾回收的正确描述165
面试题13 关于finalize()的
正确描述165
面试题14 垃圾收集167
面试题15 Sun公司程序员考试中的
常见题型168
第8章 输入/输出流170
如果一个应用程序没有输入和输出，那么就不能给使用者提供所需要的信息。输入和输出也是整个应用程序为用户提供的接口，让用户能够清楚此应用程序的目的是什么、要做什么等。例如，从键盘上输入一些数据，在显示器上显示数据，并将其存入一个文件中，这些都会涉及信息输入/输出的处理。在Java中，信息的输入和输出（I/O）是程序设计语言中一个很重要的部分。I/O就是指应用程序对这些设备的数据输入与输出，在程序中，键盘被用做文件输入，显示器被用做文件输出。
8.1 File类170
8.1.1 目录和文件管理170
8.1.2 随机存取文件Random-
AccessFile类172
面试题1 FileInputStream类构造
方法的参数176
面试题2 建立文件“file.txt”176
8.2 Stream类176
8.2.1 字节流的处理方式177
8.2.2 Reader类和Writer类180
8.2.3 FileReader和FileWriter类183
8.2.4 BufferedReader和Buffered- 
Writer类184
面试题3 InputStream类中的方法186
面试题4 什么是System.out186
面试题5 分析代码的编译运行结果187
面试题6 将字符写入文件末尾187
面试题7 补全程序188
面试题8 创建一个InputStreamReader
的实例189
面试题9 编程题189
第9章 面向对象191
面向对象编程（Object Oriented Programming，OOP）对于IT界的将士来说并不陌生，因为从跨入IT界的大门开始，首先接触的就是OOP，每个人每天都在说OOP，要有OOP思想，但是什么是OOP？什么是OOP思想呢？不论是刚接触Java的小将，还是工作多年的老将，对这个问题都感到很茫然，感觉很抽象化，脑海里只是一个模糊的概念，因为问题的抽象化，理解的难度大，所以大部分的招聘企业将其作为考核的标准，因此如何理解OOP设计思想、继承及接口等是面试中常见的考试内容。
9.1 抽象191
9.2 继承192
面试题1 分析程序的输出结果194
面试题2 根据给定代码判断
输出结果195
面试题3 对程序的正确分析196
9.3 封装197
9.3.1 成员变量的封装197
9.3.2 成员函数的封装199
面试题4 类的描述200
面试题5 对封装的理解201
9.4 多态201
9.4.1 方法重载201
9.4.2 方法重写202
面试题6 分析所执行的代码203
面试题7 分析代码的运行结果204
面试题8 实现多态的机制205
9.5 内部类206
面试题9 实例分析206
9.5.1 在类中创建一个内部类的实例207
9.5.2 在对象中创建一个内部类的
实例208
9.5.3 关于final声明的一个实例209
面试题10 分析代码的输出结果211
面试题11 关于内部类的问答题212
面试题12 找出代码中的错误212
9.6 抽象类212
面试题13 关于抽象方法的问题215
面试题14 编程题，仔细看清
代码的需求215
9.7 接口217
面试题15 抽象类和接口的区别219
面试题16 根据代码找出错误219
9.8 方法的重写和重载220
9.8.1 方法重写的实例220
9.8.2 方法重载的实例221
面试题17 重写和重载的区别223
面试题18 哪些方法可以
加入类Man中223
9.9 构造函数224
9.9.1 合法的构造函数224
面试题19 选择合法的构造函数225
9.9.2 构造函数重载225
面试题20 写出程序的运行结果226
面试题21 关于构造函数的选择题228
面试题22 指出代码的错误之处228
面试题23 针对this()方法的找错题229
第10章 Java的多线程230
到目前为止，在传统的程序语言里，大多数的程序设计者习惯上考虑怎样使程序从头到尾顺序地执行各任务的方法，即一个程序只有一条执行路线，但是在生活中会有很多过程是同时发生的。Java的“多线程”恰可弥补这个缺憾，它可以让不同的程序块一起运行，可以让程序运行更为顺畅，也可以达到多任务同时处理的目的。
10.1 认识线程230
10.1.1 线程的5种状态230
10.1.2 关于单线程的一个实例231
面试题1 关于线程基础的简答题232
面试题2 对线程的正确叙述232
10.2 多线程的创建方式233
10.2.1 继承Thread类创建线程的
方式233
10.2.2 实现Runnable接口创建线程的
方式234
面试题3 简要回答创建线程的两种
方式及区别237
面试题4 对Threads的正确描述237
10.3 线程和进程237
10.4 线程的同步238
10.4.1 多线程同步代码块239
10.4.2 多线程同步方法240
面试题5 线程同步的方法241
面试题6 分析代码片段242
面试题7 找出代码中的错误243
面试题8 分析程序的输出结果243
面试题9 指向不同类实例的多线程244
面试题10 编程题
（Thread和Runnable）246
10.5 线程的操作247
面试题11 设置线程名称247
面试题12 关于isAlive()的推测题248
面试题13 关于resume()的选择题249
面试题14 关于sleep()和write()的
简答题250
面试题15 关于yield()方法的
选择题250
面试题16 编程题250
第11章 包和访问控制254
在Java里，可以将具有相似功能和具有共用性质的类和接口放到一个文件里，这样既可以划分类名空间，又可以控制类之间的访问。再将这些文件一起编译执行，如此的程序代码将更易于维护。同时在将类分割开之后对于类的使用也就有了相应的访问权限。本章将介绍如何使用包及访问控制权限。
11.1 包的创建及使用254
11.1.1 包的创建254
11.1.2 包的使用255
面试题1 选择正确的代码片段257
面试题2 选择正确的Java语法258
面试题3 了解native声明258
面试题4 选择正确的答案259
11.2 Java常用类库259
11.2.1 Java JDK中的常用软件包259
11.2.2 容易混淆的软件包261
面试题5 Object中hasCode()的
返回类型值262
面试题6 Object类中的clone()方法264
面试题7 hasCode()与equals()264
面试题8 Math.abs()方法的使用264
面试题9 Math. ceil(-6.8)的值
等于多少266
面试题10 谁的值会等于12266
11.3 访问控制267
面试题11 不能被外部类所访问的
修饰符269
面试题12 只能被同包中的类访问的
修饰符270
面试题13 正确的声明270
面试题14 类中的调用方法271
第12章 类集框架272
在计算机科学中，有两门很重要的课程——数据结构和算法——来告诉你如何完成常见的任务。由于人们对这两者的学习和理解是相当有难度的，所以Java的设计者为了帮助程序员能够快速越逾壕沟，设计了大量的方法，将常用的数据结构和算法封装在里面。这些处理数据结构和算法的类，都统一放在集合库中，本章就将介绍这些类的使用。
12.1 类集接口272
12.1.1 Collection接口的使用方法272
12.1.2 List接口的使用方法273
12.1.3 Set接口的使用方法274
12.1.4 SortedSet接口的使用方法274
12.1.5 Iterator接口的使用方法275
面试题1 Collection和Collections的
区别275
面试题2 用什么方法来区分Set里的
元素是否重复276
面试题3 Collection接口的子接口276
面试题4 集合框架中的核心接口276
面试题5 可以按序存放元素的
集合接口277
面试题6 根据程序代码选择正确的
选项277
12.2 接口实现类的使用278
12.2.1 List接口的实现类278
12.2.2 Set接口的实现类283
12.2.3 Map映射接口285
面试题7 HashMap和Hashtable的
区别286
面试题8 heap和stack的区别286
面试题9 常用的类集合287
面试题10 关于List、Map、Set的
问答题287
面试题11 关于ArrayList、Vector、
LinkedList的问答题287
面试题12 覆盖方法287
面试题13 分析代码的输出结果288
面试题14 写出程序的输出结果289
面试题15 接口java.util.Map.Entry中
定义的原型是什么289
面试题16 如何实现hashCode()方法290
面试题17 实现Map接口的对象291
第13章 数据库292
本章介绍如何使用Java类库中的类来编写数据库应用程序，数据库（Database）在程序中扮演着重要的角色。大部分实用的应用程序都会使用数据库来存储信息。数据库与应用程序相互独立，数据库负责持久化数据，应用程序负责业务逻辑。要学习数据库编程，除了学习Java类库中的有关类如JDBC，还需要专门学习数据库的查询语言——SQL，学习这种专门为数据库设计的语言，就可以在Java程序中编写数据库应用程序。语言学习完毕后，还要学习数据库软件，对数据库进行可视化操作。如Oracle、MySQL等大型数据库。
13.1 SQL292
13.1.1 SQL的基本数据定义语句292
13.1.2 SQL的基本数据操作语句296
13.1.3 SQL中的统计函数299
面试题1 如何使用LIKE运算符299
面试题2 如何使用ORDER BY子句300
面试题3 对约束的理解300
面试题4 关于SQL的面试题
（中兴面试题）300
13.2 JDBC数据库编程301
13.2.1 创建数据源301
13.2.2 加载驱动程序304
13.2.3 连接数据源305
13.2.4 对数据库的操作305
面试题5 Connection类中的事物
处理方法有哪些309
面试题6 JDBC连接数据库的步骤309
面试题7 用JDBC写一段程序309
13.3 Oracle数据库311
面试题8 判断SELECT语句的
查询结果311
面试题9 处理分组的子句是什么311
面试题10 可以返回非空表达式的
函数是什么311
面试题11 如何理解索引312
面试题12 PL/SQL的内置数据类型
是什么312
面试题13 什么是视图312
面试题14 冷备份和热备份的不同点
及其各自的优点313
面试题15 如何利用备份恢复
数据库313
13.4 SQL Server数据库313
面试题16 COUNT(*)函数的作用
是什么313
面试题17 请选择正确的答案313
面试题18 分析SQL语句的结果314
面试题19 选择正确的SQL语句314
面试题20 TRUNCATE TABLE
命令的作用是什么315
面试题21 如何理解BETWEEN…
AND315
面试题22 选择正确的SELECT语句315
面试题23 SQL Sever的系统数据库
是什么315
面试题24 删除数据表316
面试题25 如何声明游标316
第三篇 Java Web开发
第14章 J2EE（Java EE）和EJB 3.0技术开发318
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与组件318
面试题1 什么是J2EE320
面试题2 关于J2EE的名词解释321
14.2 EJB组件321
14.2.1 搭建EJB 3.0开发环境321
14.2.2 Session Bean（会话Bean）325
14.2.3 Message-Driven Bean
（消息驱动Bean）331
14.2.4 Entity Bean
（开发实体Bean）334
面试题3 什么是EJB335
面试题4 EJB规定禁止的操作
有哪些336
面试题5 EJB与Java Bean有什么
区别336
面试题6 EJB的类型有哪几种337
面试题7 Session Bean的分类337
面试题8 开发无状态会话Bean337
面试题9 在Entity Bean中如何与表
进行映射338
面试题10 Entity Bean中哪些方法
实现了数据同步339
面试题11 Entity Bean的分类340
面试题12 正确理解Message-
Driven Bean340
面试题13 Bean的生命周期范围341
14.3 常见的J2EE应用服务器341
面试题14 如何在WebLogic上部
署EJB341
面试题15 如何给WebLogic的内存
指定大小342
面试题16 J2EE的应用服务器
有哪些342
面试题17 persistent与non-persistent
的区别342
面试题18 在WebLogic中发布EJB
需要哪些配置文件343
面试题19 JBoss服务器监听服务
默认端口是什么343
面试题20 创建一个Enterprise Applica-
tion的同时还会创建
哪个组件343
面试题21 选出错误的操作344
面试题22 创建JDBC344
第15章 XML、UML和MVC345
在本章主要讲解一下XML和UML的基本概念和简单的使用方式以及MVC的含义。XML（eXtensible Markup Language）是由万维网协会（W3C）推出的新一代数据交换的标准，翻译成中文就是“可扩展标识语言”。UML（Unified Modeling Language）是一种建模语言，是进行需求分析和概要设计的主要工具。MVC（Model，View，Controller）是Application开发的设计模式。M是指数据模型；V是指用户界面；C则是控制器。
15.1 XML345
15.1.1 XML的基础知识345
15.1.2 XML解析模型347
面试题1 XML有哪几种解析技术353
面试题2 如何使用XML技术353
面试题3 选择正确的描述353
面试题4 在DTD中哪个元素属性
可加不可加354
面试题5 XML的组成包括几部分355
面试题6 关于对于内部DTD文档的
叙述，哪个选项是正确的355
面试题7 在DTD文档中CONTENT的
规范356
面试题8 什么是对象模型（DOM）356
15.2 UML356
面试题9 选择正确的UML类图360
面试题10 活动图强调什么361
面试题11 跨越多个用例的单个
对象的行为类型图361
面试题12 什么是用例图362
面试题13 用例之间的关系362
面试题14 表示系统行为的图
有哪些363
面试题15 用例图由哪几部分组成363
面试题16 什么是模型364
15.3 MVC364
面试题17 理解MVC设计模式365
面试题18 MVC各个部分的实现技术
及实现方法365
第16章 JSP/Servlet技术366
在Java开发中，JSP/Servlet是属于Web层技术，JSP与Servlet是一体的两面，你可以使用单独一项技术来解决动态网页呈现的需求，但最好的方式是取两者的长处，JSP是由网页设计人员导向的，而Servlet是由程式设计人员导向的，目前国内的大部分Java开发均是Java Web开发，理清它们之间的职责可以让两个不同专长的团队彼此合作，并降低相互间的牵制作用。所以，Servlet/JSP也是在Java程序员面试中必考的内容。
16.1 JSP的核心技术366
16.1.1 JSP的基本语法366
16.1.2 JSP指令367
16.1.3 JSP动作368
16.1.4 JSP内置对象370
面试题1 在浏览器中如何访问JSP
文件374
面试题2 分析代码的输出结果374
面试题3 JSP页面跳转的方式375
面试题4 JSP位于MVC模式的
哪一层375
面试题5 标签库的指令375
面试题6 <jsp:useBean>的属性376
面试题7 Page指令的属性376
面试题8 JSP的内置对象及其作用376
面试题9 JSP注释标签的语法格式377
面试题10 Page指令中属性的作用377
面试题11 Cookie的工作流程378
面试题12 静态页面和动态页面中
INCLUDE的作用
是否相同378
面试题13 JSP的动作指令379
16.2 Servlet的核心技术379
16.2.1 Servlet接口379
16.2.2 Servlet接口实现类382
16.2.3 HttpServlet对象383
16.2.4 Servlet的生命周期383
16.2.5 Servlet之间的跳转384
面试题14 Servlet的生命周期385
面试题15 Servlet的class文件放在
哪个目录下385
面试题16 ServletContext
对象的产生386
面试题17 Servlet配置中的标记386
面试题18 Servlet位于MVC模式的
哪一层387
面试题19 在Servlet生命周期中，
哪个方法只能调用一次387
面试题20 标识会话的方法387
面试题21 可以读取ServletContext对象
属性的方法是什么388
面试题22 部署时，<Servlet>标签中
可以包含哪些标签388
面试题23 Servlet中的状态码389
面试题24 在HttpServlet中，处理
请求的方法有哪些390
第四篇 算 法
第17章 常见的Java上机面试题392
上机编程考试，要求面试者能够根据题目的要求，使用一种编程工具，编写全部代码并调试运行。这主要是考查面试者代码书写和编程的熟练程度。值得注意的是，这类面试题要求能够正确运行，往往要求面试者使用比较原始的JDK编译方式也就是使用DOS命令提示符，而不是提供Eclipse或者JBuilder等快速开发环境。本章将经常出现的上机编程题进行分类，希望能够给读者带来帮助和启示。
17.1 Java基础编程试题392
面试题1 怎样截取字符串392
面试题2 怎样实现元素互换393
面试题3 怎样实现元素排序395
面试题4 怎样实现Singleton模式
编程397
面试题5 哥德巴赫猜想的近似证明398
面试题6 怎样实现金额转换400
面试题7 爱因斯坦的阶梯问题404
面试题8 如何判断回文数字405
17.2 数据库编程试题406
面试题9 根据表结构写出相应的SQL
语句406
面试题10 编写MySQL数据库的
JDBC连接407
17.3 Java高级编程试题408
面试题11 怎样用SAX解析XML408
面试题12 利用Servelt的doPost方法
实现表单内容的读取410
面试题13 编程实现Servlet的记录
访问功能411
第18章 思维与智力测试414
这类面试题对面试者提出了更高的要求。思维拓展方面的试题大体可以分为两类，一类是思维拓展编程，首先需要面试者建立编程模型，然后使用代码编程并给出答案；另一类是智力测试，考查面试者思考问题的方式方法和反应能力，不需要编程来解决问题。
18.1 思维拓展测试414
面试题1 掷骰子游戏414
面试题2 求出最大公约数416
面试题3 阶乘阶梯式的函数417
面试题4 背包问题419
面试题5 求最大的连续组合值
（华为校园招聘笔试题）421
面试题6 洗扑克牌（乱数排列）422
面试题7 巧妙过桥424
面试题8 字符移动（金山笔试题）426
面试题9 八皇后问题427
18.2 智力（IQ）测试430
面试题10 找出质量不相同的球431
面试题11 有多少人及格432
面试题12 他说的是真话吗432
面试题13 哪个开关控制哪盏灯433
面试题14 谁的存活概率最大433
面试题15 猴子分桃434
面试题16 三个女儿的年龄分别
是多少435
面试题17 哪一种是“王牌”花色435
面试题18 巧猜扑克牌436
面试题19 谁得第二名437
面试题20 计时烧绳437
面试题21 海盗分金问题437
面试题22 聪明的法官438
附录A 个人简历英文词汇速查440