Meta(Facebook) Production Engineer 2022 Intern interview timeline

avatar 621403
Jeffrey_dyh
6244
19
timeline:
21.11.23 通过学长完成PE内推
21.12.01 收到邮件,选择跳过session直接开始面试流程,收到并在当天收到OA
21.12.03 完成OA,内容大致是linux command, kernel, network相关知识,形式是不定项选择。OA完成后一小时收到hr follow up,让约一面时间。(当时已经是晚上九点了,一面hr的效率真的高)。 meta pe在一面之前提供一次mock interview机会,于是约了八号的mock和十三号的正式一面。
21.12.08 mock interview,面了两道新题,不过感觉算是easy级别的。总之算是熟悉下流程,楼主也是人生第一次面试,所以这次mock对我准备一面确实帮助很大。
21.12.13 正式一面,我以为第一题碰到了新题,但实际上后来和同学交流,同学说是新面经里有的一道文本处理(看来我信息搜集能力还是不足)。第二题很简单,lc的easy里的easy级别的array题,一分钟十行代码写完那种,就不赘述了。
21.12.14 收到hr follow up邮件,约二面(再次感叹效率真的高)
22.1.4 system interview
22.1.10 收到hr询问国籍邮件
22.1.12 hr约电话,电话通知offer

准备过程:
收到oa之后,过一下linux command,大致了解一下signal基本就可以了。

一面准备的话,把地里的coding面经刷透,其实楼主刷完的感觉是跟准备sde coding稍微不同,pe coding对算法要求没有sde高,只是会加入一些文件读写的内容,建议准备的时候复习一下文件读写。(楼主用的java,基本就是复习下try catch, scanner, IO exception这些),读写处理完,算法层面就比较基础了。

二面的准备是个人认为比较困难的。首先说二面的组成,全程聊天,一半聊Linux kernel相关知识一半聊System Troubleshooting。口语层面首先要做到流利,毕竟全程大部分时候是你在说。

Linux kernel部分的准备过程:楼主本科不是科班cs,OS学的很水(只知道基本概念,没有下降到代码实现层面)。如果你OS基础比较扎实,可以快进到下一段。我是首先读了里的Linux case,对Linux的实现有了一个很潦草的了解。然后从头开始读这本书,读的时候重点关注了提及Linux实现的部分。然后是读这本书,这本书在讲OS的每一个组成部分的过程里会更涉及一些关于每个组成部分对系统性能的影响,个人感觉这样的讲解是同时对kernel和troubleshooting的准备,读的过程里对系统各部分的合作和性能瓶颈的可能原因都有了一个更深的了解。
在OS基础补的差不多以后,重读了的Linux case,这一遍读的很细致,不清楚的概念都有去查,感觉可以展开来讲的细节甚至自己拓展问题去查和组织答案,这个过程里画系统图对记忆很有帮助。在OS基础和Linux case已经掌握后,开始针对面经准备,经典问题比如”从按下开机键到屏幕显示用户登录界面之间发生了什么?“,”键入ls -l,按下回车之后发生了什么?”等等,这些问题复习到源码实现层面(并不是背下来源码怎么写的,而是至少知道了用了哪些syscall,这些syscall具体干了什么以及为什么要这么做)。还有一些小的话题,例如swap area, buffer cache vs. page cache, ELF, Pipe, RAID, Signal, Ulimit and Cgroup, OOM killer, page fault and handling, gdb, IO, daemon process等等,这些话题我都了解了一下。

Troubleshooting部分准备过程:首先是上面提及的阅读这本书,主要是读关于Linux系统的,Solaris部分我直接跳过了。看的过程里自己在朋友的Linux Server上敲了很多遍各种检测command,常见的vmstat, iostat, top, ps等基本记下了它们提供的所有信息已经所能体现的系统问题。然后是去这本书的作者博客里读了几篇他的博客阅读,主要是掌握USE method的排查方法。同时包括看各种面经里实际被问到的问题,以及他人组织好的答案,甚至是自己补充一些自己的想法。对经典问题例如slow db(system performance这本书里有一个例子), high system load but low CPU usage进行了比较透彻的理解。

一些其他的体会:跟面试官的交流态度还是比较重要,三次面试我个人感觉和面试官聊的都比较开心,特别是system面,到最后和面试官聊的很高兴的时候,面试官提了一个概念我没听说过,我甚至想都没想就反问了面试官这个技术是怎么提高系统性能的(捂脸),然后他甚至也很开心的跟我讲了一下。感觉面带微笑和一点点专业表达之外的形象化表达对面试氛围都有一点点帮助。

很幸运可以拿到Meta的实习机会,很感谢地里的朋友们提供的经验,也祝各位还在努力的朋友们早日拿到offer!
  • 34
19条回复