脸书 Production Engineer (PE)Intern 时间轴+面试

分享一下没那么新鲜的FB PE Intern 题目和Timeline

Timeline


9.10 FB Open House 投的简历

9.20 HR 接触

9.25 一面

10.1 二面

10.4 Offer

PE的岗位和SDE的pipeline其实是分开的,不同的HR,可以同时投递。我的SDE简历一直没有被pickup,录了PE之后据说更不可能pick up了。

Interview


一面:
非常基本的数据结构题(时间有点久远,细节不是很清楚了)
两个text file, fileA,fileB,每一个file都是关于恐龙……
E.g.: (具体value我瞎编的)

fileA:
name stride_len diet type
konglong 2.8 meat supersuperdino

fileB:
name height habitat origin

konglong 1.8 salt lake hangzhou

任务:
给定一个恐龙,他们的速度(speed) = f(height, stide_len)
从俩个file找出origin = hangzhou的diet =meat的恐龙, 并按速度(speed) 从大到小排序
Followup:说下复杂度

二面:
纯聊天。幸福3选2

  1. 电脑Bootup时候会发生啥?
  2. 键盘按键之后会发生啥(Ctrl C) ?
  3. 如果你怀疑有一个程序Disk I/O很慢,你会怎么办?

很不错的面试体验,我选了的2和3.
2:讲了大概从硬件drive,interrupt OS,然后signal handler一系列的概念。面试官问了些问题比如:什么signal不能ignore,signal handler的是如何运行的等等。
之后又拓展到了process management (因为我提到了sigchld),然后讲了下zombie process相关的,sigchld handler可以干些什么有意思的事情。
之后又聊到了shell的运行,一个shell是如何和用户interact的, backround vs foreground job, shell 如何kill 其他job,ssh 进remote server之后,如何在ssh断了之后让一个process 运行。

PS有些东西我也不是很确定在面试的时候,面试官会善意地提醒和帮忙总结。对于不会的我也就老实说我不知道,我感觉面试官也没有很在意, Quote: “I care more aboutwhat you know, rather than what you don’t know, which is why I am giving you 3options so you can choose 2".
PS 在这里,真的很推荐大家上CMU的一门网课叫Intro to Computer System :slight_smile:

3:我先说了下如何判断是不是Disk I/O, 对于mem 相关的linux指令我其实不是很熟悉,就提到了比如htop看cpu使用率,然后perf 做profiling之类。并老实说自己对于其他disk相关指令不是很熟。
之后聊了下潜在为什么会出现disk i/o bottleneck的原因,然后说了下如何改进这个进程的DiskI/O,讲了一些high level的提升disk I/O的方法,比如batch writes啊,直接mmap进memeory等。
之后又聊了下memory相关的知识,比如cache相关的概念, page cache等之类的概念。
最后他提了下RAID,which 我当时并不知道是啥子,也就老实说我不知道。
具体的回答和提问由于我有限的大脑已经不是很记得了sry……如果说要有什么准备的tips的话,就是多看看系统相关的书,上些系统相关的课吧