读书笔记《the-complete-coding-interview-guide-in-java》第一章从哪里开始,如何为面试做准备
The novice interview roadmap
让我们从一个成为成功开发人员绝对必要但还不够的基本事实开始:最好的 Java 开发人员对他们的工作充满热情,并且迟早会真正的热情成为职业。从长远来看,激情是无价的,它会让你在一群熟练但冷静的人中脱颖而出。
自从您购买了这本书后,您就想在 Java 软件开发事业上投入一些时间和金钱。主要是,您想成为令人惊叹的 Java 生态系统的一部分!您已经感受到专注于使用 Java 所带来的力量和能量,因此,即使您还没有积极考虑过,您也已经开始为 Java 面试做准备了。
最有可能的是,您是一名学生,或者您刚刚获得 IT、计算机科学的学士学位,或者您只是发现了自己对 Java 语言的倾向。然而,既然你在这里,你对如何在 Java 生态系统中获得梦想的工作有很多疑问和疑问。
是时候为成功制定计划了!以下流程图代表想要成为 Java 生态系统一部分的学生或 Java 新手的面试路线图:

图 1.1 – 新手面试路线图
在本章中,我们将介绍上图中的每个项目。让我们从第一项开始,认识自己。
Know yourself
在 寻找工作之前,了解自己很重要。这意味着你应该知道你是一个什么样的开发者,你想要什么样的工作。
这对于获得正确的经验、发展您的技能包和找到合适的雇主至关重要。最有可能的是,您可以涵盖范围广泛的 Java 编程任务,但您是否发现所有这些任务都同样具有吸引力?短时间做自己不喜欢的事情是可以的,但长期做就不行了。
理想情况下,从长远来看,您必须专注于您最喜欢做的事情!这样,您就可以最大限度地提高成为顶级 Java 开发人员的机会。但是,做你最喜欢做的事情应该在 IT 市场提供的环境中考虑(短期内,最重要的是长期内)。一些 Java 技术在工作机会中被广泛覆盖,而另一些可能需要大量时间才能找到工作,或者必须做出一些非常不愉快的权衡(例如,重新安置)。强烈建议定期咨询并参与(每张选票都很重要)由 blogs.oracle.com、snyk.io、jaxenter.com 等网站进行的最相关的 Java 调查、codeburst.io、jetbrains.com 和 dzone.com。从统计数据来看,有大量公司可供选择,可以最大限度地提高为您找到合适公司的机会。这是问题的一半,而另一半是让自己做好准备,以确保有你想要的工作的公司会想要你。
现在,让我们检查 10 个问题,这些问题将帮助您确定您打算成为什么样的开发人员。在考虑以下问题和解释时,请审视自己并尝试重叠您的个性和技能:
- 您是否对开发用户界面或在幕后执行的繁重业务逻辑感兴趣? 开发出色的用户界面是图形界面的一个极其重要的方面。毕竟,图形界面是最终用户看到并与之交互的。它需要创造力、创新、远见和心理学(例如,开发多设备界面非常具有挑战性)。它需要 Java AWT、Swing、JavaFX、Vaadin 等知识。另一方面,在幕后执行并响应最终用户操作的业务逻辑是界面背后的引擎,但对于最终用户来说,大多数时候它是一个黑匣子。业务逻辑需要强大的编码技能和扎实的算法、数据结构、框架(如 Spring Boot、Jakarta EE 和 Hibernate)、数据库等知识。大多数 Java 开发人员选择在后台编写业务逻辑(用于桌面和 Web 应用程序)。
- 您认为哪种应用程序最吸引人(桌面、移动、网络或其他)?每种类型的应用程序都有特定的挑战和专用的工具套件。今天,公司以尽可能多的消费者为目标,因此,现代应用程序应该可用于多平台设备。最重要的是,您应该能够在知道应用程序将在不同设备上公开并与其他系统交互的情况下进行编码。
- 您对测试、调试和/或代码审查特别感兴趣吗? 拥有编写有价值的测试、发现错误和审查代码的强大技能是保证高质量的最终产品。在这三个领域中,我们应该专注于测试,因为几乎所有 Java 开发人员的职位描述都要求候选人具有编写单元测试和集成测试的强大技能(最常用的首选工具是 JUnit、TestNG、Mockito 和 Cucumber-JVM) .然而,试图找到一个专门的 Java 测试员工作或 Java 代码审查员是相当具有挑战性的,并且通常在大型 公司中遇到(尤其是在提供远程工作的公司中,例如 Upstack 或 Crossover )。大多数公司更喜欢结对代码审查,每个 Java 开发人员都应该编写有意义的测试,为他们编写的代码提供高覆盖率。所以你必须能够做到这两点:写出惊人的代码,并为该代码编写测试。
- 您是否对与数据库交互的应用程序感兴趣,或者您是否尝试避免此类应用程序? 大多数 Java 应用程序都使用数据库(关系数据库或 NoSQL 数据库)。广泛的 Java 开发人员工作将要求您具备通过对象关系映射框架(例如 Hibernate)、JPA 实现(例如 Hibernate JPA 或 Eclipse Link)或以 SQL 为中心的库(例如作为jOOQ)。大多数 Java 应用程序与关系数据库交互,例如 MySQL、PostgreSQL、Oracle 或 SQL Server。但是在大量应用程序中也会遇到 NoSQL 数据库,例如 MongoDB、Redis 或 Cassandra。试图避免开发与数据库交互的应用程序可能会严重限制提供的工作范围。如果这是你的情况,那么你应该从今天开始重新考虑这个方面。
- 您是否偏爱代码优化和性能? 关心代码的性能是一项备受赞赏的技能。这样的行为会将您归类为非常注重细节的完美主义者。拥有优化代码并提高其性能的解决方案将使您很快处于参与设计和构建功能需求解决方案的位置。但是在面试(代码挑战阶段),不要专注于代码优化和性能!只需专注于提供有效的解决方案,并尽可能地提供干净的代码。
- 哪个对您更有吸引力:专注于编码的工作还是成为软件架构师? 在您作为 Java 开发人员的职业生涯之初,您将专注于编码和实施代码级别的设计决策。随着时间的推移,一些开发人员发现了他们对构建大型应用程序的能力和兴趣。这意味着是时候从 Java 开发人员演变为 Java 架构师,甚至是 Java 首席架构师了。虽然编码仍然是您工作的一部分,但作为 架构师,您将在同一天戴上不同的帽子。您必须在会议、架构和编码之间分配时间。如果您觉得自己有能力设计和架构项目的不同部分,那么建议您也考虑一些软件架构方面的培训。此外,在您以编码为中心的工作中,挑战自己,看看您能找到哪些解决方案,并将它们与当前应用程序架构师实现的解决方案进行比较。
- 您的目标是小公司还是大公司? 在小公司或大公司之间进行选择是一个权衡问题。理想情况下,大公司(一个品牌)会给人稳定、职业道路和良好的薪酬计划。但你可能会因为官僚主义、部门之间缺乏沟通和竞争以及冷酷僵化的环境而感到窒息。在一家小公司,你有机会更加强烈地感受到自己是成功的一部分,并且会感受到成为一个小社区(甚至是家庭)的一份子的美好、温暖的感觉。然而,小公司可能会很快倒闭,你可能会在一两年内被解雇,很可能没有任何补偿。
- 您的目标是软件公司(从事广泛的项目)还是某个行业(例如,石油行业、医药、汽车行业等)?软件公司管理来自多个领域的项目(例如,软件公司可能同时为好莱坞明星开发网站、金融应用程序和航空交通控制应用程序)。从开发人员的角度来看,这意味着您需要多才多艺的思维,并且能够快速适应以了解不同业务领域的需求,而无需深入研究这些领域。另一方面,大型行业(例如石油行业)更喜欢创建自己的 IT 部门来开发和维护特定于该公司领域的应用程序。在这种情况下,您很可能还会在给定公司的领域中接受一些培训。您将拥有成为开发特定领域应用程序专家的优势。
- 您喜欢远程工作吗?在过去几年中,大量公司决定聘请远程开发人员。此外,Upwork、Remote|OK、X-Team 和 Crossover 等新公司都是 100% 远程公司,只为远程职位招聘。在世界任何角落使用灵活的程序工作的优势非常吸引人。这些公司为初级、中级和高级开发人员提供工作,其中一些(例如 Crossover)还提供远程管理职位。但是,您还必须注意这种安排的其他一些方面:您可能会被网络摄像头监视(例如,每 10 分钟拍摄一次快照);您需要与来自不同时区的成员在一个完全远程的团队中工作(例如,参加晚上的会议可能具有挑战性);您必须熟悉 JIRA、GitHub、Zoom、Slack、Meetup 和内部市场平台等工具;您可能会遇到很多摩擦(大量电子邮件)和缺乏沟通;您需要缴纳税款,最后但并非最不重要的一点是,您可能需要达到不真实的指标,从而损害质量以维持您的地位。
- Does management interest you? Commonly, reaching a managerial position is a goal that requires leadership skills. In other words, you should be able to take important decisions at both the technical and human levels. From this perspective, you need to avoid companies that offer a solid technical career path but don’t provide opportunities to get promoted to the ranks of management.
重要说明
了解自己是在生活中做出最佳决定所需的最困难的部分之一。有时,征求别人的意见是消除你对自己的主观看法的最好方法。大多数时候,询问你的老师、父母和朋友会帮助你更好地了解你的技能是什么以及你最适合的地方。独自做出重要决定是有风险的。
一旦你了解了自己,就该了解市场了。
Know the market
知道你想要什么很好,但还不够。下一步,您应该研究市场对您的需求。目标是获得您想要的和市场提供的完美鸡尾酒。
重要说明
培养适销对路的技能是在不久的将来找到工作的一个重要方面。
首先,您必须检查过去几年最流行的 Java 技术以及未来趋势可能是什么。随着时间的推移保持相对稳定流行的技术是公司中使用最多的技术。
花点时间阅读过去 2-3 年来自重要网站的一些调查,例如 blogs.oracle.com、snyk.io、jaxenter.com、codeburst.io、jetbrains.com 和 dzone.com。首先,您可以在 Google 上搜索 java 技术调查 2019 或类似的关键字组合。另外,不要忽视财务部分,所以一定要搜索 java 薪水调查 2019。
您会发现各种各样的调查很好地总结了最流行的技术,您可以在下面的两个图中看到。第一个展示了应用服务器的流行:

