内容简介

  成功赢得面试并收获你值得的Java编程工作
  《Java程序员成功面试秘籍》是你参加热门Java职位面试的好帮手。面试专家和Java开发者NoelMarkham联合InterviewZen网站从20000多名参加真实IT公司面试的面试者中收集、编译了一些与Java相关的具有挑战性的题目和解答。这些珍
  贵的资料可以帮助你展现对完整Java生态系统的认识,并避免面试中的常见错误,让你充满自信地参加面试,得到自己梦想的工作。
  主要内容
  ◆从真实的Java编程职位面试中遴选了200多道问题和解答
  ◆为Java求职者准备了3套必备技能:面试流程技能、核心Java技能以及与Java组件和框架相关的技能
  ◆提供了一个Scala语言(一种运行在JVM上的语言)的附录,帮助你给潜在雇主留下深刻印象
  ◆在支持网站上可以下载书中所有的示例代码。此外还可以在InterviewZen网站上找到更多的支持和测试材料

作者简介

  NoelMarkham,是一名有着将近15年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实现FizzBuzz7.2生成斐波那契数列7.3实现阶乘7.4实现库的功能7.5使用泛型7.6本章小结第Ⅱ部分核心Java第8章Java基础8.1原始类型8.2使用对象8.3Java数组8.4String的使用8.5理解泛型8.6自动装箱和拆箱8.7使用注记8.8命名约定8.8.1类8.8.2变量和方法8.8.3常量8.9处理异常

