Skip to content

Latest commit

 

History

History
146 lines (87 loc) · 9.85 KB

File metadata and controls

146 lines (87 loc) · 9.85 KB

零、序言

Java 是一种非常流行的语言,在广泛的领域和行业中有大量的 IT 工作机会。由于 Java 为全世界数十亿的设备提供了强大的功能,它已经成为一种非常吸引人的学习技术。然而,学习 Java 是一回事;开始在 Java 领域发展职业是另一回事。这本书致力于那些希望发展 Java 职业并希望在以 Java 为中心的面试中取得优异成绩的人。

通过本书,您将学习如何执行以下操作:

  • 以 contretemps 的方式解决 220 多个最流行的 Java 编码面试问题,这些问题在很多公司都遇到过,包括谷歌、亚马逊、微软、Adobe 和 Flipkart 等顶级公司。
  • 收集解决各种 Java 编码问题的最佳技术。
  • 解决旨在发展强大和快速逻辑能力的大脑戏弄算法。
  • 重复常见的非技术性面试问题,这些问题可以区分成功与失败。
  • 全面了解雇主希望从 Java 开发人员那里得到什么。

在本书的结尾,您将有一个坚实的信息基础来解决 java 编码面试问题。从本书中获得的知识将使您对自己获得以 Java 为中心的理想工作充满信心。

这本书是给谁的

完整的 Java 编码面试指南对于那些正在寻找 Java 开发人员(或相关)工作并且需要以 contretemps 方式解决编码问题的人来说是一个综合性的资源。它特别适用于初级和中级候选人。

这本书涵盖的内容

第 1 章、*从何处开始以及如何准备面试,*是一个全面的指南,它解决了 Java 面试从零到招聘的准备过程。更准确地说,我们希望强调能够确保未来职业道路顺利和成功的主要检查点。

第二章大公司的面试是什么样的讲述了谷歌、亚马逊、微软、Facebook 和 Crossover 等主要大科技公司的面试是如何进行的。

第 3 章常见的非技术性问题以及如何回答这些问题解决了非技术性问题的主要方面。面试的这一部分通常由招聘经理甚至人力资源人员进行。

第 4 章如何处理失败讨论了面试中一个微妙的方面——处理失败。本章的主要目的是向您展示如何识别故障原因,以及如何在将来缓解故障。

第 5 章如何应对编码挑战涵盖了通常称为技术面试的技术测验和编码挑战主题。

第 6 章面向对象编程解释了 Java 访谈中遇到的关于面向对象编程的最常见问题,包括扎实的原则和编码挑战,如自动存储塔、停车场和哈希表。

第 7 章算法的大 O 分析在技术访谈中提供了分析算法效率和可扩展性的最常用指标——大 O 符号。

第 8 章递归与动态规划涵盖了采访者最喜欢的话题之一——递归与动态规划。这两个主题是相辅相成的,所以你必须能够涵盖这两个主题。

第 9 章位操作解释了在技术面试中您应该了解的位操作的最重要方面。这些问题在面试中经常遇到,而且并不容易。在本章中,您有 25 个这样的编码挑战。

第 10 章数组和字符串涵盖了 29 个涉及字符串和数组的流行问题。

第 11 章链表和地图向您介绍了 17 个最著名的编码挑战,涉及采访中遇到的地图和链表。

第 12 章栈和队列解释了涉及栈和队列的 11 个最流行的面试编码挑战。主要是,您必须学习如何从头开始提供栈/队列实现,以及如何通过 Java 内置实现解决编码难题。

第 13 章树与图涵盖了采访中最棘手的话题之一——树与图。虽然与这两个主题相关的问题很多,但在采访中实际遇到的问题却寥寥无几。因此,高度重视有关树和图的最常见问题是非常重要的。

第 14 章排序和搜索涵盖了技术访谈中遇到的最流行的排序和搜索算法。我们将介绍排序算法,如合并排序、快速排序、基数排序、堆排序和桶排序,以及搜索算法,如二进制搜索。到本章结束时,您应该能够解决涉及排序和搜索算法的广泛问题。

第 15 章数学与谜题在访谈中谈到了一个有争议的话题:数学与谜题。许多公司认为,这些问题不应该是技术面试的一部分,而其他公司仍然认为这一主题与面试相关。

第 16 章并发性涵盖了在涉及 Java 语言的一般访谈中出现的有关 Java 并发性(多线程)的最常见问题。

第 17 章函数式编程探讨了 Java 函数式编程最流行的问题。我们介绍了关键概念、lambda 和流。

第 18 章单元测试讲述了在申请开发人员或软件工程师等职位时可能遇到的单元测试面试问题。当然,如果您正在寻找一个测试人员(手动/自动)职位,那么本章可能代表了测试的另一个视角。因此,不要期望在这里看到特定于手动/自动测试仪位置的问题。

第 19 章系统可伸缩性提供了在初级/中级职位面试中,您可能会被问及的最广泛的可伸缩性面试问题,如 web 应用软件架构师、Java 架构师或软件工程师。

充分利用这本书

您只需要 Java(最好是 Java8+)和您最喜欢的 IDE(NetBeans、IntellijIDEA、Eclipse 等)。

我还强烈建议读者参考 Packt 的Java 编码问题一书,进一步提高您的技能。

下载示例代码文件

您可以从您的账户www.packt.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册www.packt.com。
  2. 选择支持选项卡。
  3. 点击代码下载
  4. 搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/The-Complete-Coding-Interview-Guide-in-Java 。如果代码有更新,它将在现有 GitHub 存储库中更新。

我们的丰富书籍和视频目录中还有其他代码包,请访问https://github.com/PacktPublishing/ 。看看他们!

下载彩色图片

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。你可以在这里下载:

https://static.packt-cdn.com/downloads/9781839212062_ColorImages.pdf

使用的约定

本书中使用了许多文本约定。

文本中的代码:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:“三角形**、矩形和圆形类实现形状接口,并覆盖绘制()**方法来绘制相应的形状。”

代码块设置如下:

public static void main(String[] args) {
 Shape triangle = new Triangle();
 Shape rectangle = new Rectangle();
 Shape circle = new Circle();
 triangle.draw();
 rectangle.draw();
 circle.draw();
}

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

public static void main(String[] args) {
 Shape triangle = new Triangle();
Shape rectangle = new Rectangle();
 Shape circle = new Circle();
 triangle.draw();
 rectangle.draw();
 circle.draw();
}

粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个例子:“但是,这种方法不适用于第三种情况,即 339809(1010010111101100001)。”

提示或重要提示

看起来像这样。

联系

我们欢迎读者的反馈。

一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中注明书名,并发送电子邮件至customercare@packtpub.com

勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/support/errata,选择您的书籍,单击 errata 提交表单链接,然后输入详细信息。

盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请致电与我们联系 copyright@packt.com带有指向该材料的链接。

如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com

审查

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。

有关 Packt 的更多信息,请访问Packt.com