[个人经验]来自伦敦的前端工程师Facebook:如何进入FAANG?

如何为申请FAANG级公司的面试做准备?与 Facebook伦敦办事处的前端工程师Oleg Gromov(例如Yandex,Toptal等)一起, 根据他的个人经验,根据上次网络研讨会制定了培训计划



讨论:



  • 在大公司工作的利弊,
  • 简历设计
  • 筛选,算法和架构部分如何,
  • 英语和软技能的作用是什么-在行为部分和一般的访谈中,
  • 每个阶段在哪里培训必要的技能:收集了有用的链接。






FAANG是Facebook,Amazon,Apple,Netflix,Google的缩写,据我所知,该名称出现在3-5年前。这些是IT资本总额最大的公司。它们就像每个人都在尝试的酒吧:如果您已经成长为FAANG,那么只有星星更高。许多工程师都希望到达那里:高薪,良好条件,发展机会-这是企业间最好的事情。



有人包括Microsoft,Uber,Airbnb,有人试图将其转移给俄罗斯大型科技公司:Yandex,Mail.ru,Avito,ABBYY。在我看来,FAANG不包括它们,其概念仅与上面列出的技术巨头有关。



但这是坊式的采访方式,那就是另一回事了。这种样式已被许多规模或盈利能力与FAANG不相似的公司采用。采访由4个或更多部分组成,其中包括:算法采访,系统设计,行为采访。当您准备进行这样的面试时,除了FAANG之外,您还可以在一家公司工作:格式很熟悉。我建议使用这种广泛的方法,我们将讨论接受Faang结构采访的公司。



在FAANG级公司工作的利弊



旁注:我只是在谈论Web开发方面的经验。我一生都在从事前端工作,随着时间的推移,我逐渐成为一名全栈Web开发人员:我处理从均衡器到数据库的代码。但是,我并不是说要在FAANG进行市场营销或项目经理面试和工作。



优点:



  • 发展。

    如果您真的喜欢自己的工作,如果您想要挑战和复杂的项目,则希望与包括最佳专家在内的众多人员发展和交流。

    到达Yandex时,我意识到的第一件事是:“周围的每个人都很聪明,但我不是。” 这是一个典型的故事,当您在Google,Facebook工作时也会发生同样的情况:大公司是非常有营养的增长媒介。特别是对于那些对建立业务而不是发展自己的专家感兴趣的人。
  • , .

    RSU — restricted stock unit, .        . RSU —  .  ,   RSU-   — ,       .
  • .

    :    !   .


缺点取决于您是什么样的人,以及您想要失去的生活。基本:如果您不希望成为机制中的嵌齿轮,则不应在FAANG工作,此外,机制受到严格监管。



自然,当一家公司拥有4万至6万人时-就像一个城市一样-流程必须非常严格。并不一定来自“对此报告”。我的意思是,公司有一个激励系统,可以以某种方式调整开发人员。



对于某些人来说是合适的:例如,大学毕业的年轻人。他们在某个地方工作了一年,加入了这个辉煌,享受了过程和结果。但是,那些已经拥有15年经验的人想要承担更多责任,他们希望将自己的经验不能用于公司内部的小任务。他们在FAANG可能不是很好。您需要牢记这一点,为自己和自己的优势选择一个位置:不要希望在Facebook上您会自动成为世界上最幸福的人。这不是真的。



在讨论面试阶段之前,我想退后一步,谈谈经验。这是尝试设计简历之前的初步步骤。



如果您想在FAANG担任高级职位,那么一年内做一个项目并进行精美展示是不够的。最有可能的是,这还不够。例如,如果您已经在多个项目上工作了几年,则可能需要准备面试-但最重要的是,您必须有经验。



如果您正在寻找具有重新安置的职位,请订阅我们的@g_jobbot机器人g-mate的IT招聘人员将帮助您打包简历,使面试官感兴趣。该机器人的设置简单快捷:范围,薪水,搬迁地点。适合您的选项将出现在Telegram中。







概要



从Yandex和Toptal的前招聘经理的角度说,我现在不在Facebook上招聘:重要的是要了解简历通常会发生什么。当您将其发送给公司时,它就是成百上千的公司。根据内部流程的不同,现在可能会看到它,或者永远都不会看到它。它可以说谎六个月,一个月或一天。



为了使人注意,简历中不应包含彩虹或猫的所有颜色,而应针对特定公司的特定空缺进行汇总。不要将您拥有的所有经验都包括在内,而是要专注于特定职位的需求。假设您是Facebook上的后端开发人员,并且您曾经是数据工程师,前端开发人员,网站管理员和sysadmin的工作-那么您可能不应该在简历中谈论sysadmin和网站管理员。



