楼主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上面引。面试官毫不上当,看着要跑偏就又拉回来这道题目上。。。我想死的心都有了。
回忆一下我的回答方向,记不全了,估计跑偏很多。 你们看看就好,万不可认为是正确思路:
- Data center physical condition: noise?temperature?
2.Is the task been bounded on one CPU? - CPU usage? Is there a CPU quota? Can we remove it?
- CPU core connection? Shared bus or interconnect?
- CPU Instructions Per Cycle? Cycles Per Instruction?
- Memory usage? Swapped to disk?
- 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? - Is read/write sequential or random?
- 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。稀里哗啦写了这么多流水账,希望对各位有帮助!在这祝大家都找到满意的工作!