我是如何获得AWS工作的
背景
我的第一份软件工作做了三年半,期间我从初级工程师晋升到了中级工程师。很明显,如果我想继续提升技能,就必须换公司。
首先,我把LinkedIn上的求职状态改成了“待业”。大约三个月后,一位AWS的招聘人员联系了我。在AWS工作是我的梦想。她说我可以面试几个不同的团队,我们最终决定我去面试API Gateway团队。
我有2个月的时间准备。
步骤 0:学习编程挑战
我读了两本书,只推荐《Cracking the Coding Interview》。虽然这是老生常谈,但它确实能让你为编程挑战做好充分准备。我通读了一遍,每章至少做一道题,然后尽可能多地复习了每章的习题。
第一步:参加亚马逊的面试技巧培训班(如有)。
AWS 为求职者提供了许多资源。他们希望求职者能够成功。如果我没有参加招聘人员安排的那一个小时的研讨会,我就不会得到这份工作。这篇文章中的大部分建议都与他们的建议不谋而合。
步骤二:为每个LP找到两个故事
亚马逊严格遵循其领导力原则。这些原则是一套用于指导决策的简短语句。
每个领导力原则选择两个故事。每个故事应:
- 遵循STAR法则。
- 解释要简短(最多3-5分钟)。
- 要与职业经历联系起来。如果你刚从大学毕业,那就把它与大学经历或课外项目联系起来。
把故事内容写下来,以便你在面试时可以查看笔记并回忆起整个故事。
这花了我大约10个小时。当时,领导力原则共有12条,这意味着需要写24个故事。我尽力而为,最终写出了大约20个故事,其中4个故事涉及不同的原则。
注:面试过程中,我根据提问调整了讲述的故事。面试时不要过于拘泥于形式,尽可能多地准备一些故事,并随时准备好分享。
步骤 3:找到有用的设计模式并能够应用它们。
埃里希·伽玛的《设计模式》一书是很好的参考资料。不必背诵整本书(除非你愿意)。相反,选择四种不同的设计模式,看看它们是否能帮助你解决问题。
我选择了:
- 抽象工厂
- 建造者
- 辛格尔顿
- 装饰师
- 代理人
- 观察者
- 迭代器
在面试的软件设计环节,我只用到了其中一款软件。不过,随着面试的进行,我又零星地提到了其他几款软件。
第四步:观察树木
这是《Cracking the Coding Interview》里的内容,请查阅一下。哪怕只是关于广度优先搜索/深度优先搜索的部分也行。
第五步:了解 O(n) 符号
有些人已经这么做了,但以防万一,这真的很重要。不仅仅是面试的时候。
第六步:准备至少四个深思熟虑的问题。
问一些能表明你清楚自己对工作的期望以及想要加入这家公司的问题会很有帮助。可以问一些你关心的、与软件相关的具体问题。例如,我喜欢问:“你们的轮班安排是怎样的?”或者“你们团队的软件发布流程是怎样的?”
弄清楚你在工作中看重的是什么,并事先把这些问题写下来。
关键步骤:记太多笔记
上面这张图是我面试时的设备。课堂上提到过,面试官允许带笔记。一定要坦诚地说明你带了笔记。如果你打算参考笔记,而且是远程面试,可以很自然地问:“嘿,我可以参考一下我的笔记吗?”或者“我快速翻一下笔记,找找相关的案例。”
说实话,除了那20个LP故事之外,其他的我都记住了。不过,把那20个故事写下来真的非常有用,我很庆幸自己花时间把更多内容写下来,因为它们让我印象更深刻。
面试形式
自从我面试以来,情况可能有所变化,但以下是我当时需要经历的面试轮次:
- 电话面试(招聘人员)
- 两项简短的、可在家进行的 LeetCode 风格测试
- 与招聘人员联系,确定面试时间和培训机会。
- 4轮时长均为1小时的现场面试:系统设计、软件设计(模式)、2个编程练习。每轮面试中,我都被问到一个行为问题。
实用链接
- 破解编程面试:https://www.crackingthecodinginterview.com/
- 位操作技巧:https://graphics.stanford.edu/~seander/bithacks.html
- 《算法入门》(Grokking Algorithms)(一本我最近发现的非常适合初学者的书):https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230
- 设计模式:https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612
- STAR面试技巧:https://www.amazon.jobs/en/landing_pages/in-person-interview
- 领导力原则:https://www.amazon.jobs/content/en/our-workplace/leadership-principles
这花了多长时间?
在开始准备之前,我没有任何 LeetCode 的经验。我的第一份工作也没有编程挑战。我读过《设计模式》这本书,但我并没有把所有模式都背下来。这是我第一次申请 FAANG 公司的职位。
这是我梦寐以求的工作,所以我几乎每天晚上都花好几个小时为此学习。我估计我花了100个小时准备面试。
这其中有多少是运气成分?
面试总有运气的成分。就我目前在LTK的这份工作而言,我第一次面试被拒,第二次才被录用。
你觉得你会怎么做?
我没能很好地处理好offer环节。他们最终给我的薪水比我要求的多了3万美元,因为我不相信自己之前对亚马逊薪资水平的调查。如果我当时相信了那些调查结果,或许还能争取到多1万美元的薪水。
加入公司时,你可以选择使用哪个操作系统。我真希望当时问问团队成员都用什么操作系统。其实还有第三个选择,那就是使用Linux笔记本电脑,虽然这个选项没有列出来。我用了8个月后换成了Linux笔记本电脑,体验非常棒。
你得到这份工作之后发生了什么?
我在AWS从事API Gateway项目工作了1年半。期间,我被安排到一个S团队项目中,负责领导该项目的多个部分,并取得了显著的成功。我故意说得比较含糊,因为我不确定可以透露多少细节。
之后,AWS要求所有人返回办公室。我被要求选择一个办公地点,否则(默认情况下)就得搬到科罗拉多州。他们的做法非常人性化——给了我一年的时间考虑。我非常感激他们给了我这么长的考虑时间。
我决定离开,但AWS的工作经历是我最喜欢的职业经历之一。我遇到的同事都是我见过的最有经验的工程师,等我儿子长大一些,我待在家里的时间不再那么长时,我会考虑重新加入AWS。
如果你想给予鼓励,或者想在这些帖子公开之前阅读它们,请我喝杯咖啡,我们开始交流吧。
文章来源:https://dev.to/ivypuckett/how-i-got-a-job-at-aws-5hm3