图 1.2 – 使用的应用服务器

图 1.3 – 开发人员喜欢使用的框架
阅读时,列一张清单并记下哪些 Java 技术目前最流行,哪些技术不值得您关注。这将是一个类似于以下内容的列表:

图 1.4 – 按受欢迎程度划分技术
这样,您可以快速筛选出市场最需要的技术。学习流行的技术可以最大限度地提高您在不久的将来找到工作的机会。
此外,通过以下方式将 市场的脉搏与您添加到Popular 列中的技术联系起来:
- 社交网络:大量社交网络包含有关技术和 IT 行业趋势的帖子。一些主要参与者是 LinkedIn、Stack Overflow、Twitter、Reddit 和 Facebook。
- 书店:图书出版商努力通过涵盖最流行的技术来满足编程社区的兴趣。他们开展了认真的研究活动,以过滤值得在他们的书中涵盖的主题。一本关于某个主题或技术的新书或大量书籍是编程社区对该主题感兴趣的一个很好的指标。不过,请注意突然成为主流的技术。大多数时候,这些技术并没有立即被公司采用。它们可能需要数年才能被采用,或者它们可能永远处于阴影中。
- 课程和培训:除了高校之外,还有大量的网站致力于为热门话题提供课程和培训。
It’s all about getting the right experience
您知道自己想要什么以及市场提供什么。这很酷!现在是时候获得正确的体验了!没有经验就没有简历,没有简历就没有面试,因此,这是一个重大而费力的步骤。以下小节将帮助您实现两个主要目标:
- 积累了大量的技术知识和技能。
- 在整个 Java 生态系统中获得信任和可见性。
注意——这两个目标不会在一夜之间实现!这需要时间和毅力,但有一个明确且有保证的结果——您将成为顶级 Java 开发人员。所以,让我们开始吧!
Start something
对于学生或应届毕业生来说,很难决定从哪里开始以获得经验和写简历。你知道你应该开始一些东西,但是你不能决定那个一些东西应该是什么。那么,something 应该是 code。在您进行任何正式工作之前,请先参与学校项目、实习、编程、志愿工作以及任何形式的实践经验。
It’s time to shine online
必须尽早上网并向世界展示您可以做什么(例如,从学校)。公司和编程社区期待看到您如何在线成长。但就在您开始之前,请确保您遵循以下两条黄金法则:
- 注意用于在线公开您的作品的身份非常重要。 不要使用虚拟的凭证、头像、昵称、电子邮件、密码等。您现在创建的帐户(在 GitHub、Stack Overflow、LinkedIn、YouTube、Twitter 等上)很可能会在整个互联网上共享并让您出名。始终使用您的全名(例如,Mark Janel、Joana Nimar),在您的个人资料中使用您自己的相关照片(如下图),并在帐户中使用您的姓名(例如,@markjanel、joananimar)和电子邮件地址(例如,[email protected])。假名、电子邮件和昵称更难与您和您的工作相关联:

图 1.5 – 使用相关照片
- 始终接受批评并保持礼貌。在网上公开您的作品会吸引批评。您收到的内容中极少部分是没有 逻辑参数的真正恶意评论。在这种情况下,最佳做法是忽略此类评论。但大多数批评者都是积极的和建设性的。始终用论据来回答此类评论,并且始终保持礼貌。 常识是最重要的技能! 保持开放并接受其他意见!
不要失望或沮丧。并且永不放弃!
Contribute to open source projects
为开放源项目做出贡献是一种超音速方法,可用于衡量您的技能并快速获得经验并为寻找候选人的公司提供知名度。不要低估自己!小的贡献也很重要。即使阅读和理解开源项目的代码,也是获得编码经验和学习编码技术的绝佳机会。
许多开源项目鼓励和支持开发人员做出贡献。例如,查看以下屏幕截图中的 Hibernate ORM 开源项目:

图 1.6 – 为开源项目做贡献
您有机会 将您的足迹添加到您稍后将在日常工作中使用的代码中!它也被数百万开发人员使用。多么酷啊!?
Start your own GitHub account
除了为 开源项目做贡献外,建议创建自己的 GitHub 帐户。雇主会在与您见面之前评估您的 GitHub 个人资料的内容。不要忽视任何方面!花点时间清理你的 GitHub 个人资料,让它反映你最好的代码。请记住,最糟糕的 GitHub 帐户是空帐户或长期显示低活动的帐户,如下图左侧所示:

图 1.7 – 四个月内的 GitHub 贡献
表现出对干净代码和有意义的 README.md
文件的偏好,并避免在 长期处于低活动状态,如如上一个屏幕截图所示。
Start your own Stack Overflow account
Stack Overflow 是评估您工作的公司的下一站。您在 Stack Overflow 上的问题和答案将出现在 Google 搜索中,因此,您必须特别注意您发布的内容(问题和答案)。根据经验,您的问题可能会暴露您的知识水平,因此,不要发布简单的问题、文档中容易回答的问题、琐碎的问题编程挑战等等。另一方面,确保提供有价值的答案,不要重复别人的答案。提供能给你带来徽章的内容,而不是反对票。将您的 GitHub 个人资料链接到您的答案,以提供完整的解决方案。
Start your own YouTube channel
除了娱乐,YouTube 还是技术知识的巨大来源。在 YouTube 上,您可以发布完整的编码解决方案,向人们展示如何编程以及如何成为更好的程序员。如果您执行以下操作,您可以快速增加 YouTube 订阅者:
- 不要看长视频(坚持 10-20 分钟的课程)!
- 确保您拥有良好的网络摄像头和麦克风。一个好的网络摄像头至少有 1080p 的分辨率,一个好的麦克风是 Snowball ICE;录制时使用免费或低成本的工具,例如 Free2X Webcam Recorder (free2x.com/webcam-recorder) 和 Loom (loom.com); Camtasia Studio 也很棒 (techsmith.com/video-editor.html)。
- 展示出色的英语技能(英语在 YouTube 上最常用)。
- 自我介绍(但要快)。
- 充满热情(向人们表明你喜欢你的工作,但不要夸大其词)。
- 实用(人们喜欢实时编码)。
- 借此机会证明您的口语技巧(这为您打开了参加技术会议的大门)。
- 宣传您的工作(添加更多视频、源代码等的链接和提示)。
- 回应人们的反馈/问题(不要忽视人们对您的视频的看法)。
- 接受批评并保持礼貌。
将您的 GitHub 和 Stack Overflow 帐户链接到 您的 YouTube 视频,以获得更多曝光率和关注者。
Start your technical blog
您在 GitHub、Stack Overflow 和 YouTube 上的出色 作品可以在技术博客的故事中轻松宣传。写编程主题,尤其是你解决的编程问题,写教程、技巧和窍门等等。持续发布和高质量的内容将增加您的流量,并将在搜索引擎上索引您的博客。有一天,这些有价值的内容可以被用来写一本惊人的书或在 Udemy (udemy.com) 或 上开发一个 精彩视频PluralSight (learn.pluralsight.com)。
有很多博客 平台,例如,如 Blogger (blogger.com)、WordPress (wordpress.org) 和 中等 (medium.com)。选择您喜欢的并开始使用。
Write articles and attract huge traffic and/or get paid
如果您想发布技术文章并赚钱或为您的工作吸引大量流量,那么个人博客不会很有用,至少不会有很大的用处时间(1-2 年)。但是您可以为那些自己注册大量日常流量的网站撰写技术文章。对于 示例,DZone (dzone.com) 是一个很棒的技术平台,您可以在其中免费写作,也可以加入不同的项目,为您的工作付费。只需创建一个免费的 DZone 帐户,您就可以立即开始通过他们的在线编辑器发布技术文章。在 1-5 天内,他们将审核您的作品并在线发布。几乎立即,成千上万的人将阅读您的文章。除了 DZone,其他伟大的技术平台会付钱给你(通常 每篇文章 10-150 美元,具体取决于长度、主题、内部 < /a> 政策等)。其中一些平台包括 InformIT (informit.com)、InfoQ ( infoq.com)、Mkyong (mkyong.com)、developer.com (developer.com)、Java Code Geeks (javacodegeeks.com)、GeeksForGeeks (geeksforgeeks.org) 和 站点点 (sitepoint.com)。
Promote yourself and your work (portfolio)
工作很重要,但向人们展示你所做的事情并获得他们的反馈也很重要。
重要的提示
管理您的在线个人资料非常重要。 招聘人员使用在线个人资料来寻找理想的候选人,更好地了解你,并准备深入或定制的面试问题。
除了 GitHub、Stack Overflow 等,招聘人员还会在 Google 上搜索您的姓名,并检查您的个人网站和社交网络资料。
个人网站
个人网站(或作品集)是展示您作品的网站。只需添加您制作/贡献的应用程序的屏幕截图,并简要描述您的工作。解释您在每个项目中的角色并提供该项目的链接。注意不要暴露私人和专有的公司信息。您可以从互联网上快速获得灵感(例如,codeburst.io/10-awesome-web-developer-portfolios-d266b32e6154)
要构建您的个人网站,您可以依赖免费或低成本的网站构建器,例如 Google 协作平台 (sites.google. com) 和 Wix (wix.com)。
Social network profiles
Twitter 是最重要的社交网络之一。在 Twitter 上,您可以在世界上最优秀的 Java 开发人员面前宣传您的工作。从第一天开始,搜索并关注最优秀的 Java 开发人员,很快他们也会关注你!作为提示,开始关注你能找到的尽可能多的 Java Champions(一个由世界上最好的 Java 开发人员组成的独家社区)。 Twitter 上有一个庞大而有价值的 Java 开发人员社区。尽快了解他们!
招聘人员也会扫描 Facebook 和 Instagram 等其他社交网络。注意你的帖子的内容。显然,激进主义、种族主义、狂热主义、琐碎或色情内容、政治内容、口号和煽动暴力、诽谤和攻击性内容等都会导致招聘人员后退一步。
CodersRank matters
CodersRank (codersrank.io/) 是一个收集关于您的工作的信息的平台(例如,它从 GitHub 收集信息, Stack Overflow、Bitbucket、HakerRank 等),并试图将您与来自世界各地的数百万其他开发人员进行排名。在以下屏幕截图中,您可以看到开发人员的个人资料页面:

图 1.8 – CodersRank 概要文件摘要
这是招聘人员的另一个重要晴雨表。
学习,编码,学习,编码......
成为开发人员后,您必须遵循Learn->代码实践,以保持领先地位。永远不要停止学习,永远不要停止编码!根据经验,Learn->Code 实践可以通过 通过示例学习 或 教学是我学习的方式方法,或任何 其他最适合您的方法。
How about certifications?
访问education.oracle.com/certification 后,您可以看到Oracle 提供了一套Java 认证。虽然 获得认证(来自 Oracle 或其他方)并没有错,但它们在职位描述中不是必需的。获得这些认证需要大量的金钱和时间,而且大多数时候他们并没有付出 的努力。您可以更明智地利用这段时间并参与项目(业余项目、学校项目、开源项目等)。这是给雇主留下深刻印象的更好方法。因此,证书的价值有限,获得它们需要大量资源。此外,证书是易腐烂的。想想今天,在 2020 年获得 Java 6 认证,或者在 2030 年获得 Java 12 认证,这是多么有用!
但是,如果您真的想考虑认证,那么这里是提供的顶级认证(有关更多信息,请在 Google 上搜索它们,因为链接可能会随着时间的推移而中断):
- OCAJP(Oracle 认证助理,Java 程序员 1)和 OCPJP(Oracle 认证专家,Java 程序员 2)
- 春季专业认证
- OCEWCD(Oracle 认证专家、Java EE 6 Web 组件开发人员)
- Apache Spark Cert HDPCD(HDP 认证开发人员)
- 专业 Scrum Master
- 项目管理(PMP)
- AWS 解决方案架构师
- Oracle 认证大师
在互联网上拥有经验和知名度(粉丝)是您职业生涯的巨大优势。但是你仍然需要一份有用的简历来申请 Java 工作。所以,是时候写简历了。
Time to write your resume
写一份 令人印象深刻的简历并不容易。有很多平台向你保证,如果你让他们为你做,你的简历会很棒。还有大量的 简历模板,其中大多数都非常复杂和繁琐。另一方面,简历是个人的东西,最好自己做。牢记以下几点就足以为招聘人员制作一份吸引人的简历。让我们看看这些要点以及如何处理它们。
What resume screeners are looking for
首先,简历筛选者想知道你是否是一个优秀的程序员,你是否聪明。其次,他们想知道你是否适合某个可用的职位(他们会根据该职位所需的某些技术和工具检查你的经验)。
努力强调你是一个优秀的编码员并且很聪明。这意味着以集中的形式尽可能地技术化。注意:过多的文字会冲淡简历的精髓,导致注意力不集中。 技术性强、清晰简洁。
How long the resume should be
要回答简历应该多长,您必须回答另一个问题:您认为招聘人员会花多长时间阅读简历?最有可能的是,大约 10-20 秒。换句话说,招聘人员在字里行间进行解读,试图快速找出他们感兴趣的东西。
一般来说,简历不应超过一页。如果您有 10 年以上的经验,那么您可以使用 2 页。
您可能认为不可能将您的丰富经验浓缩在 1-2 页中,但事实并非如此。首先,优先考虑内容,其次,添加此内容,直到覆盖 1-2 页。跳过剩余内容。不要担心招聘人员不会知道你所做的一切!他们会对你的简历亮点印象深刻,并很乐意在面试中发现你的其他经历。
写一份适合一页的简历。
如果您有 10 年以上的经验,请考虑两页。请记住,一些招聘人员可能会跳过冗长的简历而不读一行。他们想立即找到最令人印象深刻的项目。添加不太重要的项目和/或过多的单词会分散招聘人员的注意力并让他们浪费时间。
How to list your employment history
如果您有短暂的工作 历史(2-4 个角色),则将其全部添加到简历中。如果您有很长的职位列表(4 个以上职位),请不要查看完整的工作经历。只需选择最令人印象深刻的 4 个角色(在重要公司中的角色、领导角色、您取得了巨大成就和/或做出重大贡献的角色)。
对于每个角色,遵循 Achievement->Action->Effect 模型。永远从成就开始!这将成为招聘人员的磁铁。一旦他们阅读了成就,您就会引起他们对继续阅读的关注。
例如,假设您在 Foo 公司工作,并且您通过调整其参数设法将连接池的性能提高了 30%。现在,该应用程序可以容纳额外 15% 的事务吞吐量。将此成就添加到简历中的单个语句中,如下所示:
通过调整其参数将连接池性能提高了 30%,从而将事务吞吐量提高了 15%。
通过“成就”->“行动”->“效果”陈述列出最相关的角色。始终尝试衡量您创造的收益。不要说,我通过压缩 ... 减少了内存占用,而说,我通过压缩减少了 5% 的内存占用。 ...
List the most relevant projects (top five)
一些招聘人员更喜欢直接进入您简历的我的项目部分。他们遵循 No Fluff, Just Stuff 声明。您不必列出所有项目!进入前五名并仅添加那些。不要添加来自同一类别的所有五个。选择一两个独立项目,一两个开源贡献,等等。一个在 GitHub 上获得高星级评价的独立项目会给招聘人员留下深刻印象。
列出热门项目及其相关详细信息。 这是摆脱谦虚并尽力给人留下深刻印象的正确地方。
Nominate your technical skills
技术技能部分是强制性的。在这里,你必须列出你知道的编程语言、软件和工具。它不必像一个命名法,但它也不必是一个短而细的部分。它必须与所列项目相关且协调一致。以下列表提到了编写技术技能部分的主要标准:
- 不要列出所有 Java 风格:不要添加 Spring MVC、Spring Data、Spring Data REST、Spring Security 等列表。只说春天。或者,如果你是 Java EE 人,那么不要添加 JPA、EJB、JSF、JAX-RX、JSON-B、JSON-P、JASPIC 等的列表。只说 Java EE,Jakarta EE。或者,如果您在职位描述中看到它们以这种方式列出,那么您可以将它们添加到括号中。例如:Spring(MVC,数据包括数据 REST,安全性) 或 Java EE(JPA、EJB、JSF、JAX-RX、JSON- B、JSON-B、JASPIC)。
- 不要添加软件版本:避免使用 Java 8、Spring Boot 2 或 Hibernate 5 之类的东西。如果需要这些细节,那么面试官会问你这些细节。
- 不要列出实用技术:避免列出项目中常用的实用程序库。例如,不要添加 Apache Commons、Google Guava、Eclipse Collections 等。招聘人员可能没有听说过他们。或者,如果他们有,他们会讽刺地微笑。
- 不要列出你只是轻轻接触过的技术:列出你很少和/或表面上使用过的技术是非常冒险的。在面试中,您可能会被问到有关他们的问题,这将使您陷入困境。
- 对于每一种技术,添加你的经验:例如写Java(专家)、Spring Boot(高级)、Jakarta EE(精通)、Hibernate (专家)。
- 不要以几年来衡量您对技术的体验:大多数时候,它是不相关的。这个指标对招聘人员来说并没有什么意义。你的经验体现在你的项目中。
- 避免使用常用技术:不要列出操作系统、Microsoft Office、Gmail、Slack 等。列出这些东西对招聘人员来说只是噪音。
- 仔细检查你的英语:如果简历有错别字,招聘人员可以丢弃它。如果您的母语不是英语,那么请找一位以英语为母语的人来校对您的简历。
- 不要列出单一的编程语言:理想情况下,您应该列出两到三种编程语言(例如,Java(专家)、C++(中)、Python(有经验)),但不要说你是所有这些方面的专家。没有人会相信你!另一方面,单一的编程语言可以被解释为意味着你不愿意学习新技术。
- Split technologies into categories: Don’t add the technologies as a long, comma-separated list. For example, avoid something like Java, Ruby, C++, Java EE, Spring Boot, Hibernate, JMeter, JUnit, MySQL, PostgreSQL, AWS, Ocean, and Vue.js. Split them into categories and sort them by experience, as in the following example:
a. 编程语言:Java(专家)、Ruby(中级)和 C++(初学者)
b. 框架:Java EE(专家)、Spring Boot(高级)
c.对象关系映射(ORM):Hibernate(专家)
d. 测试:JMeter(专家)、JUnit(高级)
e. 数据库:MySQL(专家)、PostgreSQL(中级)
f. Cloud:AWS(专家)、Ocean(初学者)
g. JavaScript 框架:Vue.js(中级)
LinkedIn resume
最有可能的是,您的 LinkedIn 个人资料将成为招聘人员的第一站。此外,每当您尝试申请工作时,大量的电子工作平台都需要您的 LinkedIn 帐户。甚至在这个帐户是强制性的情况下。
LinkedIn 是一个致力于跟踪专业联系的社交网络。从本质上讲,LinkedIn 是一份关于类固醇的在线简历。在 LinkedIn,您可以创建工作提醒,同事、客户和朋友可以为您或您的工作背书,这非常有价值。
重要的提示
请注意保持您的 LinkedIn 简历与您的纸质简历同步。此外,如果您正在通过 LinkedIn 寻找工作,请注意,因为您的所有联系人都会收到有关您更新的通知。这些联系人包括您当前公司的人员,而且您很可能不希望他们知道您正在寻找新工作。解决方案是在进行更新之前禁用这些通知。
现在,我们可以讨论工作申请流程。
The job application process
技术公司更喜欢多步面试。但是,在被邀请参加面试之前,您必须找到正在招聘的公司,申请他们的工作,然后最终见到他们。
Finding companies that are hiring
过去 年(2017 年以上)的调查估计,所有工作中有 70%-85% 是通过网络填补的 (linkedin.com/pulse/new-survey-reveals-85 -all-jobs-filled-via-networking-lou-adler/)。技术工作(尤其是在 IT 领域)代表了利用网络的领先部分。
几乎在任何国家,都有几个电子工作平台。我们称它们为本地电子工作平台。通常,本地电子工作平台会列出活跃在该国家/地区的公司或全球招聘公司的工作机会。
在全球范围内,我们拥有全球电子工作平台。这些平台包括几个主要参与者(所有这些网站都允许您上传简历或在线创建简历):
- LinkedIn (linkedin.com):在全球 200 多个国家拥有超过 6.1 亿用户,这是世界上最大的专业网络和社会招聘平台。
- Indeed (indeed.com):这是一个领先的工作 网站,从数千个网站中收获了数百万个工作。
- CareerBuilder (careerbuilder.com):这是另一个巨大的平台,发布来自全球各地的大量工作。
- Stack Overflow (stackoverflow.com/jobs):这是供开发人员学习、分享他们的最大、最值得信赖的在线社区编程知识,并建立自己的职业生涯。
- FlexJobs (flexjobs.com) 和 Upwork (upwork.com):这些 是专为自由职业者 提供优质、灵活的远程工作的平台。
提供对找工作有用的服务的其他平台包括:
除了这些平台之外,您还会发现许多其他平台。
Submitting the resume
首先,查看公司的网站。这可以帮助您了解以下内容:
- 看看你是否可以直接通过公司网站申请(绕过中介机构,可以加快流程,公司可以直接雇佣你,无需向中介机构支付佣金)。
- 您可以在公司数据库中注册,以便在有合适职位空缺时联系。
- 您有机会了解更多关于公司历史、愿景、项目、文化等的信息。
- 您可以找到公司相关人员的联系方式(例如,您可以找到电话号码以获取详细信息和支持)。
其次,仔细检查您的简历和在线个人资料。最有可能的是,如果你的简历给招聘人员留下了深刻印象,他们会在谷歌上搜索你的名字,并检查你的网络活动。从技术内容到社交媒体,所有内容都会在向您发送面试邀请之前进行扫描。
第三,不要向所有公司发送完全相同的简历!对于每家公司,对简历进行调整,使其尽可能与职位描述相关。
I got an interview! Now what?
如果您到目前为止遵循了路线图,那么几天后您就会收到一封电子邮件或 电话邀请您参加面试。哦,等等……你是说你已经面试了?凉爽的!是时候准备好自己了!
The phone screening stage
大多数 IT 公司更喜欢使用电话屏幕开始多步骤面试流程。电话屏幕通常通过 Skype、Zoom 或 Meetup(或类似平台)完成,您需要共享您的网络摄像头。还需要一个麦克风和一副耳机。如果您选择远程位置,电话屏幕非常受欢迎,但最近,它们被用于各种位置。
通常,公司使用两种方法:
- 与人力资源或安置机构人员的电话屏幕:这是一个可选的、非技术性的 15-30 分钟面试,旨在详细说明报价条款、暴露您的个性、关注点、你和他们的期望,等等。这可以在技术电话屏幕之前或之后进行。
- 技术电话屏幕优先:有些公司会直接邀请您进入技术电话屏幕。在这种情况下,您可以期待几个技术问题,可能是一个测验,以及一个或多个编码挑战会议(解决编码挑战是本书的主要重点)。如果您通过技术电话屏幕,那么很可能会出现非技术电话屏幕。
Going to in-person interviews
除非您选择 远程职位,否则下一步将包括面对面采访。有没有手机屏幕的情况,这是面试的第一步。在这种情况下,您可能会接受 HR 人员的面试,然后是技术面试。但是,如果您有电话屏幕,那么您可能会或可能不会被联系到。这取决于公司如何评估手机屏幕。如果他们决定不进行下一阶段的面试,那么您可能会收到一些反馈,其中包括关于您的手机屏幕性能哪些方面好,哪些方面不太好。不要忽视反馈,仔细客观地阅读。它可能会帮助您避免重复同样的错误。说到错误...
Avoiding common mistakes
- 忽视信息的力量:在某些情况下,面试失败后,我们会遇到朋友告诉他们进展如何。这时,你的朋友可能会说:朋友,我认识一个人,2个月前在这家公司面试成功了!为什么你之前不告诉我?我相信他可以给你一些见解! 显然,现在这样做已经太迟了!避免此类情况并尝试获取尽可能多的信息。 查看您或您的朋友在公司是否有联系人,在社交媒体上询问等等。这样可以获得非常有用的信息。
- 答案缺乏清晰性和连贯性:您的答案应该是技术性的、清晰的、有意义的、富有表现力的,并且始终围绕主题。 深思熟虑地回答问题。口吃、不完整的答案、感叹词等不会被面试官欣赏。
- 考虑到该图像无关紧要:不要忽略您的图像!穿着专业,去理发店,闻起来很香!所有这些方面都是第一印象的一部分。 如果你看起来很草率,那么你的代码可能看起来是一样的。如果你穿得专业,那么面试官会认为你比其他人高人一等。 但是,穿得专业并不意味着你应该富裕。
- 没有很好地推销自己:面试官必须看到你的价值。没有人能比你更好地向他们传达你的价值。告诉他们你遇到的问题(在以前的公司,在某个项目中,等等),并解释你是如何与你的团队或独立解决它的。雇主需要优秀的团队合作者,但也能够独立工作。遵循 Situation|Action|Result (SAR) 方法。首先描述情况。继续解释你采取的行动,最后描述结果。
- 不练习编码挑战:在某个时候,您将被安排参加至少一项编码挑战。大多数时候,一般的编码技能是不够的!这些挑战是面试特有的,你必须在面试前练习它们。根据经验,解决编码挑战(问题)遵循 Approach->Break down->Craft 解决方案模式。显然,您无法记住解决方案,因此您需要尽可能多地练习。在本书的后面部分,我们将讨论解决编码挑战的最佳方法。
一旦面试完成,就该等待回复了。大多数公司会告诉你他们需要多长时间才能提供最终答案,并且通常会提供代表录取、拒绝、下一步面试或只是申请状态的答案。保持你的手指交叉!
Summary
本章总结了在 Java 生态系统中获得工作应遵循的最佳实践。我们谈到了选择合适的工作和我们的资格、获得经验、处理简历等等。这些建议大部分是针对学生或刚毕业的人。当然,不要将这些建议视为详尽的清单或应整体应用的清单。这些做法将帮助您挑选出您认为有吸引力的成果,并让您在流程中加入自己的风格。
接下来,让我们看看大公司是如何进行面试的。