前言/序言

  有人会认为面试很难对付,因为面试是一个一对一的考察技术能力的过程。  这《Java 程序员成功面试秘籍》是准备找工作的Java面试者的必备指南。《Java 程序员成功面试秘籍》提供了足够多的练习材料,让你有足够的信心面对可能会被问到的问题,因此可以帮助你克服Java编程面试过程中的恐惧和担忧。  《Java 程序员成功面试秘籍》介绍的技术  《Java 程序员成功面试秘籍》是基于JavaSE7编写的。如果你是一位有经验的Java开发者,但是还没有跟上Java7的步伐,那么可以在《Java 程序员成功面试秘籍》中学习以下新的语言特性和API库。  钻石操作符  编译器会尽可能地推导出泛型实例的类型。因此,我们可以编写Listnumbers=newArrayList()这样的语句,而不用编写Listnumbers=newArrayList()这样的语句。这样在使用集合时,特别是在集合嵌套集合时,可以大大减少样板化代码的量。  在switch语句中使用String  最初的Javaswitch语句只能处理数值类型。随着Java5引入了枚举类型,在switch语句中还可以使用枚举类型。现在从Java7开始,在switch语句中可以使用String对象。  新的文件I/O库  Java7引入了一个新的I/O库,关注的是平台无关的非阻塞I/O。  此外,Java7还引入了很多新特性,例如自动资源管理和二进制字面量的表示形式。《Java 程序员成功面试秘籍》《Java 程序员成功面试秘籍》使用Java7。可以认为,面试官会使用最新的Java技术来进行考察,因此随着语言的新版本的发布,你也应该让自己的技能跟上时代的步伐。  有一些Java框架和库还没有完全兼容Java7,因此在使用具体组件时请查阅最新的文档。  《Java 程序员成功面试秘籍》的组织结构  《Java 程序员成功面试秘籍》分为以下3个独立的部分。  第Ⅰ部分:面试流程概述  关于面试流程的章节包含两方面的内容:一方面是如何向面试官表现自己,另一方面是一些和Java无关但是可能会出现在技术面试中的一般性技术话题。  第1章:面试类型分析  该章介绍了雇主的招聘流程中的各个步骤,从电话面试到面对面的技术测试,再到和招聘经理的面谈。  第2章:撰写引人入胜的简历  简历及其附信是下一任雇主对你产生的第一印象。该章讨论了如何让你的简历脱颖而出,给出了语言相关的一些小建议和招聘者会关注的一些问题。  第3章:技术测试和面试基础知识  任何潜在的雇主都会考察你的技术能力,而且会采用尽可能高效的方式。该章讨论了各种不同类型的编程测试和技术测试,并讨论了如何准备这些类型的测试。  第4章:编写核心算法  计算机科学的核心概念是技术测试中经常会考察的内容,其中包含排序和搜索。该章给出了一些不同的搜索和排序算法,并讨论了每一种方法的优劣。  第5章:数据结构  在面试中,计算机科学核心概念的相关问题除了排序和搜索之外,常见的主题就是数据的高效存储和表达。第5章讨论了列表、树、映射和集合等数据结构,讨论了这些数据结构的表达和使用。  第6章:设计模式  该章涵盖了一些面向对象的设计模式,还展示了Java库中的类使用的一些模式。  第7章:常见面试算法的实现  该章给出了一些常见的面试题,并用Java实现了这些题目的解答。本章很多题目都来自于一个很流行的技术面试网站interviewzen.com。  第Ⅱ部分:核心Java  这一部分章节的内容是面试官认为有经验的Java开发候选人应该了解的内容。  第8章:Java基础  该章覆盖了Java的很多语言特性,有经验的Java开发者可以利用该章复习基础知识。  第9章:基于JUnit的测试  《Java 程序员成功面试秘籍》使用的一个核心思想是单元测试。该章介绍了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(RepresentationalStateTransfer)风格创建和使用Web服务。  第15章:序列化  序列化是传输结构化数据所采用的方法。该章涵盖了3种方法:Java自己的序列化机制以及分别使用XML和JSON的平台无关的方法。  第16章:Spring框架  Spring框架是一个比较流行的应用框架,很多雇主在自己的一些甚至全部应用中都使用了这个框架。该章讨论了Spring框架的一些组件,包括核心应用上下文、数据库集成以及集成测试。  第17章:使用Hibernate  Hibernate是一个将关系数据库数据映射到Java对象的框架。该章介绍了Hibernate,以及如何通过Hibernate创建和操作对象。  第18章:有用的库  Java有很多有用且可重用的库。该章介绍了3个比较流行的库:ApacheCommons、Guava和JodaTime。  第19章:利用构建工具进行开发  任何大型的Java应用程序,特别是涉及多位开发者的应用程序,其构建和打包过程都需要管理良好的流程。该章介绍了构建Java应用程序使用的两个最流行的工具:Maven和Ant。  第20章:Android开发  最后这一章介绍了Java语言的一种现代应用:在Android上开发移动应用程序。该章介绍了AndroidSDK的关键组件及其整合方式。  附录A:Scala简介  该附录介绍了Scala语言,这是一种在Java开发团队中越来越流行的语言,因为这种语言使用JVM作为平台。该附录介绍了Scala语言的一些基本知识、函数式编程的概念以及一些和不可变性相关的约定。  《Java 程序员成功面试秘籍》读者对象  《Java 程序员成功面试秘籍》面向的是有一些经验的Java开发者:这样的读者应该了解这门语言,而且使用过一段时间,但是对书中有些章节的内容不熟悉甚至完全不了解。如果你从来没有使用过Java,这《Java 程序员成功面试秘籍》也会有帮助,特别是第Ⅱ部分中的几章。你应该按顺序阅读这些内容,同时可以参考其他更深入的介绍性材料。  如果你处于面试官的位置,那么这《Java 程序员成功面试秘籍》也很有用,你可以通过《Java 程序员成功面试秘籍》找到一些在面试中问问题的灵感。  《Java 程序员成功面试秘籍》利用的工具  从http://www.oracle.com/technetwork/java/javase/downloads/index.html可以下载最新的JavaJDK。大部分专业开发者会在集成开发环境(IntegratedDevelopmentEnvironment,IDE)中编写Java代码。IntelliJ(免费社区版可以从http://www.jetbrains.com/idea/download/index.html下载)和Eclipse(可以从http://www.eclipse.org/downloads/下载)是两个最流行的IDE。有些面试官在面试过程中可能要求你使用计算机和IDE编写代码,因此你也应该熟悉这些IDE的基本操作。  小结  《Java 程序员成功面试秘籍》并不是获得Java开发者工作的捷径,而是帮助你找到下一份工作的指南。通过《Java 程序员成功面试秘籍》可以了解面试官在招聘过程中经常会提到的一些话题。  经验对于面试非常有帮助,不仅对于面试的内容本身有帮助,而且也有助于减轻面试本身的陌生感和压迫感。你必须不断地练习面试的技巧,随着参与开发的时间越来越多,你的技能也会不断提高。在面试过程中获得经验会比较困难。每一个面试官都会采用不同的面试方式,整个过程也不会完美。潜在的雇主除了考虑“这位候选人是否足够好”之外还要考虑很多变数,在通盘考虑之后才可能给出录用意向。预算的约束,团队的融合,甚至面试官本身的心情都会对面试造成影响。  如果被拒了,也不要太沮丧,尝试从中吸取一些经验,想一想在以后的面试中会碰到什么问题。  还要记住,面试是一个双向的过程:在面试时要询问关于职位的细节,还要了解未来的同事以及在办公室中的生活情况。如果感觉不对的话,不要害怕拒绝。  祝你在准备面试的过程中好运,也希望你能享受这个过程。祝愿《Java 程序员成功面试秘籍》能帮你找到理想的工作。  与其说《Java 程序员成功面试秘籍》是一本面试书,不如说是一本Java大全。这《Java 程序员成功面试秘籍》介绍了Java开发所涉及的各个方面的知识,从最基础的语言特性,到设计模式以及Spring和Hibernate这样的框架;从基本的算法和数据结构,到大型Java项目的构建流程;从Java虚拟机的基本原理和Java并发,到Android开发和Scala语言的基本思想,无所不包。  如果你是要参加技术面试的候选人,那么可以通过《Java 程序员成功面试秘籍》对Java相关知识查漏补缺,还可以利用《Java 程序员成功面试秘籍》给出的题目进行演练;如果你是刚接触Java的新手,那么可以通过《Java 程序员成功面试秘籍》迅速了解专业Java开发者所需要的知识和素养;如果你是Java老手,那么在这《Java 程序员成功面试秘籍》中一定还能找到自己欠缺的方面。  此外,《Java 程序员成功面试秘籍》还试图帮助读者建立起测试驱动开发的习惯,在如今大规模使用Java开发线上服务的时代,充分的测试能保证你睡个好觉。  当然,我们不能把这《Java 程序员成功面试秘籍》当成Java知识大全,《Java 程序员成功面试秘籍》以面试题的形式将Java相关的很多重要知识点串起来,但如果想要了解更多的细节,还需要参阅相关的文档和涉及相关主题的更深入的书籍。  在《Java 程序员成功面试秘籍》的翻译过程中,要特别感谢清华大学出版社的编辑们对我的指导和督促,感谢他们对《Java 程序员成功面试秘籍》翻译稿的修正和润色。还要感谢我的妻子和襁褓中的孩子对我因为翻译《Java 程序员成功面试秘籍》而对他们关注减少的理解和支持。  《Java 程序员成功面试秘籍》全部章节由郑思遥翻译,由于时间和水平的限制,翻译稿中难免存在疏漏和错误,敬请广大读者批评指正。  郑思遥  2014年12月

其他推荐