前言
前 言
有人会认为面试很难对付,因为面试是一个一对一的考察技术能力的过程。
这本书是准备找工作的Java面试者的***指南。本书提供了足够多的练习材料,让你有足够的信心面对可能会被问到的问题,因此可以帮助你克服Java编程面试过程中的恐惧和担忧。
本书介绍的技术
本书是基于Java SE 7编写的。如果你是一位有经验的Java开发者,但是还没有跟上Java 7的步伐,那么可以在本书中学习以下新的语言特性和API库。
钻石操作符
编译器会尽可能地推导出泛型实例的类型。因此,我们可以编写Listnumbers = new ArrayList<>()这样的语句,而不用编写Listnumbers = new ArrayList()这样的语句。这样在使用集合时,特别是在集合嵌套集合时,可以大大减少样板化代码的量。
在switch语句中使用String
初的Java switch语句只能处理数值类型。随着Java 5引入了枚举类型,在switch语句中还可以使用枚举类型。现在从Java 7开始,在switch语句中可以使用String对象。
新的文件I/O库
Java 7引入了一个新的I/O库,关注的是平台无关的非阻塞I/O。
此外,Java 7还引入了很多新特性,例如自动资源管理和二进制字面量的表示形式。本书全书使用Java 7。可以认为,面试官会使用的Java技术来进行考察,因此随着语言的新版本的发布,你也应该让自己的技能跟上时代的步伐。
有一些Java框架和库还没有完全兼容Java 7,因此在使用具体组件时请查阅的文档。
本书的组织结构
全书分为以下3个独立的部分。
第Ⅰ部分:面试流程概述
关于面试流程的章节包含两方面的内容:一方面是如何向面试官表现自己,另一方面是一些和Java无关但是可能会出现在技术面试中的一般性技术话题。
第1章:面试类型分析
该章介绍了雇主的招聘流程中的各个步骤,从电话面试到面对面的技术测试,再到和招聘经理的面谈。
第2章:撰写引人入胜的简历
简历及其附信是下一任雇主对你产生的印象。该章讨论了如何让你的简历脱颖而出,给出了语言相关的一些小建议和招聘者会关注的一些问题。
第3章:技术测试和面试基础知识
任何潜在的雇主都会考察你的技术能力,而且会采用尽可能高效的方式。该章讨论了各种不同类型的编程测试和技术测试,并讨论了如何准备这些类型的测试。
第4章:编写核心算法
计算机科学的核心概念是技术测试中经常会考察的内容,其中包含排序和搜索。该章给出了一些不同的搜索和排序算法,并讨论了每一种方法的优劣。
第5章:数据结构
在面试中,计算机科学核心概念的相关问题除了排序和搜索之外,常见的主题就是数据的高效存储和表达。第5章讨论了列表、树、映射和集合等数据结构,讨论了这些数据结构的表达和使用。
第6章:设计模式
该章涵盖了一些面向对象的设计模式,还展示了Java库中的类使用的一些模式。
第7章:常见面试算法的实现
该章给出了一些常见的面试题,并用Java实现了这些题目的解答。本章很多题目都来自于一个很流行的技术面试网站interviewzen.com。
第Ⅱ部分:核心Java
这一部分章节的内容是面试官认为有经验的Java开发候选人应该了解的内容。
第8章:Java基础
该章覆盖了Java的很多语言特性,有经验的Java开发者可以利用该章复习基础知识。
第9章:基于JUnit的测试
本书使用的一个核心思想是单元测试。该章介绍了JUnit,并讲解了如何通过JUnit验证假设和断言。
第10章:理解Java虚拟机
任何有能力的开发者都会对自己使用的平台有一定的理解,Java也不例外。该章介绍了JVM的一些特性,以及JVM和Java语言之间的交互。
第11章:并发
该章讨论了Java的线程模型及使用方法。该章还介绍了actor模型,它是并发编程采用的一种新方法。
第Ⅲ部分:组件和框架
这一部分讨论了一些使用Java的领域,从数据库到Web服务,从流行的框架(例如,Hibernate和Spring)到构建和发布企业级应用的工具。在面试某个具体职位时,面试官可能希望你具有这些章节所介绍的一些相关知识,而这些知识通常都会在工作描述中列出,也许你一开始就是因为看到了工作描述才去应聘这份工作。
第12章:Java应用程序和数据库的整合
很多大型Java应用程序都会包含数据库组件。该章介绍了数据库操作的标准语言SQL以及如何在Java中使用SQL。
第13章:创建Web应用程序
Java是创建通过HTTP提供数据服务的应用程序的一种常用语言。该章讨论了3个流行的框架:Tomcat、Jetty和Play。
第14章:HTTP和REST
该章讨论了HTTP的另一种用途:通过REST (Representational State Transfer)风格创建和使用Web服务。
第15章:序列化
序列化是传输结构化数据所采用的方法。该章涵盖了3种方法:Java自己的序列化机制以及分别使用XML和JSON的平台无关的方法。
第16章:Spring框架
Spring框架是一个比较流行的应用框架,很多雇主在自己的一些甚至全部应用中都使用了这个框架。该章讨论了Spring框架的一些组件,包括核心应用上下文、数据库集成以及集成测试。
第17章:使用Hibernate
Hibernate是一个将关系数据库数据映射到Java对象的框架。该章介绍了Hibernate,以及如何通过Hibernate创建和操作对象。
第18章:有用的库
Java有很多有用且可重用的库。该章介绍了3个比较流行的库:Apache Commons、Guava和Joda Time。
第19章:利用构建工具进行开发
任何大型的Java应用程序,特别是涉及多位开发者的应用程序,其构建和打包过程都需要管理良好的流程。该章介绍了构建Java应用程序使用的两个流行的工具:Maven和Ant。
第20章:Android开发
后这一章介绍了Java语言的一种现代应用:在Android上开发移动应用程序。该章介绍了Android SDK的关键组件及其整合方式。
附录A:Scala简介
该附录介绍了Scala语言,这是一种在Java开发团队中越来越流行的语言,因为这种语言使用JVM作为平台。该附录介绍了Scala语言的一些基本知识、函数式编程的概念以及一些和不可变性相关的约定。
本书读者对象
本书面向的是有一些经验的Java开发者:这样的读者应该了解这门语言,而且使用过一段时间,但是对书中有些章节的内容不熟悉甚至完全不了解。如果你从来没有使用过Java,这本书也会有帮助,特别是第Ⅱ部分中的几章。你应该按顺序阅读这些内容,同时可以参考其他更深入的介绍性材料。
如果你处于面试官的位置,那么这本书也很有用,你可以通过本书找到一些在面试中问问题的灵感。
小结
本书并不是获得Java开发者工作的捷径,而是帮助你找到下一份工作的指南。通过本书可以了解面试官在招聘过程中经常会提到的一些话题。
经验对于面试非常有帮助,不仅对于面试的内容本身有帮助,而且也有助于减轻面试本身的陌生感和压迫感。你必须不断地练习面试的技巧,随着参与开发的时间越来越多,你的技能也会不断提高。在面试过程中获得经验会比较困难。每一个面试官都会采用不同的面试方式,整个过程也不会完美。潜在的雇主除了考虑“这位候选人是否足够好”之外还要考虑很多变数,在通盘考虑之后才可能给出录用意向。预算的约束,团队的融合,甚至面试官本身的心情都会对面试造成影响。
如果被拒了,也不要太沮丧,尝试从中吸取一些经验,想一想在以后的面试中会碰到什么问题。
还要记住,面试是一个双向的过程:在面试时要询问关于职位的细节,还要了解未来的同事以及在办公室中的生活情况。如果感觉不对的话,不要害怕拒绝。
祝你在准备面试的过程中好运,也希望你能享受这个过程。祝愿本书能帮你找到理想的工作。
导语摘要
成功赢得面试并收获你值得的Java编程工作
《Java程序员成功面试秘籍》是你参加热门Java职位面试的好帮手。面试专家和Java开发者Noel Markham联合InterviewZen网站从20 000多名参加真实IT公司面试的面试者中收集、编译了一些与Java相关的具有挑战性的题目和解答。这些珍贵的资料可以帮助你展现对完整Java生态系统的认识,并避
免面试中的常见错误,让你充满自信地参加面试,得到自己梦想的工作。
作者简介
Noel Markham是一名有着丰富经验的面试专家和Java开发者,他涉足的领域包括技术、金融和游戏。近,他在一家主营社交游戏和数码娱乐的初创公司工作。他面试过从应届毕业生到技术管理者各种层次的开发者。
目录
第Ⅰ部分 面试流程概述
第1章 面试类型分析
1.1 电话面试流程
1.2 技术测试
1.3 应对面对面的现场面试
1.4 终的决定
1.5 本章小结
第2章 撰写引人入胜的简历
2.1 如何撰写简历和求职信
2.2 撰写求职信
2.3 本章小结
第3章 技术测试和面试基础知识
3.1 书面技术测试
3.2 上机测试
3.3 面对面的技术面试
3.4 本章小结
第4章 编写核心算法
4.1 关于大O符号
4.2 列表排序
4.3 列表搜索
4.4 本章小结
第5章 数据结构
5.1 列表
5.2 树
5.3 映射
5.4 集合
5.5 本章小结
第6章 设计模式
6.1 考察示例模式
6.2 常用模式
6.3 本章小结
第7章 常见面试算法的实现
7.1 实现FizzBuzz
7.2 生成斐波那契数列
7.3 实现阶乘
7.4 实现库的功能
7.5 使用泛型
7.6 本章小结
第Ⅱ部分 核心Java
第8章 Java基础
8.1 原始类型
8.2 使用对象
8.3 Java数组
8.4 String的使用
8.5 理解泛型
8.6 自动装箱和拆箱
8.7 使用注记
8.8 命名约定
8.8.1 类
8.8.2 变量和方法
8.8.3 常量
8.9 处理异常
8.10 使用Java标准库
8.11 期待Java 8
8.12 本章小结
第9章 基于JUnit的测试
9.1 JUnit测试的生命周期
9.2 使用JUnit的实践
9.3 通过Mock消除依赖
9.4 通过行为驱动的开发进行系统测试
9.5 本章小结
第10章 理解Java虚拟机
10.1 垃圾回收
10.2 内存调优
10.3 JVM和Java语言之间的互操作性
10.4 本章小结
第11章 并发
11.1 使用线程
11.2 使用并发
11.3 actor
11.4 本章小结
第III部分 组件和框架
第12章 Java应用程序和数据库的整合
12.1 SQL简介
12.2 JDBC:整合Java和数据库
12.3 利用内存数据库进行测试
12.4 本章小结
第13章 创建Web应用程序
13.1 Tomcat和Servlet API
13.2 Jetty
13.3 Play框架
13.4 本章小结
第14章 HTTP和REST
14.1 HTTP方法
14.2 HTTP客户端
14.3 通过REST创建HTTP服务
14.4 本章小结
第15章 序列化
15.1 读写Java对象
15.2 使用XML
15.3 JSON
15.4 本章小结
第16章 Spring框架
16.1 Spring核心及应用上下文
16.2 Spring JDBC
16.3 集成测试
16.4 Spring MVC
16.5 本章小结
第17章 使用Hibernate
17.1 使用Hibernate
17.2 本章小结
第18章 有用的库
18.1 通过Apache Commons去除样板化的代码
18.2 利用Guava集合进行开发
18.3 使用Joda Time库
18.4 本章小结
第19章 利用构建工具进行开发
19.1 通过Maven构建应用程序
19.2 Ant
19.3 本章小结
第20章 Android开发
20.1 基础知识
20.1.1 组件
20.1.2 Intent
20.1.3 Activity
20.1.4 BroadcastReceiver
20.1.5 Service
20.2 用户界面
20.3 持久化
20.4 Android硬件
20.5 本章小结
附录A Scala简介
内容摘要
成功赢得面试并收获你值得的Java编程工作
《Java程序员成功面试秘籍》是你参加热门Java职位面试的好帮手。面试专家和Java开发者Noel Markham联合InterviewZen网站从20 000多名参加真实IT公司面试的面试者中收集、编译了一些与Java相关的具有挑战性的题目和解答。这些珍贵的资料可以帮助你展现对完整Java生态系统的认识,并避
免面试中的常见错误,让你充满自信地参加面试,得到自己梦想的工作。
主编推荐
Noel Markham是一名有着丰富经验的面试专家和Java开发者,他涉足的领域包括技术、金融和游戏。近,他在一家主营社交游戏和数码娱乐的初创公司工作。他面试过从应届毕业生到技术管理者各种层次的开发者。
以下为对购买帮助不大的评价