[心得] Google/Meta SWE/MLE面試
[TL;DR]
這會提到我怎麼看MLE/SWE 然後面試的內容 然後我覺得面Meta的準備方向
最後有結果的部分,但那也還沒確定所以就看看就好
如果有要面FB/Meta那真的TL;DR可以往下拉到有亮色 [看這就好] 就好
是我相信對大多數人比較有幫助的 剩下大部分是我murmur XD
[前情提要]
在風口上的豬也會飛,運氣不錯比大多數的人早踏進ML這塊
個人認為說ML有點太"空洞",不過我還真的就是做的很空洞... 基本上什麼都做
我自己大學時做的偏optimization 研究所/實習做偏modeling 工作就full stack...
目前看起來MLE還是一個variance很大的一個工作。畢竟ML要真搞出東西並不容易..
有所產出的話,MLE升的速度快到不行(我有朋友MS畢業後5年在FB升到E7的)
但其實大多數相對SWE是比較難有產出的,或是說其實做的事就跟SWE一樣
從畢業在水果店也待了快四年了,最一開始是做inference,基本上就某智能助手的model丟給我們必須要讓他在你的耳機/錶/手機上跑快快 (well, 一開始是要可以跑XD)
所以我做過的東西挺多的,從跟researcher說你們這model太慢了,直接幫他們修model
或是換換拆拆數學式,到搞Halide/TVM讓kernel跑快快
甚至直接下去跟硬體仔們討論怎麼memory map一個transformer model全都做過
基本上就是做的很廣但卻沒有很深的下海搞research或是design silicon
其實在水果店過的還是挺舒適的,而且做的東西也挺有趣的。
可是世事無常,去年我親人診斷癌症,剛好疫情我就大量remote。我的manager也覺得ok但我們team從最一開始3人膨脹到現在70人左右,終於輪到我中間多一層manager了XD
所以我跟原manager中間就插了另一個manager,很強硬的說一年最多2週remote
在疫情之前我一年大概都有3個月左右的remote,想想跟我原本的manager講也沒啥意思
我就開始找公司裡其他team
剛好這時候Google有個三月ping過我,那時候我沒面因為我說不考慮relocate到bay
說她手上有些Seattle的缺問我有沒有興趣 我就順水推舟說sure
然後上面說那個FB (Meta?) E7的朋友也說他們有新project大概50個HC問我有沒興趣
我也就順順的跟這兩家開始面試了XD
[大致心態]
我心裡想的優先程度是 內轉到training team ~= Meta >>> Google
因為Google實在是太不確定要做什麼了,我就把Google面試全部往前排當作Meta的練手
內轉到training team的優點是水果股價上漲太多了... golden handcuffs 而且那個team的manager我很熟 所以傾向滿大的
Meta的優點是要做的那個東西scope很大 非常大 而且他們是很想把東西搞出來所以才有那麼多HC,另外就是team裡面超過6成都是E6+,基本上不需要擔責任(誤)而且我滿確定裡面的人都是強的,可以學的東西很多
[General]
我面試都用C++,除了中間一個有用Python。基本上interviewer問我要用什麼語言我都會說我看題目是什麼來決定我用什麼來寫code,除非他有特別要求我用什麼語言我也行。
所以基本上string/data preprocessing之類的我會用Python,其他大部分都C++...
PS. 我有個室友特愛Java,我也不知道為啥XD
他最近也在面試 用Java吃虧了一輪 可是勸不聽......
[Google]
Google我的面試算中規中矩,但也不是典型的Google面試(幾乎沒leetcode style演算法)我的Phone screen直接跳過,所以跟recruiter講過一次電話就直接5輪virtual面試
Round 1.
behavioral基本上就那樣,我滿喜歡一個形容就是,Behavioral就是講科幻故事
但是講的故事是硬科幻,基於事實所編造出來的科幻故事LOLLLL
Round 2.
這輪Design是友善光頭大叔,長超像Walter White... 差點問他是不是兼職工程師= =
這大叔是UCB畢業的,在谷歌待了快20年 他說他thesis是做生醫影像處理 所以有搞過很多GPU有的沒的
那基本上他問的東西就是ML應用在encoding/decoding上面,只是他是一個非常specific的scenario... 所以不是單單比較PSNR之類的,那這東西最大的問題其實跟我實習時做
ads的query expansion有異曲同工之妙 我認為回答的算ok,討論起來也滿開心的
Round 3.
這輪Coding是一個上交ACM班的小姊姊,他看我resume上面有玩過ICPC就尬聊了10分鐘
然後問了一個極簡單的樹問題,我確認了一次他說 恩 然後大概30秒解決...
我後來有去leetcode稍微找一下,有個那問題的困難版(generalized)但被歸在easy LOL
後來他就問了那個問題的怪延伸,但那問題應該是無最優解,所以後面變得比較像是
design round,但在design過程,討論pros/cons同時有叫我寫些code implementation
Round 4.
這輪Coding是俄羅斯人。我對俄羅斯人沒什麼好印象,因為我自己面試過的俄羅斯人都有夠變態強,而且我認識的俄羅斯人也都強飛天... 面試官是俄羅斯人通常難度都SSS級
這輪也是我覺得最hardcore的...
他先問了我要用什麼語言,我說C++,後來的問題沒演算法,但就要我寫類似Forward
Iterator的東西。整個流程差不多30分鐘後,他說ok沒問題
然後看還有時間就說 我們來點好玩的,will not be official
後面他問了3題bitwise operation的問題,我還記得以前看農場文都說Google最愛問
腦筋急轉彎,開始工作都一笑置之,放屁都leetcode吧 沒想到竟然被我遇到腦筋急轉彎總之最後五分鐘最後一題問我怎麼bitwise取負我沒來得及想出來G_G
Round 5.
這輪Coding是個來自youtube的大叔,也是待了10來年
問了一個Streaming的問題,基本上也是leetcode不會出現的東西,因為沒正解
所以跟第三輪一樣有點像是做design但又沒那麼design
討論pros/cons然後要我寫。總之這輪有點像是Round 3+4,因為最後產出來的東西
也是類似Forward Iterator。
他最後說他沒想過有人interview會主動要用C++,這題他是design給Python的
我就恍然大悟 喔~~~然後口頭跟他講一下Python yield之類然後generator的東西
他看起來也挺滿意的就結束了
[Meta]
Meta的面試因為是內推,所以我一開始就已經定好了team
一開始的phone就直接跟director phone screen,基本上就先做team match
然後接下來就5輪virtual onsite (2 coding + 2 design + 1 behavorial)
Round 1.
這輪coding的面試官沒很強,不然就是對C++沒很熟。
問的第一個問題leetcode上肯定找得到或是大學演算法課一定提過的那種經典問題。
我一開始寫step by step聽到她問我某一行是不是該放進去for迴圈就知道不妙了XD
總之後來我寫的code沒給最優解,給了個複雜度一樣,但是space比較差的作法
但是space比較差的那種寫法比較清晰易懂,然後我再口頭跟他講這東西可以怎麼把
space壓到O(1)
這場基本上整個interview就我在drive的,想辦法讓他懂code,我再問他需不需要我做
優化,他問的兩個問題我都寫比較簡單的做法 但他都要看著code想 然後再跟我說
沒關係 It's good.
Round 2.
這輪的面試官是個UCB出來Kurt Keutzer的學生。所以面試前我有特別去讀這個人的
paper大概知道他做什麼東西還有主要研究方向。然後另外自己去多讀一些相關paper
這輪他基本上是問Convolution/Padding/Inner Product相關的問題,他也有問我要用
Python還是C++ 雖然用Python因為indexing的關係會比較簡單,但我還是選了C++,後面會提為什麼XD
基本上coding的部分也是不到15分鐘就結束了,但是我留的小心機就在這時發揮作用了XD他看我用C++寫就開始問有沒有可以優化的部分。我就開始把一些memory localization或像是for的順序,tiling之類的跟他討論,他的研究就Parallel/Distributed computing所以也是聊東聊西大家都很開心 他也就very good very good XD
Round 3.
Behavorial 沒什麼 講故事
Round 4.
這輪是個俄羅斯人G_G
這輪Design完全毀掉 他要我Design一個CI/CD System. 這輪我面的過程我就知道毀了。我跟他的溝通完全沒有辦法scope down,我完全不知道他想要我做怎樣的CI,他也講的
很模糊,感覺就是不想跟我講他想要什麼要我去通靈他要什麼,大概直到最後才稍微
有碰到一點點邊要CI能夠handle不同precision下的regression要如何處理。我這整個
時間裡面從hardware fleet/networking/deployment/testing/data generation都碰
他對testing跟data generation"貌似有興趣" 尤其是data generation的部分
可是我一直沒辦法scope下來,所以到最後我其實也不太知道他是要問什麼orz
這輪很有趣的是有一個人Shadow,然後這個人我聽過,是個愛丁堡大學的教授lol
我還讀過他的paper XD 可是我看他的page跟linkedin完全沒提到他來FB了XD
Round 5.
這輪還是個俄羅斯人orz
但還好這輪Design算是愉快的結束。基本上就是一開始是討論要如何Design IR,然後
有新的kernel要怎樣才能做high-performance implementation。
然後還有針對不同的ML Framework我們的IR要注意什麼樣的東西
ML Framework的IR比起一般像是LLVM IR有什麼可以擴展或是更restrictive來讓我們
更好針對ML problem做optimization。
整個過程我覺得well scoped然後每個sub problem都還算是有in depth的討論,還行
[後話]
面試的時候其實公司事情很忙,所以也沒太多時間準備... 而且原本安排好面試完回
台灣,但是剛好我親人病危,就提早回台灣,Google面試跟Meta的前三輪都是在防疫
旅館面。Meta最後兩輪在自主管理時,但隔天是告別式 所以整個也是微微煩躁
但可能冥冥之中就是這樣所以我面試的過程沒什麼leetcode東西,主要是design方面
平常有好好上班 RFC跟doc好好寫都還算能好好回答的問題
[看這就好]
個人認為谷歌這種面試滿難準備的,但是Meta我後來一問才知道 我毀掉的那個第四輪
其實在Meta裡面就是負責Pytorch CI/CD的部分,所以他在意的沒意外應該同時要是
numerical還有performance,然後像是unit test的部分對於不同precision還有hardware都應該要有所著墨,畢竟他的team關心的就是kernel implementation。仔細想想我那
時候有提到Conv跟MatMul之間的關聯然後他就有問test data還有unit test的design跟
decision好像就有那麼點影子了。算我腦子短路GG
Meta在面試的時候會有個頁面是說要面試你的人會是哪些人,我當初有查Round 4面我的那個人可是Linkedin上沒太多資訊,只知道他在NV/Intel待過,不像Round 2那個人那麼多資訊,如果我當初能像Round 2那個一樣多肉搜(?)一些資訊或許會好很多orz
要面Meta的人我覺得應該要好好掌握這點,多瞭解面試你的人的背景,其實滿容易抓到他可能會問的問題,會問的Design問題的方向,畢竟Design問題都是open的,那會要scopedown的部分通常就是他們熟悉的部分,畢竟這樣他們能問的更多,評估會更精準一點。
[暫時結果]
反正我終極目標是要越remote越好,畢竟我想多花點時間陪家人,但又不是純當社畜
做些自己沒興趣的工作
所以我跟HM開門見山第一句都是問他能接受多remote XD
我直接先把那些不太喜歡remote的HM排除不考慮了
谷歌team match了幾個team,有其中2個我覺得都不錯。兩個都算是"full stack" ML.
一個是GPU,可是他們同時又硬又軟。他舉了一個例子是他們有一個second-order method可是發現GPU perf不好,那有兩種解法,一個是數學上改變求導順序,另一種就是修改
GPU compiler的部分讓他utilization可以上去。他說我想做numerical optimization
的話他有很多問題可以讓我做,想做compiler也行,或是他們也有team member在做TF的API這樣可以expose一些GPU特有的hint來做優化
另一個是MLPerf相關,像是train BERT in 30 secs HM說從numerical optimization到
TF/JAX然後XLA往下到TPU或是類似HugeCTR那種Model Parallelism都是可以explore的。我想做什麼他基本上都會有東西讓我做
Meta我後來得知我的Round 4直接吃了一個Strong no hire XD 而且在Debrief的時候R4
的面試官無法理解怎麼會有人這麼笨lol 其他輪都是Strong Hire 最後R5的面試官跟
director力保之下的最後結果就本來target E6可是給了個E5
至於薪水... 還在談XD 畢竟水果這幾年漲得兇,我現在unvest還很多
所以我是直接拿W2跟unvest去談,沒拿offer compete
谷歌HR直接跟我說我的W2他們有點難達成 我是說沒關係,你只要給我remote多點
我錢少些沒關係。HR說他會跟那些HM說。
臉書的話他們直接給了我E5的頂,可是還是比我現在少XD 但是有說要突破band的話可以但是要VP approval。說Base可能沒辦法動,但可以給到E6的RSU
然後我那E7朋友說沒關係,他們要做的東西已經算explore完了 我進去沒意外應該可以
直接收割,我很在意level的話以那東西的impact升E6沒啥問題
其實還有Tiktok是面試in process,HR跟我說他們no budget limit。但是最吸引我的是他們offer說可以在亞洲時區(新加坡/中國)工作... 這應該比任何comp都還吸引我
總之一切還滿未定的
那就預祝自己Tiktok面試順利 還有各位找工作的朋友們面試順利了
當然還有大家平平安安疫情快點結束
--
強者先推 文長正在慢慢看~
train BERT in 30 secs
這個原Po有理解怎麼做的嗎? 有夠好奇
好強,謝謝分享
強者推推
這篇文強到不知道怎麼稱讚… 謝謝分享
跪著看完 好強…
推分享~這個真大佬,只能跪了orz
好強…
強 感謝分享!
推
只能推了
好強..
好強....
通篇看不懂 強者
是鬼
除了佩服強者以外,還很佩服打字,中英切換超辛苦的
太強了.....
眼界不一樣,覺得好強
碩畢四年拿E5~E6好猛
高手感謝分享
推,謝分享
強
推
這些技術如果不先在業界學個幾年的話自學學得來嗎?
強者推 謝謝分享,祝順利
是不是人家都聽過你所以不太問leetcode了xd
好猛 推推
推,一堆名詞都看不懂
推強者 感謝分享
那麼多俄羅斯人哦XDD
我跪著看
強者推,話說我以為 TikTok 不給 remote 的說
nice nice
強
先推 以免別人以為我看不懂
推
太強了吧...
Tiktok有遠端的?
強者推
強到不行。。。
推好文分享
推!!期待metaverse
強
跪著看完…
強者推
我媽問我幹嘛跪在手機前面….
看不懂趕快跪著推...
理論上全都SH/SNH,應該要加面,沒想到直接給降級
推
Family first!
好想跟大神當同事 QQ
感謝分享
推!
碩士+4年 做到這樣真的強 這篇對普通人沒有什麼參考價值xd
strong no hire還能救回來也是奇妙
太強了!
跪...
先推再慢慢搞懂
強者 跪
強者!推!
詭著看完
跪著看完…
跪了
我看了什麼
這是故事不是經驗 距離普通人太遠了QQ
推推強者
想問用java面試為什麼會吃虧QQ
好奇5年E7是完成什麼曠世巨作
膝蓋好痛 ...
看到在發光的一篇文
感謝分享
跪著看完
好猛 給推
有神快拜
謝謝分享 :)
推
好強
等下,google和meta都可在台灣時區工作但領global pay?!
強者
推
太神了!~
強者
推
好厲害
推
推
猛炸
有神快拜
推強者
推
有強者快拜~
在水果做 希禮 inference stack? 沒幾個台灣人頗好猜XD co
ngrats!
大師
推
推 好猛
感謝分享,菜G想請問一下水果店是指 QQ
回樓上 Apple吧
膝蓋破皮了
這太猛了…
太鬼
這太強大了 先跪Orz 感謝讓我看見神的領域
好奇為什麼JAVA面試會吃虧?
感謝分享
碩畢四年超強
直接收割還算有impact @@ 當其他人是?
好猛
太扯惹…
強者
好扯
跪推
跪
太強了...
神
紅色明顯:用Java面試"相對"比Python吃虧
根據朋友的說法,有些題目python可能兩三行就結束了
當Python寫完的時候,Java可能還在寫loop之類的
跪推
猛的一批
推
神人推推
強者 用心推
真 強者
神人推
真的太強
我兩年前也面試過 FB,結果system design 和你一樣,不知
他們要什麼。今天recruiter 再來找時,我把情況告知之後
就找來一個領域和我接近的人來做 system design,才通過
system design 經常就是在講故事,打高砲。遇到領域接近
接近的人,砲起來會簡單多。
修正「今年」不是「今天」
太強了吧
推強者 太神了OMG
朝聖推
猛
跟鬼一樣
64
[請益] 新鮮人工作請益小弟114CS學112CS碩 剛畢業 下禮拜臺GG IT跟CAD準備談薪水 目前手頭上還有幾間公司的無聲卡 裡面有幾間是我喜歡的 沒消息一個禮拜了 以及幾間還沒面試的 家人很喜歡臺機電一直勸說我就去那工作了54
[心得] 2022 台灣 ML 面試心得 (AMZN/GOOG)嗨大家好,第一次在本版發心得文,希望可以對正在面試的各位有所幫助。 medium 好讀版請看 以下正文: Background 在今年決定離開前公司後,就期許自己未來順利找到工作的話,要記錄自己的面試過程,35
Re: [面試] 想請教面試容易被扣分的行為?我自己分享一下一些含被面試以及面試人的心得。 當面試官: 通常我自己在面試人的時候,不太會刻意在專業上刁難人,尤其是剛畢業的同學。 基本上看過履歷,大概知道背景後,會叫來的就是覺得專業背景看起來還可以的。 我自己會更著重在談話起來的感覺。我相信一些工作比較久的板友,或許也可能有21
[問題] 剛剛面試的很順利,但是...剛剛面試的很順利也聊的很來 但因為目前面試的工作是要跟裡面即將離職的人做交接的 因為他要去加拿大讀書 所以要找到人做交接 但我目前的工作還在職中(任職8個月)3
Re: [問卦] 為啥面試官很愛聽自我介紹??我有當過基層工程師的面試官,我來跟你說吧~ 我相信很多人都跟我是一樣的........ 首先,很多面試官,根本就沒看過你的履歷表! 不是沒時間看,而是很多情況面試,都是我當時 一級長官,忽然丟一份履歷表給我。然後就跟我1
Re: [問卦] 「是否有面試其他公司」 此題怎解?直接這樣回喇,看你敢不敢了,就直接反問,你還有要面試幾個求聊者,然後看看面試官 要咋回,如果真的腦羞直接拒掉你,那這家公司也不值得去。 要不然更狠些,直接嗆說,我就是同時還面個N家同產業的公司又如何?啊你都可以面N 名求職者,然後從中挑選願意在低薪又長工時又高強度的環境下工作了,那我為不啥不能 面N家公司,從中挑錢多躺平能養老的公司。