2021-08-19-facebook-career-questions-and-answers


文档摘要

标题:Facebook 职业问答 链接:facebook-career-questions-and-answers 作者:杨顺·泰 作者职位:Facebook 工程主管 作者网址:https://github.com/yangshun 作者头像网址:https://github.com/yangshun.png 标签:[职业, Facebook, Meta] 隐藏目录:是 项目实习生小组的不少同学向我提出了关于 Facebook 实习、在 Facebook 工作以及我个人职业发展的问题。我决定把这些回答整理成一篇博客文章,以便更广泛地分享,并在未来有人问类似问题时,我可以直接推荐这篇博文。 我不是招聘人员,可能对一些招聘或实习相关问题的回答并不准确,请谨慎参考。

标题:Facebook 职业问答 链接:facebook-career-questions-and-answers 作者:杨顺·泰 作者职位:Facebook 工程主管 作者网址:https://github.com/yangshun 作者头像网址:https://github.com/yangshun.png 标签:[职业, Facebook, Meta] 隐藏目录:是

项目实习生小组的不少同学向我提出了关于 Facebook 实习、在 Facebook 工作以及我个人职业发展的问题。我决定把这些回答整理成一篇博客文章,以便更广泛地分享,并在未来有人问类似问题时,我可以直接推荐这篇博文。

**_我不是招聘人员,可能对一些招聘或实习相关问题的回答并不准确,请谨慎参考。所表达的观点仅代表我个人,不代表我的雇主立场。_**

术语表

  • APAC:亚太地区
  • CVWO:为志愿福利组织提供计算服务
  • DSA:数据结构与算法
  • EE:企业工程师/工程
  • FRL:Facebook Reality Labs
  • FTE:全职员工
  • IANACP:我不是职业门户网站
  • IANAR:我不是招聘人员
  • IANAL:我不是律师
  • IINW:如果我没记错的话
  • RA:宿舍助理
  • SWE:软件工程师/工程
  • TPM:技术项目经理

注意事项

  • 这些回复主要针对 Facebook 的实习生和应届生面试流程,可能不适用于其他公司,尤其是规模较小的公司。
  • 大多数回答适用于所有工程师岗位,但某些特殊工程岗位(如安全工程或前端工程)除外。

申请/推荐

实习申请流程是怎样的?

请在 https://www.facebook.com/careers 上提交申请。如果有兴趣,招聘人员会联系你,并通过电话与你沟通。如果进展顺利,会有两轮编程面试。

Facebook 在简历中看重哪些素质和经验?

我不是招聘人员,也不筛选简历,所以具体细节不太清楚。但从经验来看,写一些能让你脱颖而出的内容吧。成绩好?写上!奖学金或奖项,也别忘了写下来。有丰富的实习经历?用清晰的格式列出来。做过酷炫的黑客项目或副业?加上 GitHub 链接和演示视频。拿过黑客马拉松或竞赛奖?也写上去。有一点可以肯定——很少有公司只看学术背景而不要求行业经验。

GPA 对简历筛选影响大吗?

GPA/CAP/成绩只是简历中可以提取的一个信号而已。正如前面所说,候选人还有很多其他素质和成就。如果我自己开公司,我宁愿招一个二等荣誉学位且开源作品超棒、有多次大公司实习经历的候选人,也不愿招一个 CAP 5.00 但没什么其他亮点的学生。并不是说哪个候选人更强,而是前者可能更稳妥。

总体来说,像 FB 这样的大科技公司的入职门槛如何?二等较低(3.5-3.9)的成绩能过简历筛选吗?

成绩的重要性随着离开学校的时间越长而降低。对于学生来说,因为缺乏工作经验,成绩可能会在简历筛选中占更大比重,但这绝不是唯一考量因素。

简历筛选是由 AI 还是人工招聘人员完成的?简历上重点看什么?

作为一个学术表现一般的人,我能单纯靠简历上的经验竞争吗?我不是招聘人员。通常人们学习不好是因为他们把时间花在了别的地方。如果这些时间花在了副业项目和实习上,那或许能弥补学术成绩的不足。但如果学习不好还整天泡吧,抱歉,你大概过不了筛选。要知道,如今计算机科学可是热门专业,只有最优秀的学生才能进。不少学生既有好成绩,又有非学术方面的成就。竞争太激烈了!

申请前掌握哪些语言或框架有帮助?

对于软件工程师(SWE)岗位,Facebook 不要求你必须具备特定语言或框架的经验。同样,SWE 面试也没有这样的限制。你可以用自己熟悉的编程语言参加面试。不过有个例外:如果你申请前端工程师或移动工程师岗位,就会被问到领域相关的题目,因此需要使用 JavaScript/Java/Kotlin/Objective-C/Swift 来作答。

