脸家PE最强过筋!(附Timeline!)

楼主new grad,美本Econ背景,辅修CS,后来去哥大Data Science。CS背景嘛,就是一些本科学过Algorithm,Data Structure,本科还做过一个OpenGLgraphics project。后来在哥大上了Database和Operating System。。。面PE全靠这节OS了。课上具体做的也就是普通OS课上都会学的,projects就是scheduler, filesystem,还弄了一个system call和in kernel data structure。学的都不太深,但是广度算是可以的了。(楼主上过一周的Network课程,然后drop了。。。几乎算是一无所知,后面也是和HR强调自己真的不懂Network)

今年差不多8月末9月初内推的PE,下面是timeline:

9-19 HR联系
9-20 收到OA
9-24 做完OA,第二天约第一轮电面
9-30 第一轮Coding,当天约第二轮
10-7 第二轮System,第二天约Onsite
10-22 昂赛
10-30 Offer

下面就仔细说一下每个流程吧

OA :
OA之前我就把之前OS的课件和proj都复习了一遍,差不多捡回来了90%的东西。OA是20道Linux Command的内容,考试的类型属于这种:如果我想干什么事情,我应该用什么command之类的。差不多就是ps,man,vmstat这种,包括很多network的。里面有很多command我都不知道,18分钟时间挺紧的。想在网上查的话时间比较紧。建议就是先写会的,然后再查。写完直接出分。我错了2道,地里面说两三道都可以过,具体也不清楚。反正network的我都是连蒙带猜加上之前上的几周课程写的。所以我也给HR说的很清楚Network我一窍不通。觉得大部分的人应该都能过吧。有些难题在网上搜索的时候也很容易找到答案。

但是有一点非常重要!HR发过来的时候说,这个OA的成绩会影响你后面的面试。我猜就是会面试你擅长的。。。。我猜如果写的Network都全对,后面被面但是啥都答不出来就惨了。。。所以我当时Network的一些问题干脆就空了一题

第一轮电面Coding:
这轮非常简单。都是地里面的高频题目。我面的是利口824羊拉丁加上一个vmstat的题目。倒是没有考vmstat里面的每列都是什么意思,只不过把它的output当作一个file,parse一下然后做一些operation。讲真,真的简单直接。如果说有什么建议的话,就是一定,一定要好好练一下string manipulation和file IO,无论用的是什么语言。楼主在onsite的时候也考到了string manipulation。虽说syntax不重要,但是最好还是让面试官觉得你很了解这门语言就好。老生常谈就是解题的时候一定要和面试官多多聊天,就好像和朋友讲题一样。一般来说这轮不会刷人吧我猜。。。

第二轮电面System:
HR在约的时候会给你推荐几本书。其中一本就是System Performance。这本书很有帮助。由于楼主之前学过OS,就花了整整一周时间看了其中6章:Operating System, Observability Tools,CPU, Memory, File System, Disk。楼主跳过了dtrace的part,因为太长,而且也一时半会看不懂。

看地里面这是刷人最多的一轮。据说高频题有三道,Linux boot process, ls -al *, 和slow query。这一轮我被面的是slow query,就是说在一个db上跑一个query很慢,你会怎么办。面试官希望看到你如何发现错误,比如跑什么command,然后面试官会给你一个结果,让你解释。比如你说会看CPU utilization,面试官就说如果一直都是60%,意味着什么,你会怎么做。面试官会慢慢follow up,你说的每一点都可能被深挖。。。所以如果不太了解别瞎掰,干脆别往那里引就好了,省的弄巧成拙。

楼主当时听到这题都傻了,这三道题我就这一道没准备,就考了这个。硬着头皮说了everything I know。楼主学过OS,了解一点kernel,所以拼了老命把面试官往kernel上面引。面试官毫不上当,看着要跑偏就又拉回来这道题目上。。。我想死的心都有了。

回忆一下我的回答方向,记不全了,估计跑偏很多。 你们看看就好,万不可认为是正确思路:

  1. Data center physical condition: noise?temperature?
    2.Is the task been bounded on one CPU?
  2. CPU usage? Is there a CPU quota? Can we remove it?
  3. CPU core connection? Shared bus or interconnect?
  4. CPU Instructions Per Cycle? Cycles Per Instruction?
  5. Memory usage? Swapped to disk?
  6. Priority of the process? What is the scheduling policy of it? Can wechange the policy to real time?
    8.Query doing read or write? iostat? Is write asynchronized? Add write cache/read cache? Hit ratio?
  7. Is read/write sequential or random?
  8. What FS? What is its structure?
    11.Disk cache? Disk layout? Which RAID?
    12.Can we optimize query? Multithreading?