我为申请的每家公司制作了简历。除了我将履历表“送往大堆”进行面试的情况外。



我们去除无关紧要,强调优势,所有适合空缺的经验。并不是用脚后跟砸自己的胸:团队什么也没做,一切都只是我。任务是告诉您您是团队合作者并了解业务。特别是在您要申请高级开发人员职位时。他需要了解团队合作的流程,如何建立团队,如何消除瓶颈(即生产力受到影响的瓶颈)。以有利的眼光呈现所有这些,但不要虚张声势,说实话:如果有数量的话,最好表现出足够的成就-所有大公司都将赞赏。例如,描述以下技术进步:持续集成环境中的测试通过时间减少了30%,利润或转化率增加了N%。告诉我们有关团队的成就:您在哪里帮助建立流程,雇用谁和如何雇用。



通常,告诉我们您是承担责任的人。也许您甚至错了:您不应该在履历表中写下错误,但如果他们在面试中提出要求,您可以说。



一个不错的技巧是将您的简历写在最多1.5页上。采访者的时间很少,最好一次阅读所有信息。



当简历必须从一堆堆放到决定与谁通话的人时,推荐几乎是成功的必经之路。她将简历与其他人区分开来,否则,在成千上万的回复中,您可能根本不会受到统计上的关注。因此,如果您有熟人,请与他们联系。通常,人们很容易参考自己的简历:对于成功的推荐,他们会在公司内部获得奖金。建议不是禁忌话题或禁忌。通过推荐,我接触了Yandex,Facebook,甚至Toptal。



简历获得批准后,通常需要进行4步面试之前的另一次筛选。



筛选



招聘人员会进行筛选,有时还会进行技术筛选,这取决于流程的复杂性。招聘人员的首次求职电话几乎是100%。他评估整体能力,学习生活故事,为什么一个人正在找工作,试图过滤人流。有时有人不小心提交了简历-大量招聘中存在怪异现象。



通常,如果公司位于另一个城市,您会打电话:谈论一些关于自己,愿望,抱负,优势和劣势的信息。对话通常由招聘人员进行。如果您在30分钟内都没有保持沉默,但正常表现自己,则需要进行技术检查。



在技​​术筛选时,与算法部分大致相同,但时间却更少:40-60分钟,1-2项任务:通常在线。



这种格式需要一些时间来习惯。有一个白板采访:您站在黑板旁边,画图,尝试在上面写代码-这不是很方便,很多人抱怨。从某种意义上说,在线甚至更糟(有人可能会更好)。您坐在计算机旁-您看不到任何人,并且说-您不只是编写代码。我不想冒犯任何人,但是此刻经常会出现问题,特别是对于讲俄语的开发人员。在我们的文化中,吹牛和聊天不是习惯,我们“随身携带”。



请务必说:即使您是最有魅力和最有经验的开发人员,也没有人会读念头。对话还取决于上下文:问题中发生了什么,您了解什么,哪些细节,您的算法是什么。您甚至可以在文本编辑器中编写步骤,并与面试官确认这就是他想听到的。许多人会简单地说:是的,看起来不错。有人会很高兴:是的,这就是他们的期望。也就是说,在大多数情况下,您会收到反馈。但是,如果您不习惯倡导这一过程,那么可能会很难。



筛选通常由对话和编写与Leetcode或任何算法任务非常相似的代码组成。它们通常是“简单”或“中等”级别:例如,与在线朋友解决问题,进行讨论是有意义的。



算法部分



下一步取决于公司。我没有采访过Google,Amazon或Apple。据我所知,它们都有遵循模式的相当有特色的过程,但是细节不同。例如,亚马逊有领导力原则-推荐学习的一组规则,因为它们也会在面试中讨论。 Facebook没有那个。



有几个算法部分:通常是两个或三个。在冠状病毒发生之前的时代,您被带到办公室,在那里发生所有事情,相遇,放进会议室并喝咖啡。您可以解决算法问题:与在Leetcode上看到的问题相同。有人建议采用硬性级别-顺便说一句,这是可选的。在机器学习或后端加载中可能会遇到困难的任务-我个人根本没有遇到过任何困难。通常这是中级:非常复杂,您需要能够处理它们。但是,如果您从未决定过,那么可能就有机会这样做,您只是已经练习并知道如何思考。



每个部分长达40分钟,通常需要完成一项任务,并需要进行后续跟踪。例如,您需要解决排序数组的问题:编写排序算法。抱歉,这些愚蠢的示例:您可以使用冒泡排序解决它,说它效率低下,可以更改它,从而在时间或内存上达到效率。碰巧您需要一个接一个地解决两个小问题。



