高级农民
积分 1270
大米 颗
鳄梨 个
水井 尺
蓝莓 颗
萝卜 根
小米 粒
学分 个
注册时间 2018-12-20
最后登录 1970-1-1
在leetcode上看到一位40多的大叔在艰难的2020年如何奋斗最后拿到offer,当看到他为了改变5点起床,坚持每日8小时的训练,参加竞赛,为了家庭的责任,没有放弃。真的是respect,非常正能量。如果你只是在地里一味抱怨的时候,还是想想人家是怎么去努力怎么去改变的。
简单翻译一下,原文. ----
https://leetcode.com/discuss/int ... e-to-offer-at-FAANG
. check 1point3acres for more.
我的故事
我今年 40 多岁,是一个兴趣广泛的人。尽管我知道一些写码,就是微控制器中的汇编语言。我不得不从头开始学习。许多年过去了,最终我转向了 Web 开发。
. check 1point3acres for more.
我不认为自己是一个非常聪明的人(只是有点固执和执着)。我没有 CS 背景。不知道什么是二叉树、大 O、递归等等……对我来说,这都是无用的外星语言。我为什么要这样做,躺平不好吗?所有这些东西都在我日常工作中使用的库中被抽象出来。我更专注于测试、满足团队和产品目标、团队动态等……我的软件工程职业生涯幸福地过着幸福的生活,却不知道幕后是什么。
几年前,Facebook 和 Google 的招聘人员联系了我。我给出了3个月的时间表。我查看了他们寄给我的材料,意识到我一无所知。所以,我开始看一些书,然后天真地购买了其中一门有 x 题的在线课程。不知道有 Leetcode 这样的东西。
. ----
我悲剧失败了两个电话面试。经验教训:你必须真的,真的提高你的水平。
时间飞逝。又经历了一些公司和角色。然后突然到 2019 年底,我自己没工作,也没有遣散费。巧合的是谷歌和 Facebook 招人的给我打电话,看看我的表现如何。看起来所有时机都是对的。我在拥有时间和资源来追求这个冒险。千载难逢的机会!! (特别是对于像我这样有很多责任的男人)。当我准备好迈出这一步时,我准备去润!
我把自己置于一个职业运动员马拉松的心态中。或者为争霸赛训练的MMA选手。我认为任何没有重大健康问题的人都可以跑完马拉松比赛。你只需要适当的计划、纪律和培训。 FAANG 的面试也是如此。比如如果你用汇编语言实现一个抖动抑制算法,设计一个双面印刷电路板或编写一个微服务网关,那么我肯定可以,对吧?.
这一次,确保自己做好了充分的准备。我知道有一些非常紧迫的目标。我应该能够完成几乎所有的 L.C.中等难度 - 在合理的时间内很难。我应该能写干净且组织良好的代码。我能够通过问题进行适当的推理和沟通。我应该在系统设计上做好。我必须能够对照这些目标测试自己,以衡量进展情况,并在此过程中做好准备。
.1point3acres
我制定了一个非常详细的计划,包括里程碑和预期的时间表。例如:到那个时候,我会读完并彻底理解这本关于算法的书。或者到其他日期,我将完成 x 个问题。或者到日期 X,我将能够在 40 分钟内完成大多数中等问题。.--
该计划是围绕提升基础能力组织的。从最基本的概念开始,逐步构建到更复杂的概念。我想确保薄弱的基础是坚实的。我不能只是假设和“即兴发挥”。
所以,我的第一步是学 CS理论。首先从“算法导论”开始。但是在几章之后,我陷入了数学困境,并且感觉正在偏离目标。所以我换了个方向,决定试试 Skienna 的“算法设计手册”。我发现这本书更容易消化和切中要害(我也很喜欢他的战争故事)。在阅读了所有章节并完成了大部分练习之后,我觉得我是一个开始解决问题的好地方。. check 1point3acres for more.
所以我开始四处探索:Hackerrank、Byte by Byte、Leetcode。我还尝试了“Elements of programming interviews”一书。在尝试了一些问题之后,我注意到我花了太长时间并且对我的方法并不满意。我也注意到有点杂乱无章。在复习了许多科目(数学、图论、位运算、DP.)之后,即使我理解了它们背后的理论,我也未能有效地找到解决方案。我的头脑有时会陷入一个奇怪的循环。
我在家的作息也很不规律。更糟糕的是,COVID 流行来袭,现在我和妻子把孩子们在家里,不得不分工让他们接受教育和娱乐。我不得不做出非常大的改变。.google и
我决定改变我的日程安排,早上 5:00 起床,这样我就有几个宝贵的时间来真正专注。然后我还和我的妻子约定了一些严格的时间表,这样我就可以有稳定的时间来磨练。
. 1point3acres.com
我还需要调整我的策略。我浏览了许多论坛来寻找其他其他工程师如何搞定。用的什么策略,看的什么书。什么时间线,什么规划。
在这次重组之后,我将策略缩小到:-baidu 1point3acres
只关注 LC从简单的开始。一旦我感到舒服,就上中等难度,然后再上难度。 广度而不是深。不要只关注一个主题,而是要多样化。 专注于列表。例如“100个顶级面试问题”等... 记录时间。
. 1point 3acres
在最后一个主题上,我希望能够衡量我的进步。如果你不测量就根本谈不上了解自我。所以,我整理了一个包含以下的谷歌表格:
类型(数组、DP、图论等...) 问题名称和链接 级别(简单、中等、困难) 开始日期时间 结束日期时间 花费的总时间 时机。 (红黄绿) 结果(红黄绿) 笔记(我做到了吗?为什么?为什么我失败了?要寻找什么?).google и
在时间和结果上,我的想法是使用颜色代码来给我的表现打分。例如,如果我能够在大约 20 到 30 分钟内解决一种,那么它就是一个绿色。如果在 60 左右,那就是黄色。更多或根本没有那是红色的。对于结果,考虑到解决方案优化和简单性,区分绿色的和黄色。如果不会的,那就是红色。这将使我对进步有一个直观的衡量标准。随着我积累的问题越来越多,我可以反思并看到我的进步,并确认我正在前进。
. ----
因此,通过这种方法,事情开始变得更好,更有条理。我会想出解决方案,对它们进行编码。然后与讨论论坛上的解决方案进行比较。我觉得论坛是我学到的最多的。我是否能够提取最有趣的模式添加到我的工具箱中。
.--
在系统设计方面,由于我在公司构建 Web 产品的多年经验,我对基础设施(特别是 AWS)有很多了解。我有信心能够通过系统设计面试。但我不想认为这是理所当然的。所以在阅读了一些论坛之后,我决定购买“Building data intensive applications”。我还在xx 接受了 grocking 系统设计面试。看完这些材料后,我意识到我是多么缺乏。
计划的最后一部分是进行一些现实世界的检查。如果你只是自学,即使你解决的问题让你满意,但绝对不能保证你会在真正的面试中取得成功,考虑到现场和时间压力。就像马拉松运动员在接近大型比赛之前会进行热身一样。或是在健身房对练的拳手。. 1point 3 acres
.1point3acres
我开始预约模拟面试。我首先尝试了 xx。在这里,轮流就平台提供的问题面试一位工程师同事。这有助于进行现实面试。但我对面试官不太满意。我觉得大多数人都没有面试经验,也不知道在候选人身上寻找什么信号。所以反馈不是那么好。
我在所有模拟面试中一直失败。不仅在解决问题上,而且在时间上。我开始有点绝望和沮丧。
于是我又调整了计划。我从模拟中休息了一下,专注于时间安排。我用的是 LC.模拟面试功能。早上我要做的第一件事就是拿一两个 LC.模拟面试。一个上午刷 4 个中等难度题。
我还注意到在大多数都有一些新出现的模式。即使在理想的世界中,你不应该试图仅仅将问题“归类为模式”,但我认为考虑到时间限制和面试的性质,尝试缩小模式是一个很好的策略、我与一位亚马逊工程师进行的面试也证实了这一点。他告诉我将我的训练安排这些时间:
10 分钟,阐明假设、特别的测试条件、定义方法。定义模式:
直截 BFS / DFS Floodfill 蛮力 回溯 DP 贪婪
. 1point 3 acres
.google и
Gayle Lackman 的“cracking the coding interview 中也证实了这些流程
要了解有关模式的更多信息,我还从 e-d-u-c-a-t-i-v-e 买了“编码问题的模式”。这是非常有帮助的(虽然不是完全包罗万象)。
我最挣扎的一件事是动态规划。没有该死的方法!那是纯粹的深奥魔法。
几个月过去了。我越来越好,但仍然不是我想要的。我的时机还没有到。我参加了 LC比赛,但从未完成所有 4 个问题。模拟面试有时很成功有时不是。但我已经习惯了。我就是要厚脸皮,一生中再也不会遇到的人给你下判断,这不会让这影响到我。随着时间的推移为变得更聪明,学会探索问题,如果没有找到最佳解决方案,则编写一些蛮力解决方案,至少会写一些。
. 1point 3acres
我与招聘人员保持联系,但一直在推迟面试日期,因为我仍然没有准备好。几个月过去了。 4、5、6。字面意思是 400 个 leetcode。几十个模拟面试。我还是不满意。有什么东西不见了。它达到了我觉得自己无法修复的地步。在此期间,我似乎无法变得更好。也许下一个幸运星来临会带来更好的收成?
在这一点上,我只需要迈出一步。不管我再做多少 LC.,我都不觉得自己会变得更好。再加上我的资源开始减少,为了我自己的理智,我真的需要开始工作。与其他工程师保持联系。朝着共同的目标努力。
所以我决定冒险一试。我想如果这次我没有得到任何offer,至少我会比上次做得更好。而且我可以在任何其他非顶级公司做得更好。
我害怕遇到难堪的面试官。我担心让自己难堪。在onsite的那一天,我感觉想取消整个事情并躲在床下。为了放松,在面试开始之前,我会播放一些有趣的 youtube 视频。
电话screen、OA、虚拟现场、行为、系统设计、编码。如此反复。
被拒了好几次。但最后收到亚马逊的招聘人员的电话和offer。. 1point3acres.com
最后想法和建议: . From 1point 3acres bbs
如果你到了这里,我真的很感激你花时间阅读关于我的文章。. check 1point3acres for more.
有一个计划。设置明确的里程碑。明确的目标,到达日期。 愿意在旅途中多次调整策略 自我衡量 别傻等。不要以为你会上天。说实话。找出你的缺点。一个个处理 进行现实检查。走出你的舒适区。做模拟面试。习惯不舒服的面试官。习惯令人失望的反馈。它会让你变得更强大。 遵守纪律。始终如一。写下你的进步。你可以看到你实际上在前进。 奖励你自己。善待自己。这玩意确实很难。你的辛勤工作应该得到回报。花几分钟看些搞笑的 youtube。去咖啡店买个甜点。 FAANG 的工程师中只有极少数是艾伦·图灵那种天才。其余的像你和我这样的人,他们很可能失败了 2 次、3 次或 4 次,直到他们得到了。他们经历了与你完全相同的旅程。 在寻找解决方案之前强迫自己解决问题。但要设定合理的时限。说2小时。 1.5hs...然后看看解决方案,记下你学到的东西。 LC社区是宝藏。你会发现宝贵的解释、模式和解决方法。 为社区做贡献。即使你的解决方案看起来不太好,请发布它。尝试添加解释。这让你进入沟通和解释你的解决方案为什么有效的心态。如果它很糟糕,你可能会从 Leetcoder 小伙伴那里得到反馈。 缩小你的编码选项。如果有 10 种访问哈希映射的方式,请关注适合大多数情况的一种或两种。其他编码结构(循环、条件等)也是如此。这将节省时间。 记下模式并尝试记住它们。按层级顺序 BFS 遍历应该是不费吹灰之力的,应能够闭上眼睛对其进行编码。与使用出现计数的频率初始化哈希图相同。或用于探索矩阵上相邻单元的 BFS。或者迭代二分搜索......牢记它们并能够像口袋妖怪大师一样在秒速中调用它们。 在面试期间,请确保向面试官提供他们正在寻找的信号。努力管理好时间。问他们“我们如何处理时间”。提出很好的探索性问题“这种方法听起来不错吗?我们应该编写这个代码吗?” 首先尝试使用蛮力方法。如果你不能优化,至少你可以编写代码,面试官就会知道你的代码有多好。结果可能是“弱录”与“不录”。 Placeholder是你的朋友。特别是时间紧。如果算法需要初始化一个 MxN 数组,只需将其抽象到一个方法中,放置占位符,让面试官知道它的作用,然后对其进行编码并继续前进!很可能接下来的回溯方法是面试官正在寻找的最重要的部分。 不要低估测试你的代码。总是这样做。从小投入和简单案例开始。然后考虑特殊情况并扩展到更复杂的情况。一行一行地走。假装是 IDE 中并随时更新变量值。证明你的东西确实做到了它所声称的。 在系统设计上,不要只是把所有东西都读一遍。从头开始练习白板解决方案。推理并通过它们交谈。就像你的 LC.磨砺,每天尝试进行系统设计。在给定的数据库技术、分区、数据库索引、实时与异步等,问自己 5 次为什么……需要能够证明决定是合理的,并且案例必须是完整的。 行为面试:使用 STAR 格式。把你的整个工作历史记录下来。然后个别情况、项目、成功和失败。把每一个都编成一个故事。 最后一点对于亚马逊及其领导力原则尤为重要。 运气可能是一个很大的因素。所以不要把所有的鸡蛋都放在一个篮子里。通过进行大量的面试,战略性地拖延,最大限度地提高成功结果的可能性。 不要放弃。 不要被打败自己。你才是最棒的。
这只是一个旅程。目的地并不重要,重要的是你一路上学到了什么。这几个月教会了我自己以及能走多远的知识。我现在是一名更牛b的工程师,并且开始考虑着手开展几个月前看起来像是火箭科学的项目。
如果你这次没有成功,不要难过。总是有很多金光闪闪的公司和来自各行各业的令人难以置信的人,你将从他们身上学到很多东西。
最后再次感谢您的阅读
我希望你好运
.1point3acres
本帖子中包含更多资源
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
上一篇:
Apple超级大牛因不满RTO政策辞职 下一篇:
谷歌cliff后大家怎么办