书籍详情
Java程序员面试宝典(第三版)
作者:欧立奇,朱梅,段韬 编著
出版社:电子工业出版社
出版时间:2013-09-01
ISBN:9787121213137
定价:¥49.00
购买这本书可以去
内容简介
本书是《Java 程序员面试宝典》的第三版。第三版在保留第二版数据结构、字符串处理、Java程序设计等主干内容的基础上,更新了部分程序员面试题目,内容主要取材于2011 年至2013 年多家大公司的面试题,以反映第二版图书出版后近两年来所发生的变化,目的是帮助求职者在面试过程中更好地处理一些新问题,应对新变化。本书最后着力讲述了如何进行英语面试和电话面试,并对求职中签约、毁约的注意事项及群体面试进行了解析。本书的面试题除了有详细的解析外,对相关知识点也有扩展说明。希望这些内容对读者从求职就业到提升计算机专业知识有显著的帮助。本书适合(但不限于)将要找工作的程序员、高校计算机类应届毕业生,以及其他计算机爱好者阅读。
作者简介
欧立奇 国际商业机器有限公司大中华区高级软件工程师,对程序员笔试、面试、智力测试有着多年深入广泛地研究。除本书外,还著有《程序员面试宝典》,《IT求职宝典》等。
目录
第1 部分 求职过程
古人云:凡事预则立,不预则废。机会都是垂青有准备的人。为了得到一份满意的工作,求职者一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事情做完,即便有计划外的事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。
第1 章 应聘求职..................................................................................................................2
每年的9 月到次年的1 月,都是应届毕业生求职、在职人员跳槽的高峰期。对于即将成为程序员的应届毕业生们,在求职过程中怎样确定目标公司和目标职位?对于已经是程序员的跳槽大军,是按照技术路线发展自己的职业生涯,还是走向管理岗位继续自己的职业道路,或者是改变自己的发展轨迹?在求职过程中要注意哪些细节?这些都是求职者所关心的话题。
1.1 应聘渠道.............................................................................................................2
1.2 应聘流程.............................................................................................................3
第2 章 简历书写..................................................................................................................4
据统计,80%的简历都是不合格的。不少人事管理者抱怨收到的许多简历在格式上很糟糕。简历应该如何做到在格式上简洁明了,重点突出?求职信应该如何有足够的内容推销自己?如何控制长度,言简意赅?相信读了本章你会对简历的撰写有一个新的认识。
2.1 书写简历注意事项.............................................................................................4
2.2 简历模板.............................................................................................................6
第3 章 求职五步曲............................................................................................................10
笔试、电话面试和面试是顺利求职的三个过程。三关全过才能顺利签约,只要有一关没能通过,就会被“刷”掉。除此之外,签约本身又何尝不是一个重要的考试?涉及你的未来、人生、行业甚至家庭。当然有签约就有可能会有违约,真希望你们不必走第五步,但是这个世界毕竟不是童话。
3.1 笔试...................................................................................................................10
3.2 电话面试...........................................................................................................12
3.3 面试...................................................................................................................13
3.4 签约...................................................................................................................14
3.5 违约...................................................................................................................18
第4 章 职业生涯发展规划................................................................................................20
在一般情况下,我们工作一年之后,对自己的喜好及擅长都有了更加深刻的了解,这时会有较为明确的职业发展规划。
4.1 缺乏工作经验的应届毕业生...........................................................................20
4.2 更换工作的程序员们.......................................................................................22
4.3 快乐地工作.......................................................................................................23
第2 部分 Java 程序设计
本部分主要以Java 设计语言为基础,通过大量实际的例子分析各大公司Java 面试题目,从技术上分析面试题的内涵。一般公司的面试题都是两套——C++或Java,面试者可以选择。
第5 章 Java 程序设计基本概念........................................................................................28
对于一个求职者或者应届毕业生来说,公司除了对项目经验有所问询之外,最好的考试办法就是检查基本功,包括编程风格,以及对赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。当然,在考试之前最好对自己所掌握的程序概念知识有所了解,尤其是对各种细致的考点要加以重视。本章考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。
5.1 JVM...................................................................................................................28
5.2 i++.....................................................................................................................34
5.3 类型转换...........................................................................................................37
5.4 程序结构...........................................................................................................41
5.5 运算符...............................................................................................................42
5.6 异常...................................................................................................................47
5.7 反射...................................................................................................................59
第6 章 传递与引用............................................................................................................61
Java 语言明确说明取消了指针,因为指针往往是在带来方便的同时导致代码不安全的根源,而且还会使程序变得非常复杂和难以理解,滥用指针写成的代码不亚于使用早已“臭名昭著”的GOTO 语句。Java 放弃指针的概念绝对是极其明智的。但这只是在Java 语言中没有明确的指针定义,实质上,每一个new 语句返回的都是一个指针的引用,只不过在大多数时候Java 不用关心如何操作这个“指针”,更不用像在操作C++的指针那样胆战心惊,唯一要多注意的是在给函数传递对象的时候。
6.1 传值与传引用...................................................................................................61
6.2 静态变量与私有变量.......................................................................................66
6.3 输入/输出流......................................................................................................67
6.4 序列化...............................................................................................................71
第7 章 循环、条件、概率................................................................................................73
递归过程的执行总是一个过程体未执行完,就带着本次执行的结果又进入另一轮过程体的执行……如此反复,不断深入,直到某次过程的执行遇到终止递归调用的条件成立时,则不再深入,而执行本次的过程体余下的部分,然后又返回到上一次调用的过程体中,执行其余下的部分……如此反复,直到回到起始位置上,才最终结束整个递归过程的执行,得到相应的执行结果。递归过程的程序设计的核心就是参照这种执行流程,设计出一种适合“逐步深入,而后又逐步返回”的递归调用模型,以解决实际的面试例题。
7.1 典型递归问题...................................................................................................73
7.2 循环与条件.......................................................................................................78
第8 章 Java 内存管理........................................................................................................84
内存管理太重要了,花费多少口舌介绍它都不过分。笔者曾经见到这样一句话:“C++程序员觉得内存管理太重要了,所以一定要自己进行管理;Java/C#程序员觉得内存管理太重要了,所以一定不能自己去管理。”从某种意义上说,两者都是对的。面试中内存管理涉及堆、栈、哈希表、内存泄漏等方面。
8.1 垃圾收集...........................................................................................................84
8.2 内存管理...........................................................................................................88
8.3 clone..................................................................................................................92
第9 章 面向对象................................................................................................................95
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看做是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心、以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为“程序=算法+数据”;面向对象编程语言为“程序=对象+消息”。
9.1 面向对象的基本概念.......................................................................................96
9.2 类和对象...........................................................................................................98
9.3 嵌套类.............................................................................................................101
9.4 集合类.............................................................................................................102
9.5 构造函数和析构函数.....................................................................................107
9.6 复制构造函数和赋值函数............................................................................. 111
9.7 多态的概念.....................................................................................................112
第10 章 继承与接口........................................................................................................116
接口在实际语言,如Delphi、Java、C++等中,都有广义和狭义之分。
10.1 基础知识.......................................................................................................116
10.2 Super .............................................................................................................124
10.3 this.................................................................................................................126
10.4 不能继承的情况...........................................................................................130
10.5 抽象类与接口...............................................................................................131
第3 部分 数据结构和设计模式
本部分主要介绍求职面试过程中出现的第二个重要的板块——数据结构,包括字符串的使用、堆、栈、排序方法等。此外,随着外企研发机构大量迁入我国,外企针对软件工程知识的考核,包括设计模式、UML、敏捷软件开发,以及.NET 技术和完全面向对象语言C#的面试题目将会有增无减,今后设计模式在面试中的比重会进一步提高。
第11 章 数据结构基础....................................................................................................138
面试时间一般有两个小时,其中至少有20~30 分钟左右是用来回答数据结构相关的问题,链表栈、堆、数组的排序和逆置是笔试必考的内容。
11.1 堆栈...............................................................................................................138
11.2 链表、哈希表...............................................................................................141
11.3 树、图...........................................................................................................143
11.4 排序基础知识...............................................................................................146
第12 章 字符串、数组、范型........................................................................................173
求职者在进行笔试时,几乎没有不考字符串、数组和范型的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。笔者曾不止一次在笔试或面试时遇到字符串的试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。范型是Java SE 1.5 的新特型,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数。这种参数类型可用在类、接口和方法的创建中,分别称为范型类、泛型接口、泛型方法。Java 语言引入范型的好处是安全简单。Java 范型编程也是Java 程序员面试的热点之一。求职者不能忽视这些细节,因为这些细节会体现你对操作系统、软件工程、边界内存处理等方面知识的掌控能力。
12.1 字符串基础问题...........................................................................................173
12.2 StringBuffer...................................................................................................181
12.3 正则表达式...................................................................................................188
12.4 数字流和数组...............................................................................................189
12.5 字符串其他问题...........................................................................................194
12.6 范型与容器...................................................................................................198
第13 章 设计模式............................................................................................................202
地上本没有路,走的人多了,也就成了路。设计模式如同此理,它是经验的传承,并不成体系;它是被前人发现、经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。
13.1 UML..............................................................................................................203
13.2 常见设计模式...............................................................................................204
13.3 软件工程.......................................................................................................205
第4 部分 操作系统、数据库、网络
本部分主要介绍求职面试过程中出现的第三个重要的板块——操作系统、数据库、网络知识。作为一名程序员,尤其是系统管理方面的程序员,对这几部分有深刻的理解和领悟是相当重要的。
第14 章 操作系统............................................................................................................210
操作系统面试例题主要涉及进程、线程、内存管理、垃圾回收,以及缓存等方面。
14.1 基础知识.......................................................................................................210
14.2 进程...............................................................................................................212
14.3 线程与串行化...............................................................................................214
第15 章 数据库和SQL 语言..........................................................................................226
数据库面试例题主要涉及范式、事物、存储过程、SQL 语言及索引等方面。
15.1 数据库理论问题...........................................................................................226
15.2 SQL 语言常见问题......................................................................................229
第16 章 计算机网络及分布式系统................................................................................234
网络面试例题主要涉及局域网、广域网和IP 管理等方面。
16.1 网络结构.......................................................................................................234
16.2 TCP/IP...........................................................................................................237
16.3 网络其他问题...............................................................................................241
第5 部分 Java 开源
EJB 组件曾经被认为是一个重量级的组件。EJB 3.0 规范的重要目标就是简化EJB 的开发,提供一个相对轻量级的组件方案。Spring 基于轻量内核,然后通过集成第三方的服务器来提供完整的架构。
第17 章 J2EE 技术..........................................................................................................250
从整体上讲,J2EE 是使用Java 技术开发企业级应用的一种事实上的工业标准(Sun 公司出于其自身利益的考虑,至今没有将Java 及其相关技术纳入标准化组织的体系),它是Java技术在不断适应和促进企业级应用过程中的产物。目前,Java 平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE 和适用于企业级应用的J2EE。Sun 推出J2EE 的目的是为了消除传统Client/Server 模式的弊病,迎合Browser/Server 架构的潮流,为应用Java 技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE 规范分别开发了不同的J2EE 应用服务器,J2EE 应用服务器是J2EE 企业级应用的部署平台。由于它们都遵循了J2EE 规范,因此,使用J2EE 技术开发的企业级应用可以部署在各种J2EE应用服务器上。
17.1 Spring 轻量级架构.......................................................................................250
17.2 Hibernate.......................................................................................................252
17.3 EJB................................................................................................................260
17.4 JDBC.............................................................................................................264
17.5 JDO ...............................................................................................................272
第18 章 Java 中的Web 设计..........................................................................................274
关于Web 设计的面试题目,涉及Session、Servlet、JSP、Javascript 和XML 等方面。本章的考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。
18.1 JSP.................................................................................................................274
18.2 Servlet ...........................................................................................................276
18.3 JavaScript ......................................................................................................280
18.4 XML..............................................................................................................281
18.5 APPLET........................................................................................................284
第19 章 Struts 结构设计.................................................................................................285
Struts 与Tomcat、Turbine 等诸多Apache 项目一样,是开源软件,这是它的一大优点,使开发者能更深入地了解其内部实现机制。除此之外,Struts 的优点主要集中体现在两个方面:TagLib 和页面导航。TagLib 是Struts 的标记库,灵活运用能大大提高开发效率。页面导航使系统的脉络更加清晰,通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处,尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
19.1 AWT..............................................................................................................285
19.2 Struts 体系结构............................................................................................287
第20 章 Java 架构技术及相关中间件............................................................................290
在软件开发的过程中,人们越来越意识到软件重用的重要性。异构的系统、不同的实现方案使软件的重用变得复杂。在中间件产生以前,应用软件不得不直接面对非常底层的东西。不同的硬件体系、不同的操作系统、不同的网络协议和不同的数据库等,这些使得应用程序复杂多变。面对易变的东西,软件设计师们已经习惯于通过添加中间层的方式来隔离变化。把应用软件所要面临的共性问题进行提炼、抽象,在操作系统中添加一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件。一方面,中间件要应对底层不同的环境,针对不同的环境进行不同的调用;另一方面,中间件要对上层提供统一的接口,保证在不同的环境中为上层提供相同行为的服务。具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,大大减少了技术上的负担。
20.1 WebLogic ......................................................................................................291
20.2 WebSphere ....................................................................................................294
20.3 WebService ...................................................................................................294
第21 章 Java 测试............................................................................................................296
软件测试在软件质量安全控制上的地位不可替代。美国的软件企业将40%的工作量花在软件测试上,测试费用占项目总费用的30%~50%。如微软Windows 2000 团队动用的测试人员比项目经理和开发人员的总和还要多。之所以如此重视软件测试,是因为通过必要的测试,软件缺陷数可至少降低75%,而软件的投资回报率能达到350%。
21.1 白盒测试.......................................................................................................296
21.2 性能测试.......................................................................................................301
21.3 游戏...............................................................................................................305
第6 部分 综合面试题
本部分主要介绍求职面试过程中出现的第五个重要的板块——英语面试、电话面试和智力测试。其中,英语面试不同于普通的英语面试。就一个程序员而言,最好能够用英文流利地介绍自己的求职经历,这是进外企非常重要的一步。此外,还必须对几个常用的问题准备好相关的解答,比如你最大的缺点是什么。有些问题即便是用中文,你都很难回答,更何况是用英文去回答。但是求职过程本身就是一个准备的过程,精心地准备,等待机会——机会总是垂青于那些精心准备的人。
第22 章 英语面试............................................................................................................310
如果你是一个具有战略眼光,且期待进入国际性跨国大企业的求职者,本章值得你仔细研读。
22.1 面试过程和技巧...........................................................................................310
22.2 关于工作(About Job) ..............................................................................312
22.3 关于个人(About Person).........................................................................315
22.4 关于未来(About Future) .........................................................................317
第23 章 电话面试............................................................................................................321
求职时,经常会遭遇电话面试,戏称“触电”。笔者曾经在开会、洗澡、吃饭、坐车时都接到过电话。问的问题也是五花八门,千奇百怪。
23.1 电话面试之前的准备工作...........................................................................321
23.2 电话面试交流常见问题...............................................................................322
第24 章 数字类题目分析................................................................................................331
24.1 数字规律类题目...........................................................................................331
24.2 数字填充类题目...........................................................................................334
24.3 数字运算类题目...........................................................................................335
24.4 应用数学类题目...........................................................................................337
第25 章 图表类题目分析................................................................................................344
25.1 图形变换类题目...........................................................................................344
25.2 表格分析类题目...........................................................................................351
第26 章 智力类题目分析................................................................................................353
26.1 推理类题目...................................................................................................353
26.2 博弈论...........................................................................................................355
26.3 概率...............................................................................................................357
古人云:凡事预则立,不预则废。机会都是垂青有准备的人。为了得到一份满意的工作,求职者一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事情做完,即便有计划外的事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。
第1 章 应聘求职..................................................................................................................2
每年的9 月到次年的1 月,都是应届毕业生求职、在职人员跳槽的高峰期。对于即将成为程序员的应届毕业生们,在求职过程中怎样确定目标公司和目标职位?对于已经是程序员的跳槽大军,是按照技术路线发展自己的职业生涯,还是走向管理岗位继续自己的职业道路,或者是改变自己的发展轨迹?在求职过程中要注意哪些细节?这些都是求职者所关心的话题。
1.1 应聘渠道.............................................................................................................2
1.2 应聘流程.............................................................................................................3
第2 章 简历书写..................................................................................................................4
据统计,80%的简历都是不合格的。不少人事管理者抱怨收到的许多简历在格式上很糟糕。简历应该如何做到在格式上简洁明了,重点突出?求职信应该如何有足够的内容推销自己?如何控制长度,言简意赅?相信读了本章你会对简历的撰写有一个新的认识。
2.1 书写简历注意事项.............................................................................................4
2.2 简历模板.............................................................................................................6
第3 章 求职五步曲............................................................................................................10
笔试、电话面试和面试是顺利求职的三个过程。三关全过才能顺利签约,只要有一关没能通过,就会被“刷”掉。除此之外,签约本身又何尝不是一个重要的考试?涉及你的未来、人生、行业甚至家庭。当然有签约就有可能会有违约,真希望你们不必走第五步,但是这个世界毕竟不是童话。
3.1 笔试...................................................................................................................10
3.2 电话面试...........................................................................................................12
3.3 面试...................................................................................................................13
3.4 签约...................................................................................................................14
3.5 违约...................................................................................................................18
第4 章 职业生涯发展规划................................................................................................20
在一般情况下,我们工作一年之后,对自己的喜好及擅长都有了更加深刻的了解,这时会有较为明确的职业发展规划。
4.1 缺乏工作经验的应届毕业生...........................................................................20
4.2 更换工作的程序员们.......................................................................................22
4.3 快乐地工作.......................................................................................................23
第2 部分 Java 程序设计
本部分主要以Java 设计语言为基础,通过大量实际的例子分析各大公司Java 面试题目,从技术上分析面试题的内涵。一般公司的面试题都是两套——C++或Java,面试者可以选择。
第5 章 Java 程序设计基本概念........................................................................................28
对于一个求职者或者应届毕业生来说,公司除了对项目经验有所问询之外,最好的考试办法就是检查基本功,包括编程风格,以及对赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。当然,在考试之前最好对自己所掌握的程序概念知识有所了解,尤其是对各种细致的考点要加以重视。本章考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。
5.1 JVM...................................................................................................................28
5.2 i++.....................................................................................................................34
5.3 类型转换...........................................................................................................37
5.4 程序结构...........................................................................................................41
5.5 运算符...............................................................................................................42
5.6 异常...................................................................................................................47
5.7 反射...................................................................................................................59
第6 章 传递与引用............................................................................................................61
Java 语言明确说明取消了指针,因为指针往往是在带来方便的同时导致代码不安全的根源,而且还会使程序变得非常复杂和难以理解,滥用指针写成的代码不亚于使用早已“臭名昭著”的GOTO 语句。Java 放弃指针的概念绝对是极其明智的。但这只是在Java 语言中没有明确的指针定义,实质上,每一个new 语句返回的都是一个指针的引用,只不过在大多数时候Java 不用关心如何操作这个“指针”,更不用像在操作C++的指针那样胆战心惊,唯一要多注意的是在给函数传递对象的时候。
6.1 传值与传引用...................................................................................................61
6.2 静态变量与私有变量.......................................................................................66
6.3 输入/输出流......................................................................................................67
6.4 序列化...............................................................................................................71
第7 章 循环、条件、概率................................................................................................73
递归过程的执行总是一个过程体未执行完,就带着本次执行的结果又进入另一轮过程体的执行……如此反复,不断深入,直到某次过程的执行遇到终止递归调用的条件成立时,则不再深入,而执行本次的过程体余下的部分,然后又返回到上一次调用的过程体中,执行其余下的部分……如此反复,直到回到起始位置上,才最终结束整个递归过程的执行,得到相应的执行结果。递归过程的程序设计的核心就是参照这种执行流程,设计出一种适合“逐步深入,而后又逐步返回”的递归调用模型,以解决实际的面试例题。
7.1 典型递归问题...................................................................................................73
7.2 循环与条件.......................................................................................................78
第8 章 Java 内存管理........................................................................................................84
内存管理太重要了,花费多少口舌介绍它都不过分。笔者曾经见到这样一句话:“C++程序员觉得内存管理太重要了,所以一定要自己进行管理;Java/C#程序员觉得内存管理太重要了,所以一定不能自己去管理。”从某种意义上说,两者都是对的。面试中内存管理涉及堆、栈、哈希表、内存泄漏等方面。
8.1 垃圾收集...........................................................................................................84
8.2 内存管理...........................................................................................................88
8.3 clone..................................................................................................................92
第9 章 面向对象................................................................................................................95
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看做是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心、以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为“程序=算法+数据”;面向对象编程语言为“程序=对象+消息”。
9.1 面向对象的基本概念.......................................................................................96
9.2 类和对象...........................................................................................................98
9.3 嵌套类.............................................................................................................101
9.4 集合类.............................................................................................................102
9.5 构造函数和析构函数.....................................................................................107
9.6 复制构造函数和赋值函数............................................................................. 111
9.7 多态的概念.....................................................................................................112
第10 章 继承与接口........................................................................................................116
接口在实际语言,如Delphi、Java、C++等中,都有广义和狭义之分。
10.1 基础知识.......................................................................................................116
10.2 Super .............................................................................................................124
10.3 this.................................................................................................................126
10.4 不能继承的情况...........................................................................................130
10.5 抽象类与接口...............................................................................................131
第3 部分 数据结构和设计模式
本部分主要介绍求职面试过程中出现的第二个重要的板块——数据结构,包括字符串的使用、堆、栈、排序方法等。此外,随着外企研发机构大量迁入我国,外企针对软件工程知识的考核,包括设计模式、UML、敏捷软件开发,以及.NET 技术和完全面向对象语言C#的面试题目将会有增无减,今后设计模式在面试中的比重会进一步提高。
第11 章 数据结构基础....................................................................................................138
面试时间一般有两个小时,其中至少有20~30 分钟左右是用来回答数据结构相关的问题,链表栈、堆、数组的排序和逆置是笔试必考的内容。
11.1 堆栈...............................................................................................................138
11.2 链表、哈希表...............................................................................................141
11.3 树、图...........................................................................................................143
11.4 排序基础知识...............................................................................................146
第12 章 字符串、数组、范型........................................................................................173
求职者在进行笔试时,几乎没有不考字符串、数组和范型的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。笔者曾不止一次在笔试或面试时遇到字符串的试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。范型是Java SE 1.5 的新特型,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数。这种参数类型可用在类、接口和方法的创建中,分别称为范型类、泛型接口、泛型方法。Java 语言引入范型的好处是安全简单。Java 范型编程也是Java 程序员面试的热点之一。求职者不能忽视这些细节,因为这些细节会体现你对操作系统、软件工程、边界内存处理等方面知识的掌控能力。
12.1 字符串基础问题...........................................................................................173
12.2 StringBuffer...................................................................................................181
12.3 正则表达式...................................................................................................188
12.4 数字流和数组...............................................................................................189
12.5 字符串其他问题...........................................................................................194
12.6 范型与容器...................................................................................................198
第13 章 设计模式............................................................................................................202
地上本没有路,走的人多了,也就成了路。设计模式如同此理,它是经验的传承,并不成体系;它是被前人发现、经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。
13.1 UML..............................................................................................................203
13.2 常见设计模式...............................................................................................204
13.3 软件工程.......................................................................................................205
第4 部分 操作系统、数据库、网络
本部分主要介绍求职面试过程中出现的第三个重要的板块——操作系统、数据库、网络知识。作为一名程序员,尤其是系统管理方面的程序员,对这几部分有深刻的理解和领悟是相当重要的。
第14 章 操作系统............................................................................................................210
操作系统面试例题主要涉及进程、线程、内存管理、垃圾回收,以及缓存等方面。
14.1 基础知识.......................................................................................................210
14.2 进程...............................................................................................................212
14.3 线程与串行化...............................................................................................214
第15 章 数据库和SQL 语言..........................................................................................226
数据库面试例题主要涉及范式、事物、存储过程、SQL 语言及索引等方面。
15.1 数据库理论问题...........................................................................................226
15.2 SQL 语言常见问题......................................................................................229
第16 章 计算机网络及分布式系统................................................................................234
网络面试例题主要涉及局域网、广域网和IP 管理等方面。
16.1 网络结构.......................................................................................................234
16.2 TCP/IP...........................................................................................................237
16.3 网络其他问题...............................................................................................241
第5 部分 Java 开源
EJB 组件曾经被认为是一个重量级的组件。EJB 3.0 规范的重要目标就是简化EJB 的开发,提供一个相对轻量级的组件方案。Spring 基于轻量内核,然后通过集成第三方的服务器来提供完整的架构。
第17 章 J2EE 技术..........................................................................................................250
从整体上讲,J2EE 是使用Java 技术开发企业级应用的一种事实上的工业标准(Sun 公司出于其自身利益的考虑,至今没有将Java 及其相关技术纳入标准化组织的体系),它是Java技术在不断适应和促进企业级应用过程中的产物。目前,Java 平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE 和适用于企业级应用的J2EE。Sun 推出J2EE 的目的是为了消除传统Client/Server 模式的弊病,迎合Browser/Server 架构的潮流,为应用Java 技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE 规范分别开发了不同的J2EE 应用服务器,J2EE 应用服务器是J2EE 企业级应用的部署平台。由于它们都遵循了J2EE 规范,因此,使用J2EE 技术开发的企业级应用可以部署在各种J2EE应用服务器上。
17.1 Spring 轻量级架构.......................................................................................250
17.2 Hibernate.......................................................................................................252
17.3 EJB................................................................................................................260
17.4 JDBC.............................................................................................................264
17.5 JDO ...............................................................................................................272
第18 章 Java 中的Web 设计..........................................................................................274
关于Web 设计的面试题目,涉及Session、Servlet、JSP、Javascript 和XML 等方面。本章的考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。
18.1 JSP.................................................................................................................274
18.2 Servlet ...........................................................................................................276
18.3 JavaScript ......................................................................................................280
18.4 XML..............................................................................................................281
18.5 APPLET........................................................................................................284
第19 章 Struts 结构设计.................................................................................................285
Struts 与Tomcat、Turbine 等诸多Apache 项目一样,是开源软件,这是它的一大优点,使开发者能更深入地了解其内部实现机制。除此之外,Struts 的优点主要集中体现在两个方面:TagLib 和页面导航。TagLib 是Struts 的标记库,灵活运用能大大提高开发效率。页面导航使系统的脉络更加清晰,通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处,尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
19.1 AWT..............................................................................................................285
19.2 Struts 体系结构............................................................................................287
第20 章 Java 架构技术及相关中间件............................................................................290
在软件开发的过程中,人们越来越意识到软件重用的重要性。异构的系统、不同的实现方案使软件的重用变得复杂。在中间件产生以前,应用软件不得不直接面对非常底层的东西。不同的硬件体系、不同的操作系统、不同的网络协议和不同的数据库等,这些使得应用程序复杂多变。面对易变的东西,软件设计师们已经习惯于通过添加中间层的方式来隔离变化。把应用软件所要面临的共性问题进行提炼、抽象,在操作系统中添加一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件。一方面,中间件要应对底层不同的环境,针对不同的环境进行不同的调用;另一方面,中间件要对上层提供统一的接口,保证在不同的环境中为上层提供相同行为的服务。具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,大大减少了技术上的负担。
20.1 WebLogic ......................................................................................................291
20.2 WebSphere ....................................................................................................294
20.3 WebService ...................................................................................................294
第21 章 Java 测试............................................................................................................296
软件测试在软件质量安全控制上的地位不可替代。美国的软件企业将40%的工作量花在软件测试上,测试费用占项目总费用的30%~50%。如微软Windows 2000 团队动用的测试人员比项目经理和开发人员的总和还要多。之所以如此重视软件测试,是因为通过必要的测试,软件缺陷数可至少降低75%,而软件的投资回报率能达到350%。
21.1 白盒测试.......................................................................................................296
21.2 性能测试.......................................................................................................301
21.3 游戏...............................................................................................................305
第6 部分 综合面试题
本部分主要介绍求职面试过程中出现的第五个重要的板块——英语面试、电话面试和智力测试。其中,英语面试不同于普通的英语面试。就一个程序员而言,最好能够用英文流利地介绍自己的求职经历,这是进外企非常重要的一步。此外,还必须对几个常用的问题准备好相关的解答,比如你最大的缺点是什么。有些问题即便是用中文,你都很难回答,更何况是用英文去回答。但是求职过程本身就是一个准备的过程,精心地准备,等待机会——机会总是垂青于那些精心准备的人。
第22 章 英语面试............................................................................................................310
如果你是一个具有战略眼光,且期待进入国际性跨国大企业的求职者,本章值得你仔细研读。
22.1 面试过程和技巧...........................................................................................310
22.2 关于工作(About Job) ..............................................................................312
22.3 关于个人(About Person).........................................................................315
22.4 关于未来(About Future) .........................................................................317
第23 章 电话面试............................................................................................................321
求职时,经常会遭遇电话面试,戏称“触电”。笔者曾经在开会、洗澡、吃饭、坐车时都接到过电话。问的问题也是五花八门,千奇百怪。
23.1 电话面试之前的准备工作...........................................................................321
23.2 电话面试交流常见问题...............................................................................322
第24 章 数字类题目分析................................................................................................331
24.1 数字规律类题目...........................................................................................331
24.2 数字填充类题目...........................................................................................334
24.3 数字运算类题目...........................................................................................335
24.4 应用数学类题目...........................................................................................337
第25 章 图表类题目分析................................................................................................344
25.1 图形变换类题目...........................................................................................344
25.2 表格分析类题目...........................................................................................351
第26 章 智力类题目分析................................................................................................353
26.1 推理类题目...................................................................................................353
26.2 博弈论...........................................................................................................355
26.3 概率...............................................................................................................357
猜您喜欢