通常,部分由不同的面试官主持。出于客观目的,这是有目的的。与每个人打个招呼,介绍一下自己。然后该部分本身开始:您需要决定,思考,说话,也许犯错并重做。



采访是一个统计上比较嘈杂的过程。 5名面试官,具有客观性,试图尽可能地量化候选人-但是他们并不总是有效,有人可能不喜欢某些东西。有时他们拒绝不是因为这个人不适合,而是因为“信号不够强”。对于公司而言,雇用错误的开发商比不雇用合适的开发商更糟糕。



如果您在不同类别中解决了50或100个不同级别的问题,则通过算法面试的机会将大大增加,0到100个已解决问题之间存在巨大差异。但是该设备可能仍然很不幸。我建议您从哲学的角度来看待这个问题,无论如何拒绝都会发生,它并不总是依赖我们作为候选人。



编码通常与算法部分结合在一起。在Facebook上,后端与前端之间存在细微的差异。对树,图或与循环,数组有关的相同算法-但具有前端特性。通常,所有内容都在JavaScript中。语言选择非常自由。当我去另一家公司面试时,我用C#编写-尽管我以前从未使用过它。但是由于它是面向对象的并且类似于Java,因此我在过程中做了澄清:这可能吗?所以?



当然,如果您一生都在用Python进行编程,则不应该使用Java编写:不同的语言会很困难,在构造和导入方面会感到困惑。这不会是一个非常负面的信号,但是会给生活带来困难。



然后是系统设计访谈和行为访谈:我仅经历了这样的阶段。



在哪里准备



我必须马上说,我只学习Leetcode,试图学习这种思维方式,在时间有限和任务有限的情况下,要使用一组算法进行操作,例如二进制搜索,遍历图或其他方法。通常,决策由这些决策块组成。







建筑部分:系统设计



体系结构部分与系统设计采访相同。我认为他们经常出现在面试中,他们的人数取决于您申请的水平。在第二家公司的Facebook中有一个我并行采访过的人-1或2。



该部分是开放的,问题的提出方式与算法问题不同。同时,软技能也很重要:说话,做出决定,设计特定系统的能力。当我们谈论系统设计时,通常会谈论一些高负载的设计:您需要制作Twitter或Instagram。当然,您不能在40分钟内设计出完整的Twitter。



还有一些特定的任务:使用自动完成功能输入表单。在前端的情况下,可能会有类似的事情:为Yandex.Maps设计前端:如何构造代码,将要使用的组件,组件之间的从属关系。我们可以谈谈CDN为用户提供的内容。



这些都是非常普通的任务,描述整个系统的一个方面可能很容易花费一个小时。最重要的事情是在概述选项并获得您想听的内容的批准之前,先进行详细介绍。首先,您指定纬度:这是一个这样的系统,从较高的角度讲它可以包含十个组件,并绘制一个图表。此外,我们可以说几乎没有时间,并且愿意根据面试官的偏爱和您的知识来深入研究细节。必须使用知识!如果您不了解负载平衡的工作原理,但是知道搜索后端的工作原理,那么谈论后端显然更好。每个人都知道一个开发人员不会完成一个项目。



与产品设计相比,我认为系统设计中强调技术要求,具有使用标准概念进行操作的能力:负载将是多少,硬盘驱动器使系统工作所需的速度。显然,产品设计更多地是关于您作为工程师与产品所有者,设计师达成协议,确定想法的优先级或进行实验的能力。它更多地涉及业务组件和工作组织。我没有产品设计,我承认您可以谈论产品,价值观,问题-这通常是产品经理的责任领域。



在哪里准备







   ,   behavioral-



Soft skills



采访中的“错误”是由于人们不知道如何说话-无论听起来多么愚蠢和天真。根据我作为面试官的经历,事情是这样发生的:我打电话,自我介绍,尝试为谈话定下正常的语调并进行一些交谈,然后得到单音节的答案。



- 向我们介绍你自己?

-我是程序员。

- 你在做什么?

-建立网站。



也许这不是最常见的错误,但对于面试官来说却是最不愉快的,因为他被迫提出问题的答案。有时甚至不清楚一个人是否想要一份工作。



因此,您需要能够清晰,快速地交流背景和经验方面最酷的方面。要练习,您可以在手机上录制自己的声音,最好录制视频。然后听,几天后重复。如果您想交谈,这种方法很棒。



很久以前,当我第一次准备演示文稿时,我就开始这样做。我不得不口头说出所有事情,然后在文件中写下演讲内容。书面讲话与口头讲话根本不符,结果显得荒谬而笨拙。然后我坐着电话-也许是用录音机,也许是在镜子前-坐下来开始排练:大约第十次,讲话变得连贯且易于理解。





