终极软件工程求职指南

我是一名软件工程师,曾在微软和谷歌工作。前段时间,我进行了一场为期120天的求职之旅,完成了30多次面试,获得了多份工作邀请。在我与其他候选人的准备和讨论过程中,我发现虽然有很多关于面试的信息,但一些关键的细节被遗漏或隐藏在经验帖子的深处。这包括传达你的故事,通过系统设计传达你的关卡,或在时机成熟时协商 价等细节。

目标受众

  • 有经验的软件工程师
  • 申请大型科技公司的个人贡献者角色(如谷歌,Meta, Microsoft, Apple, Amazon等)
  • 针对中高级工程水平
  • 注:如果你有兴趣为初级开发人员发布类似的帖子,请在评论中留言或给我发邮件。如果有很多感兴趣的人,我也会考虑为初级开发者制作一个。

    动机

    和我交谈过的大多数人都讨厌找工作和面试的过程。我听到的第一个理由是:“这个过程是有缺陷的,我想尽快完成它。”我同意面试过程是有缺陷的,但是我们可以通过系统的计划和持续的努力来利用这个有缺陷的系统。

    此外,一个明确的动机是,如果你遵循文章中描述的蓝图,随着工作的变化,你将能够:

  • 提高你的薪酬水平。我见过有人在换工作的时候把他们的薪酬从30%提高到200%。
  • 提升你的职业水平。通过讲述你的故事并在系统设计面试中胜出,你就可以将目标锁定在当前工作的水平或更高的水平上。
  • 找一份你真正感兴趣的工作。
  • 根据我对别人找新工作的观察,我坚信如果你在目前的职位上做得很好,你会找到一份自己喜欢的新工作。其中一个原因是,目前是一个求职者的市场,每家大型科技公司都在招聘。

    您将需要稍高的时间承诺来遵循这个蓝图,但它将非常值得投入时间和精力。

    面试过程概述

    面试过程大概是这样的:

    招聘人员电话→电话筛选→现场面试(4-6次)→录用阶段

    招聘人员打电话

    这通常是一个15-30分钟的电话与招聘人员讨论你对公司的兴趣。在和任何招聘人员交谈之前,你应该已经清楚你下一份工作的目标(你已经把它列在了你的故事中)。这通电话的目的是传达这些目标和你的故事,并讨论潜在的相互契合。

    此外,记住一旦招聘人员为你安排了面试,他们将是你在整个面试过程中最大的盟友和朋友:至少在谈判开始之前。要意识到他们对你在面试中成功并签下一份工作很感兴趣。你应该随时向他们寻求任何你需要的帮助或资源。

    张贴这通电话,你将移动到电话屏幕。

    手机屏幕

    在进行这些面试之前,你应该为算法面试做充分的准备。你这次面试的目的是展示你的技术能力,在编码部分结束后向面试官提出一些有见地的问题,然后进入现场面试。

    现场采访

    现场活动通常在公司园区内进行4到6轮,但全球疫情迫使现场活动以虚拟方式进行。这对应聘者来说是一个优势,因为现在我们可以错开时间来安排工作,而不是被迫在每个现场都使用假期。

    你将面临算法问题解决,系统设计,行为和经验面试。你应该为与许多人见面感到兴奋,并热情地展示你的技术技能。现场的目标是给出强烈的积极信 和数据点,从而推进到要约阶段。

    提供舞台

    你已经走到这一步了,哇呼!在这个阶段,你所需要做的就是确定这是否对你来说是一个合适的机会,并协商让你高兴和兴奋地签约和加入的一揽子计划。

    每周的计划

    假设你会一直在兼职准备和面试,下面是一个15周的时间表。根据你的情况,你可以缩短或延长这个时间表。

    第一周:提升和过程理解

  • 起草你的故事,润色你的简历,以表明目标水平和范围。
  • 研究一下你可能有兴趣申请的公司。
  • 了解面试的过程,对面试的范围有一个大致的了解。
  • 更新状态为“开放寻找新工作”,隐私级别仅为招聘人员在LinkedIn上的级别。
  • Week 2-4: 2 – 4周: DS与算法基础

  • 回顾 络,推荐和招聘人员联系部分。
  • 为算法准备准备一份待办事项清单,每天完成一些任务。
  • 每天开始解决2个算法问题。
  • 与招聘人员交谈,并开始安排第7周或第8周的电话面试。
  • 5 – 7周: 系统设计基础

  • 为待办事项系统设计做准备,每天完成一些任务。
  • 每天继续解决2个算法问题。
  • 使用系统设计准备检查点来查看您所处的位置。
  • 第8-9周:技术电话面试和模拟面试

  • 完成大多数公司的电话屏幕。
  • 在pramp开始模拟面试。IO用于系统设计和算法。
  • 根据反馈不断研究系统设计。
  • 为行为轮询起草STAR例子。.
  • 开始安排现场面试。
  • 10 -13周: Ace的现场
  • 保持冷静和专注,祝你好运!
  • 在任何一轮现场面试之后的一天,向招聘人员寻求反馈。
  • 14日至15日周: 提供舞台

  • 查看博客上的 价阶段部分。
  • 一旦你签字,请把关于如何改进蓝图的说明发给我。
  • 如果您喜欢使用清单/待办事项列表,您可以在本谷歌文档中以清单格式找到上述时间表。你可以自己复制一份,在完成的时候检查一下。

    从这里开始

    我的建议是,通过复制谷歌文档,并在完成任务时勾选它们,来遵循每周的时间表。

    你的故事

    既然你已经决定开始找工作了,让我们来谈谈你希望你的职业生涯是什么样子的。我建议你草拟以下问题的答案,我们称之为“你的故事”:

  • 你为什么加入上一家公司?
  • 你上一份工作做什么?
  • 你为什么要离开,为什么是现在?
  • 在你的新工作中,你想继续做哪些事情?
  • 你在新工作中还希望得到什么?
  • 现在看起来可能不是这样,但以下步骤中的许多事情将取决于您如何回答这些问题。确定并筛选公司。根据你的故事和目标,列出7-10家你想面试的公司。你会发现有些公司比其他公司更有趣。将列表分成两个部分:备份公司和目标公司。在安排现场面试的时候,这些水桶会派上用场。

    水准测量和补偿

    从层次中获得一种层次和补偿的感觉。如果你不确定你应该达到的目标级别,在申请了解你的目标级别之前,考虑和你在那家公司的熟人谈谈。

    关于简历的一句话

    确保你的简历干净整洁。理想情况下,简历中的大部分要点都应该采用XYZ格式。

  • “完成[X]用[Y]来衡量,做[Z]来衡量。”
  • 络和LinkedIn

    我相信我的大多数读者都已经在LinkedIn上了,并且可能拥有全明星的LinkedIn个人资料。如果没有,你应该做的第一件事就是创建一个全明星的LinkedIn个人资料。我非常强调要有一个LinkedIn个人资料,因为在我找工作的过程中,有超过35个招聘人员在LinkedIn上联系我,这使我开始与6家公司交谈。

    当我们谈到这个话题时,我建议你们所有人都去开启开放的机会,将隐私设置为只在你的LinkedIn上招聘人员。你可以在这里找到步骤。[确保隐私只设置招聘人员,而不是公开的。]

    在LinkedIn上有一份体面的个人资料的第二个原因是建立一个支持你的 络,可能会有一些关系把你介绍给你感兴趣的公司。推荐是获得关注和开启这一过程的最佳方式。紧跟着开始和主动联系你的招聘人员交谈。直接申请应该是你最后的选择。

    招聘人员对话技巧

    这通常是你与公司的第一次对话。正如上面提到的,在整个过程中,或者至少在谈判开始之前,招聘人员都将是你的盟友和朋友。你应该明白,不是所有的招聘人员都是平等的,有些人比其他人更好。你应该记住永远保持开朗、礼貌和优雅。让你的招聘人员成为你的团队的一部分,和他们一起工作来获得你想要的待遇。

    在这个阶段,招聘人员可能会问你期望的薪酬是多少。我个人建议不要这么早给出任何数字。相反,重点讨论确定相互配合和水准。最好在 价阶段讨论数字。如果一个招聘人员一直在催促你,你可以告诉他们一个最高水平的范围,并确保强调你知道这家公司是有竞争力的,你确信双方可以达成一致。

    面试官的角度来看

    如果你曾经在面试桌上或招聘委员会的另一边,你就会知道,在做决定时,两个词经常被扔到一边:信 和数据点。

    面试官的工作是获得尽可能多的信 和数据点。现在你会问:“这些信 是什么?”信 是一种能展示你的特定技能、知识和经验的信息。

    例如,当我在面试时,我会寻找以下信 :

    善于纳谏的信

    这个信 解释了求职者对暗示和反馈的反应如何,他们是否愿意接受反馈,以及他们是否利用反馈来改进他们的解决方案。这种信 通常在解决问题和系统设计面谈中进行分析。

    编码信

    这个信 解释了候选人理解的深度,以及他们实际编码的效率。这在解决问题的面试中被分析。

    System Design 系统设计

    这个信 解释了这样的问题:“这个候选人有设计和领导大型技术系统的经验和能力吗?”在系统设计访谈中对此进行了分析。

    协作与管理信

    这个信 可以解释这样的问题:“这位求职者是否有能力与一群人一起工作或管理一群人?”这个信 也解释了候选人与大型团队合作或管理团队的经验。这在行为/经验访谈中进行了分析。

    不同的公司还会留意其他一些信 。例如,谷歌和亚马逊(Amazon)等公司会寻找一个信 ,来解释导航的模糊性。

    现在,你知道面试官在面试中看重什么了吧。在每次面试中,你的工作就是发出信 ,表明你适合这个职位,展示你的资历。

    数据结构,算法和问题解决面试准备

    科技面试很难。想象一下,在紧张的45分钟面试中,你在传达自己的想法的同时,还被评估实施最佳的解决方案。

    好的方面是你可以通过准备和练习在这些方面做得更好。准备工作包括:

  • 了解面试期望
  • 掌握DS和算法的基本原理
  • 学会坚持一种结构化的方法来进行良好的沟通
  • 解决问题的采访中期望

    编程语言

    大多数公司在面试技术职位之前不要求你了解任何特定的编程语言,但熟悉一门重要的语言通常是成功的先决条件。您不仅应该熟悉一门语言的语法,还应该熟悉这些语言的一些细微差别,例如内存管理是如何工作的,最常用的集合或库,等等。

    数据结构

    您需要理解常见数据结构的内部工作原理,并能够比较和对比它们在各种应用程序中的用法。您需要知道常见操作和内存使用的运行时。

    算法

    你的面试不会注重死记硬背;然而,理解最常见的算法可能会让我们解决一些问题更容易。了解不同类型算法的运行时、理论限制和基本实现策略比记住任何给定算法的具体细节更重要。

    Coding

    编码

    期望被要求编写语法正确的代码——不要伪代码。这里有一些遗漏的逗 或拼写错误,这并不是什么大问题,但我们的目标是编写尽可能接近于生产就绪的代码。这是你展示你编程能力的机会。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年6月23日
    下一篇 2022年6月23日

    相关推荐