作者superalf (外星人)
看板Soft_Job
標題[心得] Facebook面試經驗分享
時間Fri Oct 19 17:09:23 2018
九月中收到Facebook HR寄來的信,說在找machine learning tech lead engineer。這個
職位的工作,開發和研究會各佔一半,可以選擇的地點包括Menlo Park總部、Seattle、B
oston、New York、以及倫敦。問我有沒有興趣。大部分人應該都有吧,我也不例外。
約了個時間聊聊,內容大致是問問我目前的工作內容這樣,解釋這個職位的工作性質、以
及整個面試的流程 — 會先在10月安排coding interview,通過後可以參加他們11月在北
京跟新加坡辦的hiring event。他們的工程師會過來,這個就算onsite了。在這hiring e
vent有五場面試,比較特別的是會有system design,例如設計一個推薦系統之類的。
如果都通過了,會在明年四月送H1B流程。但H1B是透過抽籤,沒被抽到就沒有。如果一切
順利,明年10月on-board。我問這些地點的工作內容有何差別?他回確實是有,Menlo Pa
rk進行的專案是最多的,Seattle也很多,但boston跟紐約相對會少一些。而倫敦則是pro
duct oriented跟security,所以在選擇地點時也要把這些因素考慮進去。
結束後收到HR的信告知他需要我先回答幾個問題。印象很深刻的是,一般人編號都是從1
開始,但他第一個問題的編號是0。非常的工程師文化!連HR都那麼nerd XD
之後收到HR的coding interview邀請,隨信附上Facebook的面試攻略,內容非常豐富!其
中包含一份類似cheat sheet之類的懶人包,一份內部員工的信件,還有一個長達兩小時
的私人影片連結。他們明確指出會考的範圍,比對了一下,剛好就是cracking the codin
g interview這本書涵蓋的所有範圍。難易程度介於leetcode的easy到medium之間,但要
求的完成度相當高,必須是workable code,並且是最佳解。要知道,他們所使用的codin
g interview的介面只是個單純的編輯器,執行功能是關掉的。這意思是說,必須能用筆
在紙上寫下來沒有bug的code!在那封內部員工的信中也明確指出最好只使用紙跟筆來準
備面試。
Coding interview總共45分鐘。前五分鐘interviewer會介紹自己的工作,接下來35分鐘
要解1-2道題,最後五分鐘interviewee可以問一兩個關於facebook的問題。中間這35分鐘
不是單純寫code就好,必須先解釋自己的解法再寫code,接著會詢問時間跟空間複雜度。
如果中途網路發生斷線的狀況,面試就必須重新安排。
面試當天是一位做marketplace的工程師來跟我面試。因為目前的工作跟圖論比較相關,
我猜出graph相關題目的機會比較高,所以準備時也比較著重在這方面。還真的給我猜中
。有兩題,第一題很簡單,一分鐘就完成了。接著他請我分析時間跟空間複雜度。解釋了
一下,回說這最終要看使用到的python套件怎麼實作。他便接著問如果是你,要怎麼實作
那個套件的功能?我就解釋了一下自己的想法,每個步驟的複雜度是多少。他同意我的看
法,接著第二道題。
第二題比第一題複雜,直覺告訴我需要第一題做出來的工具,但一時想不出來該怎麼用,
卡了一下。見我在沉思,他便問什麼地方卡住,跟他討論一下就想到解法了。寫完後他看
了一下提醒我輸出需要按照某個東西排序。在改code的過程中,很不幸地他忽然看不到我
的code。後來他要了一個editor新的連結,但我們兩個都進不去。面試只能改期。
第二次面試換成另一個人,給了跟矩陣相關的兩道題。第一題是搜尋問題。但心想,這不
先排序怎麼可能在O(logN)時間完成?但後來觀察一下發現資料確實是排序過的,就趕緊
寫了個binary search把它做了。
第二題面試官提示可以先針對這矩陣做出某種資料結構,但這提示所包含的可能性還是非
常多。也許是面試官見我的想法太跳tone,便問我有沒有聽過XX。聽到這個提示就想到解
法了,但可惜時間不夠把資料轉換的部分完成。
在兩次的面試中,我利用那最後五分鐘共問了三個問題。
第一個問題是,下班後可以做很多事來提升自己,例如看paper或打kaggle,刷leetcode
是其中之一。那你下班後做什麼事提升自己?leetcode是否為一種必要之惡?
面試官回答其實他有時間的話會先處理進度落後的專案,再來會看系統設計的書。至於le
etcode,確實,candidate在leetcode上的表現其實並不能轉化為工作上的表現,但這仍
能幫助他們區分工程師的程度。所以,對,這是必要之惡。
第二個問題是,Facebook以駭客文化著名。我所理解的駭客文化是just do it & do it q
uick。另一方面,傳統的軟體開發流程要先確認需求,設計可以滿足需求的規格...比較
可靠但開發速度就慢。Facebook如何在這兩者之間取得平衡?
可能是我問的不好,面試官回覆像演算法那樣的東西都需要審核云云,但我想知道的是Fa
cebook如何在駭客文化的前提下仍能保持程式碼的品質?(還是該直接問他們有沒有用sc
rum?)
最後一個問題是Facebook怎麼評估員工?但面試官也沒講太多,只聽到他們半年評估一次
,然後Facebook是他待過的所有公司中最tough的,但評估的目的是幫助員工成長。其實
我比較想知道的是,不論是KPI還是OKR,他們怎麼設計metrics?
不意外地,根據Facebook的標準,我並沒有通過這關。不過我真心覺得他們的面試流程不
錯,有效率而且標準明確,所以跟各位分享。從這面試過程跟制度設計中,我感受到Face
book想找的,是能夠提出解決方案,並有足夠程式能力將之實現的人。
雖然沒有成功,但從這次的經驗我收穫很多。首先是明白了頂級公司的要求,以及自己跟
這標準的差距。
另外,我對刷leetcode這件事也有點改觀了,特別是像我這種本科非CS的人。之前總覺得
,把時間花在看paper或上線上課程對工作比較有幫助。CS相關的知識,像演算法或資料
結構,都是工作後才補的。而這些相關知識到底夠不夠完備,其實我沒有自信。透過刷le
etcode,可以了解自己還有哪些不足。像在這次的準備中,就學了Trie、Topological so
rt、deterministic finite automaton等等。
就題目難度而言,確實如他們所說是介於easy到medium。被刷掉,單純就是自己還不夠好
。接下來,預計花一年的時間刷完leetcode,目標是能夠在紙上就寫下bug free code。
希望自己可以達到頂級公司的程度。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.19.36.0
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1539940165.A.F8E.html
1F:推 Y78: 推10/19 17:31
2F:推 sppqre: 厲害10/19 17:41
3F:推 shownlin: 推,很值得參考 10/19 17:45
4F:推 hahaRegina: 謝謝分享 10/19 17:51
5F:→ stkoso: ML tech lead 怕10/19 17:53
6F:推 yusheng88992: 推~10/19 17:56
7F:推 MOONY135: 太屌了 10/19 17:59
8F:推 bowin: 推分享10/19 18:17
9F:推 gorillaz1: 有收到Recruiter邀面試Android 但自認太弱 不敢去 XD10/19 18:25
去啊!幹嘛不去?太可惜啦
10F:推 DCTmaybe: 感謝分享 10/19 18:28
11F:推 beatnik9100: 強者10/19 18:28
12F:推 ggBird: 強10/19 18:32
13F:推 mpst897: 太強。可以請問原po原來的職位嗎? 10/19 18:32
資深工程師,但工作其實跟data scientist一樣
也是一半研究一半開發
14F:推 appleball200: 推10/19 18:49
15F:推 Murasaki0110: 同個職位,北京onsite被刷QQ10/19 18:56
拍拍,我連第一關都過不了 T.T
方便的話分享一下onsite經驗讓大家過過乾癮
※ 編輯: superalf (101.13.7.235), 10/19/2018 19:18:59
※ 編輯: superalf (101.13.7.235), 10/19/2018 19:26:58
16F:推 y956403: 推 10/19 19:42
17F:→ kurakidream: leetcode刷好刷滿 ,我也是去年北京onsite掛了 10/19 19:43
18F:推 bobbyaxe: 感謝分享 10/19 19:48
19F:推 a78998042a: 推,好厲害!! 10/19 19:48
20F:推 jhengsiaomin: 感謝強者分享10/19 19:53
21F:推 phe6689: 感謝分享 另外 是Bug free?10/19 19:58
感謝提醒,已修。手機自己選字真麻煩
22F:推 MIKEmike07: 推分享! FB 白板真的難度還好 需要資料的可以站內我10/19 19:59
23F:→ MIKEmike07: ~ 10/19 19:59
24F:推 rio35: 強~~~10/19 20:31
25F:推 landysh: 感謝分享10/19 20:32
26F:推 plsmaop: Bug free10/19 20:56
27F:推 atpx: 推強者分享10/19 20:57
28F:推 babyfang: 推實用分享10/19 21:10
29F:推 NewLifePage: 用心分享 推!10/19 21:51
※ 編輯: superalf (49.215.164.245), 10/19/2018 21:54:54
30F:推 wilson85771: 推10/19 23:01
31F:推 g5637128: 推10/19 23:15
32F:推 newyellow: 強者推!!!10/19 23:19
33F:→ newyellow: 不過我自己做新媒體的 FB 最近在推 AR Studio 這東西10/19 23:20
34F:→ newyellow: 我就覺得他們思維有點太工程師了 ... 做出來東西對新媒 10/19 23:20
35F:→ newyellow: 的人來說其實不是很好用 :P 10/19 23:20
36F:推 sean2449: 推 10/19 23:26
37F:推 XP: 推感謝分享,祝下次就會上 10/19 23:37
38F:推 ntddt: 推FLAG分享... 10/19 23:57
39F:推 qazedcrfv: 推 10/20 00:14
40F:推 drajan: 我是倫敦onsite掛了XD 一個interview要解兩道以上才算pass10/20 00:26
41F:推 Wolfken: 我覺得FB面試比較好一點,大概都leetcode easy to medium10/20 00:32
42F:→ Wolfken: 另外onsite也會有behavior跟system design,比較全面10/20 00:33
43F:推 drajan: 我之前面Amazon跟FB都是Medium到Hard Easy應該只是warmup 10/20 01:22
44F:→ drajan: 而已 10/20 01:22
45F:推 dave9898: 強 10/20 01:30
46F:推 handsomeLin: 其實根據你電面的難度,他只是在確認candidate知道演 10/20 01:46
47F:→ handsomeLin: 算法跟打code而已10/20 01:46
48F:→ cha122977: 難度easy-medium不奇怪 自己和朋友去面大多就這個難度 10/20 02:42
49F:→ cha122977: 溝通和表達能力似乎也佔很大一部分 10/20 02:45
50F:推 VisualStudio: 推,感謝分享 10/20 07:19
51F:推 kaosmart: 推10/20 07:38
52F:推 gbd37: 猛10/20 08:15
53F:→ VisualStudio: 可以請問大約幾年經驗嗎?10/20 09:22
9年半,但前6年很廢,我覺得這只能算半年
不能再多了。所以全部算四年吧
54F:推 doranako: 推分享10/20 09:24
55F:推 answerseeker: NYC E4/5 onsite還有額外一輪ML... 雖說也掛了...10/20 11:26
56F:推 LEwww1290: 推 10/20 13:39
57F:推 syclin: 推推 但應該是 automaton 不是 automation? 10/20 14:10
沒注意到。已改,謝謝。
※ 編輯: superalf (49.216.151.82), 10/20/2018 19:25:29
58F:推 fuguyeu: 感謝分享~ 10/20 20:32
59F:推 shenevol: 推推 這種頂級的都很tough QQ 10/20 21:17
60F:推 THEWORLDS: 你一定沒有聽拒絕存取大大的話 還太菜 加油 10/20 23:42
61F:推 VisualStudio: 感謝回覆,會想問是因為最近tech板另一篇G的分享是 10/21 01:00
62F:→ VisualStudio: 十年經驗 還有之前看MS MTK之類的職缺有看過要求 10/21 01:02
63F:→ VisualStudio: 4 6或7年以上的 所以對年也有特別感覺 10/21 01:03
64F:→ VisualStudio: 另外小弟我最近從人數100+的公司 換到1000+的 10/21 01:08
65F:→ VisualStudio: 當然人數不一定代表什麼 分享一點近況 繼續努力中 10/21 01:08
66F:推 matyih: 推認真心得 想到有人耍手段進實習再轉正就是度爛lol 10/21 02:56
67F:推 leveger0903: 好厲害 10/21 08:23
68F:推 Mtcat: 10/21 18:13
69F:推 cacadeon: 感謝認真分享與心得 10/22 09:34
70F:推 chupiggy: 有經驗有推 10/22 12:52
71F:推 altecjc: 10/23 21:37
72F:推 lmr3796: 進實習為什麼是耍手段???實習的bar某種程度比正職還難 10/24 06:51
73F:→ lmr3796: 啊... 10/24 06:52
74F:推 pop1210: 讚﴿?加油 10/24 13:21
75F:→ matyih: 我是指實習只要電面 有很多手段可以搞。。 10/26 03:15