我说的是在异地途中在飞机上编写的HTML解析器。



另一个提示:通常,面试官对您一无所知。通常,他会在面试前3分钟内查看简历,大约有4个词引起了他的注意,充其量是这个人的名字。也就是说,作为候选人,您可以专注于故事的某些方面,以便尽可能地获利。在某种程度上,这是操纵,但很好。您正在推销自己:但是您并不想说出什么不是。您只是有一个有趣的项目,而不是最后一个,而是倒数第二个工作,然后您可以讨论它。面试官当然会对这个故事感兴趣并记住这个故事,而不是因为您的项目正在获得支持,所以您不是在当前位置修复错误。这种方法可用于您自己的利益,并且对话更加生动。



英语



如果您在外国公司进行面试,则应该用英语记录自己和您的项目的录音机故事。如果您是世界上最酷的程序员,但您不会讲话,那么您将永远不会得到面试,这是肯定的。



我想您会遇到一位俄罗斯工程师,他将以老式的方式提供俄语沟通。但是尽管如此,在某种程度上,对语言的无知可以停止。 Facebook上有很多说俄语的人,但是从说俄语的人那里并不明显。有时公司政策禁止使用英语以外的其他语言进行采访。然后,俄语交流最多只能是非正式的部分。



我学习英语已有10年了,我一直以为我的水平很高,尤其是技术语言:我和其他人一样阅读手册。但是在2016年,我去了纽约,意识到自己一无所知。我只是听不到他们对我说的话-震惊了我。很难说是什么水平,大概是B1,中高级。但是我几乎听不懂说话者,因此迷失在一个丰富的对话中。



我 为自己推导出了标准,通过它您可以了解该级别适合通过面试。如果在一次技术会议上您能理解演讲者所说的50-70%,并且您可以在1-2分钟之内告诉他们有关您的项目的方式,以使他们能够理解您,那么就足够了。说话者通常会讲一种非常易懂的语言,没有强烈的语和吞咽的声音。面试不需要证书,但要移居英国则需要证书。正式级别,B1或B2-如果您从头开始学习,则在某些课程中,您可以在一年内成长为正式水平。



一般而言,沟通技巧很重要-如果您的英语说得很好,但低头看和尽可能不安全就不会起作用。我承认,当您可以讨论技术主题并在非正式对话中迷路时,该语言的中级水平对于某人来说已足够。但我敢肯定,这里没有太多的语言。



如何准备



我不能说我是软技能方面的理想人选。但是重要的是:团队合作能力他们主要是在寻找既能争辩又能理解别人观点的团队成员:没有人需要独来独往。一个好的领导者会努力建立一支团队,以使他拥有不同才能的人,而这些人只需要能够进行谈判即可。大公司永远是一个团队。



另外,最好弄清什么是软技能以及 它们是什么... 作为团队的领导,我可能不得不经常与所有人交谈,计划和承担责任:这些技能自然而然地发展了。您做出技术决定,另一个团队领导来了:您一定不能得罪他,捍卫您的决定并保持建设性对话。因此在我看来,技能最终会在适当条件下达到高级职位的人中发展。并非仅当您一个人在做项目时,他们只是因为没有其他开发人员而称您为高级人员。



结果



由于大流行,面谈过程正在改变,工作形式也在改变。有一种假设是遥控器将很快出现在世界各地。现在,公司正试图在目前的地点,例如在美国,至少从全国各地雇用。很难预测俄罗斯人是否会开始招聘想留在俄罗斯的人。您现在不应该指望退出市场-也许要几年了。



迁移过程并未停止-这对我来说真是太好了。在存在许多限制因素的情况下,招聘继续进行。对于希望搬迁的人来说,这是个好消息。在所有活动中,我的一位朋友随家人移居到苏格兰,仅在抵达时提供检疫。



没有足够的职位,并且没有冠状病毒影响到这一点。从某种意义上说,这也许是不好的:公司的成长像癌变的癌症一样,试图用自己的身体填满一切。但是对于我们(作为开发人员)来说,这是件好事:整个过程没有完成。仍然需要人才,启动项目,有很多野心,有很多钱,必须花钱,并且招聘工作仍在继续。



需要额外阅读的内容:





我们已经收集了所有有用的链接以及网络研讨会监听器。如果您有任何补充-发送,我们将添加到列表中:)



在我们的g伙伴中,至少有30%至50%的人准备考虑使用远程控制器,而重新定位是第二大最受欢迎的位置。在大流行期间,无论在俄罗斯还是在国外,招聘速度都加快了3倍。注册该机器人,即可在Telegram中获得最佳技术职位。



All Articles