网站
更多书籍点击进入>> CiCi岛
下载
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍
封页
编辑推荐
揭开知名IT企业面试、笔试的核心机密,更新了近两年多家大公司的面试题!
内容简介
本书是《Java程序员面试宝典》的第4版。第4版在保留前三版数据结构、字符串处理、Java程序设计等主干内容的基础上,更新了部分程序员面试题目,内容主要取材于2013年至2015年多家大公司的面试题,以反映第3版图书出版后近两年来所发生的变化,目的是帮助求职者在面试过程中更好地处理一些新问题,应对新变化。 本书*后着力讲述了如何进行英语面试和电话面试,并对求职中签约、违约的注意事项及群体面试进行了解析。本书的面试题除了有详细的解析外,对相关知识点也有扩展说明。希望这些内容对读者从求职就业到提升计算机专业知识有显著的帮助。
目 录
第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
6.1 传值与传引用 61
6.2 静态变量与私有变量 66
6.3 输入/输出流 68
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 构造函数和析构函数 108
9.6 复制构造函数和赋值函数 111
9.7 多态的概念 112
第10章 继承与接口 117
接口在实际语言,如Delphi、Java、C 等中,都有广义和狭义之分。
10.1 基础知识 117
10.2 super 125
10.3 this 127
10.4 不能继承的情况 132
10.5 抽象类与接口 133
第3部分 数据结构和设计模式
本部分主要介绍求职面试过程中出现的第二个重要的板块——数据结构,包括字符串的使用、堆、栈、排序方法等。此外,随着外企研发机构大量迁入我国,外企针对软件工程知识的考核,包括设计模式、UML、敏捷软件开发,以及.NET技术和完全面向对象语言C#的面试题目将会有增无减,今后设计模式在面试中的比重会进一步提高。
第11章 数据结构基础 142
面试时间一般有两个小时,其中至少有20~30分钟左右是用来回答数据结构相关的问题,链表栈、堆、数组的排序和逆置是笔试必考的内容。
11.1 堆栈 142
11.2 链表、哈希表 146
11.3 树、图 147
11.4 排序基础知识 151
第12章 字符串、数组、范型 178
求职者在进行笔试时,几乎没有不考字符串、数组和范型的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。笔者曾不止一次在笔试或面试时遇到字符串的试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。范型是Java SE 1.5的新特型,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数。这种参数类型可用在类、接口和方法的创建中,分别称为范型类、泛型接口、泛型方法。Java语言引入范型的好处是安全简单。Java范型编程也是Java程序员面试的热点之一。求职者不能忽视这些细节,因为这些细节会体现你对操作系统、软件工程、边界内存处理等方面知识的掌控能力。
12.1 字符串基础问题 178
12.2 StringBuffer 185
12.3 正则表达式 192
12.4 数字流和数组 193
12.5 字符串其他问题 199
12.6 范型与容器 202
第13章 设计模式 206
地上本没有路,走的人多了,也就成了路。设计模式如同此理,它是经验的传承,并不成体系;它是被前人发现、经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。
13.1 UML 207
13.2 常见设计模式 208
13.3 软件工程 209
第4部分 操作系统、数据库、网络
本部分主要介绍求职面试过程中出现的第三个重要的板块——操作系统、数据库、网络知识。作为一名程序员,尤其是系统管理方面的程序员,对这几部分有深刻的理解和领悟是相当重要的。
第14章 操作系统 214
操作系统面试例题主要涉及进程、线程、内存管理、垃圾回收,以及缓存等方面。
14.1 基础知识 214
14.2 进程 216
14.3 线程与串行化 218
第15章 数据库和SQL语言 231
数据库面试例题主要涉及范式、事物、存储过程、SQL语言及索引等方面。
15.1 数据库理论问题 231
15.2 SQL语言常见问题 234
第16章 计算机网络及分布式系统 239
网络面试例题主要涉及局域网、广域网和IP管理等方面。
16.1 网络结构 239
16.2 TCP/IP 242
16.3 网络其他问题 246
第5部分 Java开源
EJB组件曾经被认为是一个重量级的组件。EJB 3.0规范的重要目标就是简化EJB的开发,提供一个相对轻量级的组件方案。Spring基于轻量内核,然后通过集成第三方的服务器来提供完整的架构。
第17章 J2EE技术 256
从整体上讲,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术在不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE和适用于企业级应用的J2EE。Sun推出J2EE的目的是为了消除传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。各个平台开发商按
前 言
本书是《Java程序员面试宝典》的第4版,同时也是《程序员面试宝典》的姊妹书。
第4版在保留前三版数据结构、字符串处理、Java程序设计等主干内容的基础上,更新了部分程序员面试题目,内容主要取材于2013年至2015年多家大公司的面试题,以反映第3版图书出版后近两年来所发生的变化,目的是帮助求职者在面试过程中更好地处理一些新问题,应对新变化。
本书相对上一版的变化主要有以下三点。
1.智力测试这一章进行了分解,扩展增加一些数字类题目、图表类题目,并修正合并了一些内容,以更好地帮助求职者应对求职过程中出现的一些细节和麻烦。
2.针对程序设计这一部分,我们更新了部分例题。随着互联网相关面试题的频繁出现,我们新增并更新了如下知识点:构造函数、Java接口类型、Trie树、图的遍历、动态规划算法。采用循序渐进的办法,将重要概念加以复习,完善解题思路,而不是仅仅给出答案。
3.针对近两年面试过程中出现的新题型,本书补充了新的章节,如操作系统的线程管理问题、哈希表问题等。与第三版相比较,更加贴近市场的变化,更加与时俱进。
注:以前各个版本替换下的题目将保留在作者博客,读者可以访问以下网址获取。
http://www.cnblogs.com/programmerinterview/
就编程而言,虽然Java和C 大相径庭,但在更加有趣的语言后面的知识是设计模式、分析模式、求职解答、算法策略、信息化……也就是说,本书追求的是程序员求职背后的一些知识,即对于技术的本质理解。所以本书虽命名为“Java程序员面试宝典”,但不仅限于对Java技术的单纯讲解。因为只有这样,求职者才能不被语言所羁绊;而对于一个企业而言,除了看中求职者对语言的熟练程度,更看重工作经验、大局观和整体架构等超脱语言的知识。
本书采用一种问询式的结构。这样不仅言简意赅、平易近人,而且可以容纳更多的题目,真正达到“宝典”之效用。但本书又不仅仅作为一个题库出现,对一个类型的问题不简单加以重复。本书采用循序渐进的办法:(1)将重要概念加以复习;(2)完善解题思路,而不是仅仅给出答案;(3)给出完整可靠的答案,如果是可以验证的,要给出验证的结果;(4)综合几种解题方案,给出解;(5)触类旁通,给出语言背后的算法本质性解释。本书的解题思路不仅能够让读者知道什么是正确的解决方案,而且让读者明白怎样能获得方案。
本书不同于其他Java程序书籍的主要特点如下。
细
中国软件企业的规模比较小,面试涉及的方面比较多,且比较基础,比如常会考一些编程基础性的题,而原有的面试书籍对此方面鲜有触及。本书把国内公司面试时易考到的基础考点,放在Java基础程序设计里面,希望能切切实实解决地实际面试问题。
深
面试题通过一道题考一个专类方面的能力。说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四个方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质,至少能了解应试者所掌握类的水平。市面上流行的面试书籍在此专业性的分类方面做得不够,正因为如此,本书中追求的是程序员求职背后的一些知识:对于技术的本质理解,而不仅限于对Java技术的单纯讲解。
广
本书包括但不仅仅限于Java程序员面试试题,对求职市场面试试题做了妥善分类后,将面试对象分为软件开发人员、网络工程师、测试工程师和系统管理员。实际上,市面上流行的面试书籍仅对软件开发人员比较侧重,而忽略网络工程师和测试工程师,本书就这一方面给出了详细论断,并结合大量考题分析题目特点给出应试方案。本书在这些方面做出了改进,以适应市场需求。
同时本书对外企经常考到的UML及设计模式内容也做了深入的分析,从本质上诠释面试的真谛。
真
第四版在保留原书主干内容的基础上,内容非常新,可以算作面试者求职前的一份全真模拟。同时作者将求职中的细节问题(简历,招聘,签约,违约),以及笔试、面试中的感悟融入书中,给求职者以真切的人文关怀。真情实感,娓娓道来,指引读者走上理想的工作岗位。
本书不是一本**书籍,但肯定是您工作与求职的好助手、好伙伴!
本书主要由欧立奇编著,其他参与编写的人员有朱梅、段韬、秦晓东、李启高、马雪、胥虎军、马煜、刘洋、李富星等。
编著者