能回忆起来的就这么多了,反正面试的时候我会的就说会,不会的就说我不太清楚,但是我inferbalabala。反正面试的时候觉得非常尴尬,就是要挂的感觉,硬着头皮回答吧。

等到这轮面完才发现这道题目在System Performance 上有,第一章就是。。。里面详细的写了应该怎么做。我后面又看了一下,发现自己还是不能掌握这个答案,必定突击来的知识不够扎实。所以按照书上说会不会面的更好?我不清楚。可能会被深挖自己不知道的地方,没准面的更烂。说不清楚,各位小伙伴仁者见仁智者见智吧。

最终面onsite

由于楼主十月中旬正好midterm加capstone proj,就约到了22号,中间看起来时间长,但是其实基本没有准备面试。都在忙课业上的事情。而且到最后越发浮躁,其实没做什么复习。。。连behavior question都没有准备。讲真,我本就没有打算准备bq。我觉得bq就是看我适合不适合这个公司。如果不适合我装适合,想必拿到offer过去上班我也不会快乐吧,所以就一点都没准备。刷了一些题目找了找感觉就过去了。

在飞过去的飞机上心血来潮复习了一下当时的OS file system的proj,直接去code base里面查了一下iterate和lookup的function,没想到最终system面真的用到了hhhh 这是后话了。

昂赛一共四轮加午饭。车轮战,中间没有任何休息时间,顶多上个厕所。我第一轮就是system,面的题目就是 ls -al *。正好楼主之前准备过。直接google what happens when you ls -al 就会有很详细的教程,就不在这里赘述了。因为来时飞机复习了一下fs里面的东西,就顺理成章胸有成竹的讲了讲iterate & lookup, dadd(), dir_emit()。也不知道面试官时想给我放水还是对fs不熟悉,也就没有深挖fs。因为我最开始从shell说的,提到了之前写过的一个toy shell,所以考了一下parsing,fork,*是怎么被match的,zombie process什么的。反正大家估计都不太一样,取决于你和面试官聊到哪里。面完我就觉得,这是我面的最出彩的一轮。至于思路大同小异,就不在这里写了。。

System完了吃饭,这时候换了一个pe陪我吃饭聊天。聊聊生活,聊聊伙食,聊聊西雅图,聊聊选组什么的。有趣的是聊到behavioral question,我说我没有准备BQ,这个pe说反正BQ那轮很少刷人,其实就是看你适合做哪个方向的。我猜八成是在安慰我hhh

吃完饭就是BQ轮。这一轮是视频面试,一个房间里面打视频,面试官是一个资深PE,也有过转SDE的经历,最后还是转回PE。
接下来是两轮coding。题目都比SDE简单一个档次。两轮面试题目都有File IO。就像之前说的一样,无论用什么语言, 一定要熟悉file IO 和string manipulation。 关于IO的题目的follow up一般都是内存放不下怎么办。在此感谢第一轮的国人小哥,人很Nice,让我感觉特别亲切,就没那么紧张了哈哈哈。顺便说一句,coding是写在白板上的,写完了以后面试官会照下来code,所以最好注意一下字体哈!coding的题目就有地里面的battleship和恐龙。Battleship面试官让优化,但是不要想多了,这题顶多O(n^2),他们说的优化的意思是让你优化前面的constant。这个和PE的工作也很符合,即便都是一样的time complexity,constant的不同会造成很大的performance difference。

后来就是回家等消息了,面完就觉得问题不大因为貌似没有搞砸任何一轮,但是在等待中还是心里没底,必定BQ面得不是很理想。后来HR联系我才心中的石头放下来了。这么看来就不去亚麻做SDE了,直接去脸家做PE。即便不喜欢了到时候在面试转脸家SDE就好了hhhh。稀里哗啦写了这么多流水账,希望对各位有帮助!在这祝大家都找到满意的工作!

感谢楼主!请问楼主system performance说的是 Optimizing Linux Performance by Phillip G. Ezolt 这本嘛?请问楼主的书都是在哪里找的呢?(可不可以分享一下非常感谢!!!!!!

并不是。是Brendan Gregg的system performance

楼主想问一下你的简历上有把os的项目写上去吗?顺便问一下是内推还是海投啊

看tag是内推

没有,是内推