实习申请(以及名额)是先到先得吗?

我不是招聘人员。但跟所有工作一样,名额确实有限,一旦填满就不再招人了。2022 年申请 9 月开放的实习,几乎肯定是太晚了。如果你想多点时间准备,可以晚点申请(10 月),但可能名额会更少。总之,早做准备才是王道。

推荐流程是怎么回事?

Facebook 会给你发一份表格(由我发起),你可以填写姓名、邮箱,上传简历,并选择你想申请的岗位。从申请人角度看,这跟自己直接在 Facebook 职业门户上申请没什么区别。

我能知道你的推荐有效期到什么时候吗?

我本来想晚点再申请,所以想提前找你做个推荐。有没有什么“认领”的截止日期呢?只要我还供职于 Facebook,只要你看起来很有希望通过面试,我很乐意为你推荐。前面说过,如果没准备好就申请,可能会浪费机会。拖得太久,申请太晚,可能名额都满了。我不知道具体的推荐截止日期,但我建议别晚于 9 月底。

写好简历申请 FB 有什么技巧?

上面已经回答过了。我觉得大部分学生不用太担心简历筛选阶段,还是把精力放在面试上吧。用整洁规范的模板,应该就没问题。如果你申请美国岗位,以下几点会很有帮助:

  • 提到预计毕业年份(如果知道月份也写上)
  • 如果申请美国岗位,注明是否有美国工作资格。这对新加坡人来说很简单(提到 H-1B1 签证资格)
  • 用 GPA 而不是 CAP

我做的项目一定要上线后才能申请吗?

最好能上线,但我不确定招聘人员会不会真的点开你的项目链接。要不干脆别放链接,除非它真的能用?

申请 Facebook 应届生 SWE 岗位有什么小贴士?

一定要把算法烂熟于心。应届生 SWE 面试还有行为面试环节,所以要准备好聊一聊自己的过往经历。这本手册里有一节专门讲这个。

除了准备 DSA 题目,还有什么其他方面值得准备(无论是面试还是提高入围几率)?

如果你申请 SWE 实习或应届生岗位,DSA 是最重要的。大部分考核都在 DSA 上。刷 LeetCode 吧!

想了解一下 Facebook 的面试官通常会关注候选人的哪些方面?

DSA。DSA。DSA。沟通能力——在整个面试过程中,你必须能清晰地表达自己的思考过程。

我能同时申请本地和海外(美国)的 FB 岗位并都被考虑吗?还是说我只能申请新加坡的岗位,毕竟 FB 在这里也有办公室,而且我已经在新加坡了?

我不是招聘人员。一般来说,你只会被面试一个地点的岗位。在新加坡的候选人可以自由申请非新加坡的岗位并在那里实习。

软件工程师岗位的申请流程是怎样的?跟企业工程师和前端工程师岗位有区别吗?

SWE 的申请流程上面已经回答过了。企业工程师我不太确定,估计差别不会太大。前端工程师的题目会更领域化,所以候选人需要熟悉 HTML/CSS/JS/原生 JS DOM 操作方法,对数据结构与算法的要求会低一些。我估计大部分学生没有足够的领域专长通过前端面试,所以千万别去申请。简单测试一下——你能用纯原生 JavaScript 做个待办事项列表应用吗,不用 React 或 jQuery?注意,目前 Facebook 新加坡并不招聘前端工程师和实习生。如果你对前端工程师实习或全职岗位感兴趣,就得去海外申请。

有什么办法能提高通过招聘人员筛选的几率吗?

  1. 找个推荐人
  2. 准备一份简洁干练的简历,充分展示你的能力

推荐对拿到面试机会有多大帮助?

推荐人比直接在职业门户上申请的人更容易被注意到,但也就这样了。

FB 有没有相关的全职岗位?如果有,我该怎么帮你判断自己是不是合适的推荐人选?

我会看你的成绩单和简历,寻找能证明你是个好员工的迹象。我重点关注——相关课程成绩优异,有亮眼的实习经历,有趣的副业项目,ICPC/IOI 奖项。加分项:开源经验。我是开源的超级粉丝,如果你做了很酷的开源项目,即使成绩再差我也愿意推荐你。

我是信息系统背景,但编程课成绩不错,有机会吗?现在也在学一些计算机科学的课程。很多信息系统出身的人都是优秀的工程师。只要你能证明自己精通编程和 DSA,就不该有问题。

你知道 Facebook 的招聘流程是否偏好单页简历吗?

作为 FB 高级候选人的面试官,我见过一些长得吓人的简历。
我认为单页并不是硬性规定,更像是一种建议。如果你的简历超过一页,那很可能是因为你包含了太多内容。我的简历 是一张两栏布局、字体较小的简历,我在2017年找工作时用过。它让我收到了招聘人员的回复。这还是在我加入Facebook之前,所以Facebook的品牌效应并不是主要原因。### 我是SMU的国际学生,Facebook会赞助就业签证吗?我不是法律专家。但我们以前有过国际学生在Facebook实习,现在也有国际学生在Facebook工作。请和招聘人员确认一下。### 我来自SUTD,我的时间安排很奇怪!我明年毕业,应该申请实习还是全职工作?如果你还有空余的暑假,完全可以也应当去申请实习。在我看来,通过实习面试比全职面试更容易,而且如果你在实习期间表现优异,也很可能获得更好的录用条件。### 我有资格到美国/伦敦/加拿大等海外工作吗?我不是法律专家。如果你是新加坡人,在哪里工作都不会有问题。如果你是外国留学生,可以问问学长学姐,或者等有机会时直接问招聘人员。### 我想在新加坡实习,然后去美国工作,这可能吗?对于实习生来说,你的录用通知会是实习地点。所以你也得考虑自己想在哪里全职工作,并努力争取在同一个地方实习。### 如果我被拒绝了,要等多久才能再申请?每个职位都有6个月到1年的冷却期——比如,如果你在美国面试SWE失败了,就得等一段时间才能再次申请新加坡(或任何其他地方)的SWE职位。这个冷却期是针对每个职位的,所以你可以立即重新申请另一个职位,比如前端工程师,前提是你的简历能被选中。截至撰写本文时,Facebook新加坡的实习每年举办一次,所以如果你今年没通过,就得等到下一年。## 面试### 面试流程是怎样的?所有职位都应先与招聘人员进行初步联系(比如电话沟通)。对于实习生,会有两轮在线编码面试,重点考察数据结构与算法。对于应届毕业生,则是两轮在线编码面试加一轮行为面试。### 根据你过去的经验,如果候选人在线编码测试没有拿到满分,他或她获得面对面面试的机会有多大?只是好奇竞争有多激烈哈哈(因为我倒不怎么担心白板面试,倒是怕连机会都拿不到)我觉得Facebook根本就没有在线编码测试。这个问题我没法回答。### Facebook美国会招聘新加坡公民吗,毕竟已经有Facebook新加坡办公室了?会的。### 我怎样才能提高拿到实习机会的几率?好好学习数据结构与算法,刷LeetCode,和同学一起模拟面试,习惯在编码时大声说出自己的思路和想法。### 我想尽可能多地向你学习一些对我有帮助的话题,对你有什么好处,什么时候呢?为了通过面试,重点是数据结构与算法以及LeetCode;至于真正的实习,这要长得多,我就不细说了,因为这得等你通过面试之后再说。### 我听说Facebook不问动态规划的问题,如果我说错了请指正。有没有哪些主题是我应该多关注的?我既不能确认也不能否定这一点。关于编码面试的一个通用建议:重点掌握最常见的数据结构和算法。如果某个主题特别冷门,很可能不会被问到,因为问冷门的东西有时反而不利于面试官,因为他们很难从中提取出正确的信号。看看手册里推荐的练习题吧。### 面试有多少轮?Facebook在实时面试中会问系统设计吗?对于实习生,通常是两轮编码面试;对于应届毕业生,通常是两轮编码面试加一轮行为面试。实习生和应届毕业生的面试都不涉及系统设计。### 我会被考查特定的技术栈或实际项目经验吗,还是纯粹考算法?如果你申请的是软件工程师职位,不会被考查具体的技术栈或语言。问的算法题可以用大多数编程语言实现(不过你最好别用wenyan)。如果你申请的是专业职位,可能会被要求使用领域专用语言,招聘人员应该(会?)提前告诉你。## 实习### Facebook工程师实习生/新员工看重哪三个品质?这个问题很长,不止三个品质。但总结一下,要想拿到转正offer,实习生必须展现出高效率,在实习期内完成分配的项目,写出高质量的代码或完成高质量的工作,表现出快速的学习能力,积极沟通协作,还要有主动性和独立性。说实话,这些都很基本。### Facebook有哪些不同类型的实习岗位正在开放(包括新加坡和海外)!我不清楚。Facebook新加坡的实习岗位比较有限,我们主要招软件工程师和电子工程师实习生。但我好像见过TPM实习生。海外的岗位几乎什么都有。### Facebook新加坡有机器学习/数据科学实习岗位吗?其他国家呢?至少我知道的没有。海外应该有的,但那样的话你就得和全球的候选人竞争。### SWE岗位具体是做什么的?技术栈和预期是什么?当然是软件工程。认真回答的话,这真的取决于团队和他们的工作。大部分(全部?)SWE都会写代码来解决问题。Facebook规模很大,几乎每个语言都有团队在用。这里有个非常简化的概述:- 网络产品 - JavaScript/React/CSS/GraphQL/Relay/Hack(PHP的类型化版本)- 移动端 - Objective-C/Java/React Native/专有框架- 后端服务 - Java/C++/Python### Facebook的实习形式是怎样的?比如,实习生会被安排进一个团队参与实际问题,还是整个实习期间都负责一个项目?正常情况下,实习生会得到一个项目,整个实习期(大约12周中的10周左右)都要完成。他们会有一位实习经理作为导师全程指导。导师通常是提出这个项目的那个人,项目会被拆分成多个里程碑。实习经理的职责包括:为实习生入职做准备,定期反馈实习生的表现,审查他们的代码(通常和其他团队成员一起),评估实习生是否能拿到转正offer。### Facebook实习生的导师制度怎么样?导师会和实习生一起合作完成同一个项目吗?导师是在公司内部随机分配的,还是由实习生自愿报名?实习经理可能会和实习生一起合作完成同一个项目,也可能不会,但至少他们得了解实习生的项目背景,能够审查(或者至少找到合适的人)实习生的工作。员工可以报名成为某个实习季的实习经理。这不是随机分配的。如果员工被随机分配当导师,对实习生和导师本人都会是灾难性的、不愉快的经历。### 实习生在Facebook新加坡能参与哪些项目?实习生的项目通常是自成一体的,能在实习期内完成。Facebook新加坡的一些实习项目例子——用现代React设计体系重构Oculus账户门户(https://secure.oculus.com),在Oculus账户门户中搭建自助订单退货流程。在Facebook新加坡以外——搭建facebook.com的设置页面,开发一个内部调试工具(类似Redux Devtools)。### 实习生通常会接到什么样的项目(比如内部工具还是外部产品)上面已经回答过了。可能两者都有,取决于团队。在新加坡,我们主要是产品团队,所以项目多半是增加产品功能。### 被录取为实习生后,有机会调到海外办公室吗?是的,我知道有些前实习生就是这么做的。不过这可能是因为特殊的新冠疫情情况,不一定适用于以后几年。你需要和招聘人员确认一下。### Facebook明年夏天打算招多少实习生?不确定能不能透露,但还是问一下吧。我不知道,就算知道我也不能说。2019年我们招了4名实习生,2020年大概招了10名。Facebook新加坡办公室发展得很快。### 我其实更感兴趣移动开发,新加坡办公室有这方面实习岗位吗?Facebook新加坡有一些团队专门做移动端。在开始实习前,实习生可以表明自己偏好的技术栈,我们会根据他们的偏好匹配团队和项目。### 在Facebook实习/初级软件工程师期间,你能尝试工程的不同领域吗?比如,我一开始做后端,但后来想试试前端?简短回答:对于实习生来说,机会没那么大。对于正式员工,自主权就大得多。长一点的回答:实习生会被分配一个项目,项目的技术栈通常是预先设定的。所以实习生的工程工作和技术栈很大程度上取决于分配的团队和项目。如果实习生提前完成了任务,可以向经理申请更多工作,甚至尝试其他事情。如果实习期碰上公司的内部黑客马拉松,实习生可以参加,随便做自己想做的东西。对于软件工程师,入职后有一个叫做“训练营”的过程,员工可以自己选择加入哪个团队。这样他们就有更大的灵活性决定自己想做什么工作。Facebook内部的岗位流动非常顺畅。从左到右写输出。
同样。我个人在Facebook做过前端和后端开发。## FB文化 ### 软件工程师(SWE)、企业工程师(EE)和前端工程师之间有什么区别?这是因为之前听一些Facebook实习生说他们做过全栈开发。- SWE——通才,他们需要能够处理分配给他们的软件相关问题,并且应该能跨栈工作。- EE——摘自Facebook职业门户网站:“Facebook的企业产品团队负责构建集成化、可扩展且稳健的企业应用。作为企业产品团队的一员,你将在重新构想生产力方面发挥关键作用,通过推出服务于企业各个方面的变革性产品。”- 前端工程师——专攻前端的SWE。面试内容涉及HTML/CSS/JavaScript,而且更侧重于领域特定的问题。但这并不意味着前端工程师只能做前端工作,只要符合团队需求并且与主管保持一致,他们可以做任何事情。根据我的经验,Facebook的前端工程师不仅前端技能过硬,也能胜任后端工作。顺便说一句,我就是一名前端工程师### 目前Facebook新加坡办公室有哪些职位空缺?你们通常会寻找什么样的人才?(比如技术能力或其他指标)Facebook新加坡主要有两个部门——商务工程和广告与商业产品。新加坡的商务工程团队负责搭建电子商务网站,销售Facebook的硬件设备(Quest、Portal),并负责购买流程的其他环节——支持中心、退货、保修等。我在商务工程部门,我的团队负责管理https://www.oculus.comhttps://portal.facebook.com。我对广告方面了解得不多。可以看看一篇关于我主管Nishita Agarwal的文章(https://www.facebook.com/careers/life/help-10-peopleor-billions/),文章提到同理心是她的重要特质。Facebook职业博客上还有一篇关于亚太区软件工程的文章(https://www.facebook.com/careers/life/software-engineering-in-apac)。### Facebook新加坡办公室和旧金山Hacker Way的办公室有什么不同?首先,可以看看这篇(虽然旧了但依然相关)的文章(https://vulcanpost.com/648705/facebook-singapore-office-marina-one/)。注意:Hacker Way不在旧金山,而是在门洛帕克。也许你是想说旧金山湾区。总之,Facebook新加坡和美国总部的差异很大。具体太多了,我只列出最明显的几点:- 职业发展——美国总部是公司的总部,也是公司起步的地方,团队数量最多,各层级的员工都有。而在新加坡,团队较少,而且由于办公室规模现在较小,暂时还没有特别资深的工程师需求。所以如果你关注长期的职业发展,新加坡肯定稍逊一筹。不过也不用这么悲观,新加坡办公室足够大,让你能升到高级工程师职位,赚够钱过上舒适的生活。- 项目——主要以产品团队为主,招聘的主要是SWE和EE;而美国总部的团队种类更多,包括基础设施团队,招聘的岗位也更全面。所以如果你想参与内部日志框架、GraphQL、内部ORM之类的基础设施项目,就得去非新加坡的办公室。- 更换团队——新加坡的团队较少,所以如果你想换团队但仍然留在新加坡,选择就比较有限。- 公司文化——你没法亲自参加总部举办的活动,比如扎克伯格的问答会、公司大会,还有夏季和节日派对(不过会有本地版本的活动)。- 食物——新加坡的咖啡馆选择少一些。不过食物还是相当不错的。免费食物也没啥可抱怨的。- 办公室——新加坡的办公室小一点,但依然是新加坡最酷的办公室之一。门洛帕克总部简直太棒了,有街机厅、桌游室、理发店、冰淇淋店、小玩意自动售货机等等。晚上看起来就像环球影城一样。我就放个[视频]在这里吧()。- $——Facebook在美国和新加坡的薪资都属于顶尖水平。不过在新加坡,你需要交的税更少,生活成本也更低。我在新加坡收入低一点,但由于税率差距大,存的钱反而更多。- 税收——新加坡的税率相比美国低得离谱。美国对每样东西都征税,包括股票资本利得和银行利息收入(真是醉了),但新加坡没有。- 工程文化——差不多相似,因为不少Facebook新加坡的工程师是从美国总部调来的,包括我自己。不过由于办公室规模较小,我们没有那么多特别资深的工程师。- 社会保障——我本来以为湾区比美国其他州安全些,但现在,所以我也不确定了。我觉得新加坡肯定更安全,至少走在街上不会受到种族歧视的言论或评论。- 个人幸福感——显然你在美国的话,朋友和家人会少一些。如果这对你很重要,那在美国的生活可能会有点难。不过你可以结识新的“洋人”朋友,或者跟那边日益壮大的新加坡社区一起玩。- 恋爱状况——如果你是单身,在那里找长期伴侣可能很难。新加坡的女工程师大多已经有对象了,没对象的可能也想一直单身。在那里谈恋爱真的挺难!我认识一些朋友,他们跟美国人或移民在一起,然后拿到了绿卡,打算长期留在那里。你也可以考虑这种可能性。我在美国总部时觉得自己只是大池塘里的小鱼,现在到了新加坡,成了小池塘里的大鱼。我很享受目前在新加坡的工作和团队,至少未来几年我还会继续待在这个岗位上。### Facebook内部黑客马拉松只限于分公司吗?比如只限于Facebook新加坡?它们其实是全球性的,时间表是全球统一的,但每个地区由不同的负责人领导。参赛团队会先进行地区选拔,地区赛的获胜者再聚在一起向全球负责人展示。### 在Facebook,软件工程师和前端工程师有什么区别?考虑到我的经验主要在前端工程,我是不是只该申请前端岗位?区别已经在上面回答过了。如果你前端Web基础扎实(HTML/CSS/JS),但数据结构算法烂透了,我觉得你通过前端面试的机会会更大。可惜的是,截至撰写本文时,Facebook新加坡不招前端工程师,所以你得去海外找这样的职位。### 过去一年,我听到很多关于Facebook Reality Labs的消息,听说现在有不少Facebook工程师都在做这个项目(我想你也一样吧?)……你对在那里工作的感受以及未来的前景有什么看法?我负责销售FRL硬件,而不是直接参与FRL硬件或软件本身的研发。如果你还没听说过元宇宙,建议你了解一下。我对FRL的未来没什么太多看法,但可以说Quest 2是VR头显市场的领导者,而且Quest 2是Facebook2020年第四季度非广告收入8.85亿美元的主要推动力。### Facebook在招什么工程师——尤其是应届毕业生?目前我掌握了不少工具,但当被问及底层细节时,我只能解释工具或框架试图提取什么,而无法深入讲解具体的工作原理。公司是想找语言/工具/框架无关的应届工程师,让他们在公司里逐步积累技能——还是已经具备某种专长的人?Facebook用Flow(用于JavaScript类型检查)和Hack(PHP的带类型版本),这些工具外面很少有人用。如果我们只招有使用经验的人,那要凑齐人数会非常困难。科技公司招聘SWE时,通常是招通才,他们会期望员工能快速学习任何新语言或工具来完成任务。如果你掌握了基本功,做到这一点应该不算难。所以大部分公司其实都希望招能快速学习和适应的人。例外情况是如果你已经是超级资深人士(比如首席级别及以上),那公司可能会因为你具备专业技能而聘用你,因为公司需要某个领域的专家。不过你们大多数还是本科生,这种情况不适用于你们。归根结底,很多语言和工具都差不多。新技术都是从现有技术中学习并改进的,学习新技术并不总是那么陌生。不过,要想成为一名优秀的SWE,我建议你多看看抽象层下面的东西,理解这项技术到底要解决什么问题,它底层是怎么运作的,以及它相比类似技术有什么优缺点。这也是我为什么喜欢开源的原因,所有代码都是公开的——你可以阅读代码,看看项目的结构,甚至还能贡献代码。我也很喜欢读一些对比技术的文章,这样就能知道各个项目做了哪些权衡,什么才是最适合的工具。别做一个毫无头脑的“无人机”,只知道用技术却不知道为什么要用它,而不去考虑替代方案。这样很快就会被淘汰,尤其考虑到技术更新的速度。### 在我跟美国科技公司工程师的交流中,我经常听到一个很大的不足之处:在新加坡办公室工作的一个主要短板就是……
更多辅助性的工作,而“核心”工程工作的机会却少之又少。由于你曾在门洛帕克和新加坡办公室工作过,我很想听听你在Facebook背景下的看法。上述内容已在美加与新加坡的对比中回答过。## 个人经历### 我能了解一下你在Facebook参与的项目吗?我目前正参与一个为期多年的项目,具体细节要等到明年上线后才能透露。去年,我曾负责Facebook的电商网站——https://www.oculus.comhttps://portal.facebook.com。我用React构建了设计系统,并开发了一个CMS框架,让非工程师也能随时修改oculus.com上的营销内容。我的团队致力于解决的一个问题,就是将营销发布与工程工作解耦,从而让业务团队能够更快地在我们的电商网站上推出新产品和新活动。### 你为什么选择前端工程,另外,你觉得Facebook的工作量与其他“顶级”公司比如谷歌相比如何?学生时代我也很喜欢做设计,所以能亲手把设计实现到网页上对我来说特别酷。这也是我选择做客户端工程的原因。至于为什么选网页,我喜欢网页平台快速迭代和发布的周期。我第一门真正的计算机科学课其实是CS3217(之前只上过CS1010E和CS1020E),所以我写的第一款真正意义上的软件是在iOS平台上。移动端开发对我来说太麻烦了,因为我经常需要实体设备,编译应用耗时很长,而且还要严格遵守平台规则。他们随时可能下架你的应用。相比之下,网页则开放得多,任何人都能在几小时内搭建起自己的网站。能通过一个URL向别人展示自己做的东西,这种体验让我兴奋不已,永远不会厌倦。我没在谷歌工作过,所以没法评价谷歌的工作量。不过谷歌以“休息和积累”著称,而Facebook的晋升周期更快,对表现优异的员工奖励也更丰厚。### 我理解得对吗,你是毕业后就去了Grab?你在求学期间都做过哪些实习?是的,我毕业后在Grab工作了两年,你可以看看我的LinkedIn。关于大学实习,大二时我做了CVWO,大三时在硅谷为EasilyDo(现名Edison)做了NOC,大四时我在SUTD游戏实验室(之前是MIT Gambit项目)担任游戏制作人(非程序员!)。那时候海外实习并不常见,每年谷歌和Facebook的实习生人数都不超过10个。### 我还很好奇,作为前端工程师,你具体做什么工作?为什么决定来Facebook工作?作为Facebook的前端工程师,我主要写JavaScript,还有些Hack(带类型的PHP)。在Facebook工作很有趣,因为我能做很多非产品相关的前端工作,比如构建基于React的设计系统、前端工具、lint规则、CSS框架(Infima)、静态站点生成器(Docusaurus)。Facebook在前端Web技术领域处于领先地位。如果你做网页开发,很大概率会用到Facebook的一些开源成果,不管直接用还是间接用。比如React、Flux、Jest、GraphQL、React Native、Docusaurus、Draft.js、Relay、Flow等等。在Facebook工作,我还获得了参与Docusaurus的机会,而且连续两年主导了Docusaurus v2的开发,这是我职业生涯中最自豪的项目之一。如今,Docusaurus正在驱动Facebook大部分开源网站。很多我敬佩的开源领袖也都曾在Facebook工作过。我参与了很多Facebook高知名度的前端开源项目,还和React的创造者Jordan Walke一起改进了Facebook广告界面的前端部分。更不用说,Facebook的员工会最早试用React的新API,参与设计讨论,影响React未来的路线图。在文化和工作环境方面,我一直更喜欢Facebook的极客文化与产品,而不是谷歌的,所以尽管谷歌的待遇和Facebook差不多,我还是选择了Facebook,甚至当时我还得到了在谷歌搜索结果页工作的机会。对于前端工程师来说,Facebook是成长和向最优秀的人学习的最佳场所。所以这对我来说是最显而易见的选择,我很庆幸自己做出了这个决定。这是迄今为止我工作过的最好的地方(快四年了!),而且经济上也是绝佳的选择。### 我可以问一下你在Facebook的个人经历,包括学习机会和具体工作内容吗?:) 学习机会取决于很多因素——个人偏好、团队、项目、运气。Facebook是一家超大型公司,几乎涵盖了所有你能感兴趣的科技领域。内部流动性很高,找到自己热爱的项目并不难。在这样一家大公司工作的优势(也是劣势)在于,你往往需要考虑工作的可扩展性。你怎么把你的工作扩展到数万工程师使用你的库,或者数十亿用户使用你的产品?Facebook也非常重视员工的成长。我们有明确的级别和期望,主管们非常支持员工的成长,还有针对每个想在特定领域发展的员工提供的导师计划。主管的核心职责之一就是帮助团队和员工成长,他们也会因此被考核,所以你可以放心,他们会认真对待这件事。我们每周都会和主管以及团队负责人进行一对一交流。我个人现在指导着大约3到4位初级工程师,帮助他们成长为高级工程师,不仅在技术上,也在组织能力上。我上面已经回答了我的工作内容。### 是什么让你们团队想到了NUSMods和NUSWhispers?我觉得为有意义且充实的事情写代码真的很棒,而不是为了公司利益写代码。NUSMods不是我想到的,是Beng想出来的。我帮忙开发了一些功能(我最喜欢的是主题和暗模式),招募了团队成员,还启动了现在的v3重写。现在的版本主要功劳归于Yi JiangLi KaiE-Liang。NUSMods的代码库不算特别大,但我们花了超过一年时间才用现代技术栈重新写了一遍。特别感谢Christopher Goh现在接手领导!加入NUSMods是我人生中最好的决定之一,它改变了无数学生的命运(我敢说超过10万人),我在开发过程中学到了很多东西(这是一个相对复杂的Web应用),还帮助我拓展了志同道合的朋友圈。**我们需要更多人来贡献,这样才能让这个项目持续下去。**注意,NUSMods的核心团队(以及校友)背景都很厉害吧?是相关性还是因果关系?也许两者都有。NUSWhispers的想法是我提出的,但我没怎么写代码。2015年我给一门Web开发课程(CP3101B)当助教,把这个想法提给了几个学生。我很高兴他们把这个想法做得这么好。当时我就想做一个能连接并帮助全校学生的平台,匿名平台或页面听起来挺有意思的。我喜欢做大家会用的东西,毕业后我还试着把我的作品开源。你现在看到的这个网站也是我最大的开源作品之一(从受欢迎程度来看)。### 我了解到你在Facebook工作了几年,也曾在Grab等科技公司工作过。结合你过去和现在的经验,以及听同事和同行的说法,你觉得Facebook和其他科技公司在工作内容上有什么不同?又对刚入职的工程师来说,能期待怎样的贡献呢?我只在两家公司工作过,所以不能说见识很多。但有几个特点让我觉得Facebook和其他小公司很不一样:- 市场顶尖的薪酬。真的高得离谱。虽然可能比不上量化交易公司,但如果算上其他因素,比如有意思的工作、社会影响力,我觉得Facebook依然名列前茅。- 自下而上的文化。有些公司把工程师当成没有头脑的机器人,只要求他们执行任务。但在Facebook可不是这样。Facebook的工程师需要承担不少产品和项目管理的工作,提出想法,主导团队的路线图,尤其是当团队的产品是高度技术性的。我们有很大的灵活性和自主权,可以自己安排工作,决定怎么利用时间。作为一个有很多想法并且喜欢把想法变成现实的人,这点特别适合我。- 责任感很强。Facebook相信你能做出正确的决定。理论上,如果你不小心(或者别有用心),第一天上班就能搞垮facebook.com。### 你是怎么管理你的团队的?这个问题跟你在团队里营造的文化有关。我们流程很少。我的团队很棒,所以我信任他们能做好事情,他们也没让我失望。在我目前这个多年项目里,我把项目拆成了很多小部分,根据队友的兴趣和专长分配给他们。我制定了指导方针和一些通用的工程原则,确保团队了解这些原则,并在开发时严格遵守。我们设定了半年的目标,然后基本上每个人都能独立推进项目。日常工作中,我一半时间写代码,另一半时间审阅代码和参加会议。我还指导了几位工程师,尤其多关注新来的工程师,不断给他们提供技术方面的反馈。请从左到右写输出。
工作和行为上的改变,这些都能帮助他们成长。### Facebook 如何影响了你的职业发展,包括学习与成长?既然你可能有很多 FANG 公司可以选择,那么对你个人而言,Facebook 的独特卖点是什么?在 Facebook 工作,我得以见识大型工程团队如何大规模运作,产品如何开发并推向数百万用户,还能向全球最顶尖的工程师们学习。前端和开源。我在上面已经详细回答过了。### Facebook 上的项目大多是公司内部工具,还是面向公众/用户的更多?这是否取决于你所在的团队?两者都有,而且比例相当均衡。是的,这也取决于地点。大部分基础设施团队以及规模较大的工程办公室(美国、伦敦)都是如此。新加坡还很新,正在快速成长。## 职业生涯### 我想听听你的建议,未来两年在学校里我应该优先关注哪些方面,以便毕业时能获得相关技能和经验,从而在 FB 招聘中脱颖而出。努力成为一名精通基础的优秀工程师。好成绩、亮眼的实习经历、个人项目等固然重要,但它们只是帮你拿到面试机会而已。说到底,如果你答不上面试问题,再高的 GPA 也毫无意义,关键在于你是否真正掌握了作为软件工程师所需的技能。做那些你感兴趣的事情,同时也能让你受益。### 我只想听听你对以下方面的重视程度:个人项目、成绩、LeetCode、黑客马拉松/编程挑战、工作经历、CCA 参与度等等。这个问题很难回答,因为每个人都不一样。有些人天生聪明,不用怎么努力就能拿高分;有些人则完全不适合埋头苦读,却特别擅长打造有影响力的个人项目。认清自己的比较优势,并加以利用。就我个人而言,如果我足够努力,或许也能胜任后端工作,但我就是不喜欢做那块儿。我更善于发挥自己对设计的热情和对细节的关注,去打造用户界面及相关工具。要在广度和深度之间找到平衡。作为本科生,你们有充分的空间去探索,而且失败的成本相对较低。好好把握这个机会,多尝试各种事物,然后选一个你真正喜欢且擅长的方向。等你尝试过足够多的东西,知道自己想要什么、擅长什么之后再专精也不迟。我试过后端、移动端、游戏开发,现在最喜欢的是前端开发。到目前为止,你应该明白,并不是每项投入都能带来同等回报。跟计算机科学无关的 CCA 也许很有趣,能拓宽社交圈,提升软技能。如果你觉得这些很重要,那就尽管去做吧。但如果你不擅长编程,把所有空闲时间都花在一些跟专业毫不相关的 CCA 上,结果很可能只是个平庸的程序员。上学时,我其实没参加过什么正式的 CCA——我选择了做家教,参与 NUSMods 这样的开源项目,还在南洋高中当寄宿生辅导员(有点像 RA,不过对象是南洋高中学生),这样还能在学校附近免费住。我很喜欢这种活动的平衡与多样性。我的 GPA 并不算高——拿了第一等荣誉,但离满分 5.00 还差一点。我觉得如果真把所有时间都用来学习,每个科目都能拿 A+,可学习真的不是我最喜欢的活动。我通常拿 A 是靠那些以项目为主的课程。比起死记硬背,我更看重动手实践的经验,也更享受那种实际操作的感觉。我很幸运,软件工程这个专业存在,让我能找到有意义的事去做,既能享受其中,又能养活自己。### 我想尽可能多地向你请教,了解一些对我明年毕业有帮助的话题。DSA。没有掌握 DSA,就没法通过面试,也就拿不到 Facebook 的工作机会。--- **我不是招聘人员,有些关于招聘或实习的问题我可能回答错了,所以请谨慎对待。所表达的观点是我个人的,不代表我所在公司的立场。**请从左到右写输出。

免责声明
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文语言版本的文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


发布者: 作者: 转发
评论区 (0)
U