自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我在美帝面試程序員二三事

開發(fā) 后端
在美帝面試工程師,是一種有趣的體驗(yàn)。以前曾經(jīng)在朋友圈里發(fā)過一些體驗(yàn),這兩天,面試了兩個(gè)很有意思的工程師,其中一個(gè)勾起了我一份塵封的回憶。今天我們講講這三個(gè)人。

在美帝面試工程師,是一種有趣的體驗(yàn)。以前曾經(jīng)在朋友圈里發(fā)過一些體驗(yàn),這兩天,面試了兩個(gè)很有意思的工程師,其中一個(gè)勾起了我一份塵封的回憶。今天我們講講這三個(gè)人。

[[211620]]

(一)

SH 君。我昨天面試的 SH 君。他的背景是廣告系統(tǒng) —— 他在之前的公司現(xiàn)學(xué)現(xiàn)用,用 erlang 實(shí)現(xiàn)了 RTB system。他學(xué)習(xí)能力很強(qiáng),系統(tǒng)知識(shí)豐富,考慮問題周全,僅僅使用了一年多 erlang,在其之上的造詣就相當(dāng)不錯(cuò)。我和他聊了進(jìn)一個(gè)小時(shí),越聊越投機(jī) —— 一般到這個(gè)時(shí)候我會(huì)問 candidate 一些奇奇怪怪的問題,比如,你最近在讀什么書?最近發(fā)現(xiàn)了什么有意思的開源項(xiàng)目等等。對(duì)他,我拋出了這么個(gè)問題:如果 erlang core team 愿意在語言和 VM 層面為你實(shí)現(xiàn)幾個(gè) feature,你希望是什么?

這個(gè)問題非常 open,既考察 candidate 對(duì)已有系統(tǒng)的理解,又考驗(yàn) candidate 知識(shí)的豐富程度。

出人意料地,他一口氣提了三個(gè)愿望:1) 更好的 refc 管理,提高內(nèi)存效率同時(shí)又不引發(fā) “leak” 2) 引入 type system,最好像 haskell 那樣嚴(yán)格區(qū)分 pure / impure function 3) 把 OTP 的核心功能,比如 application / supervision tree 做到語言級(jí)別,而非以 lib 形式提供。

對(duì)于 1) 和 2) 我不太意外。3) 很有意思,也很有想法。我讓他進(jìn)一步澄清 —— 他說,他雖然沒有太多 akka 的 knowledge,但 akka 顯然在某些方面青出于藍(lán)而勝于藍(lán)。akka 下,任意一個(gè) actor spawn 出來,都有默認(rèn)的 supervisor,erlang OTP 提供了 supervision tree,可語言或者 VM 本身卻沒有把這個(gè)作為缺省行為 —— 如果我們因?yàn)樯舷挛牡男枰R時(shí) spawn 一個(gè) process,絕大多數(shù)情況,會(huì)額外去 monitor 它以便妥善進(jìn)行 error handling,既然如此,為何不默認(rèn)就 supervise 呢?

甭管這個(gè)想法對(duì)與不對(duì),單是這份思考,就超過很多很多的程序員了。

(二)

B 君。今天面試的是 B 君。android 工程師。粗一看簡(jiǎn)歷,B 君就讓我回想起了很久前面試的 S 君(下文會(huì)說),原因很簡(jiǎn)單:又一枚硅谷活化石。B 君 80 年開始工作時(shí),我還沒出生。那是是 DEC 如日中天的年代(誰都不曾料到把 IBM 逼到墻角的小型機(jī)之王,幾年后就就被 PC 的浪潮沖擊得七零八落),他在 DEC 工作,隨后換了不下十家公司,著名的有 amazon 和 twitter。如果按照正常孩子十七歲的花季上大學(xué)推算的話,他現(xiàn)在已經(jīng)年逾古稀。在國(guó)內(nèi)程序員圈子還在熱火朝天地討論程序員 35 歲后該干嘛時(shí),他卻精神矍鑠地參與一線 android 開發(fā)。并且,他是三本 android 書籍的作者,最近一本于 16 年出版,叫 android concurrency。雖然老爺子不幸錯(cuò)過了計(jì)算機(jī)近代史上幾乎所有能發(fā)家致富的機(jī)會(huì),他依然樂樂呵呵,沒有自艾自憐。

和他面試的前一個(gè)小時(shí),我上 amazon 翻看這本書的評(píng)論和可供預(yù)覽的章節(jié)。平心而論,書寫得并不算是優(yōu)秀,概念解釋得不夠清晰(面試時(shí)也印證了他對(duì) concurrency 和 parallelism 沒有清楚的定義,可能我是一個(gè)對(duì) concept 過于較真的人吧),對(duì) android 之外 concurrency 的 big picture 也不了解(比如 actor model,CSP,STM 等)。當(dāng)然,能寫書,已經(jīng)非一般人所及,他的 android 的造詣不淺,而且在近六十歲高齡活躍在技術(shù)一線還不斷寫書,實(shí)在是我輩之楷模。(和老爺子閑聊時(shí),他說他還會(huì)繼續(xù)出書)

(三)

S 君。和 S 君的面試已經(jīng)過去一年多,如若不是當(dāng)初寫了篇未完成的文章,保留了些許鮮活的記憶,我對(duì) S 君的記憶僅僅停留在「他是個(gè)活化石」的階段。

這是當(dāng)時(shí)的文章:

10多年前我剛加入 Juniper 時(shí),同事們每天中午都要一起聚餐。有一陣子,來了很多總部的華人工程師,聊起硅谷的各種軼事,一位做 Kernel 的大神同事 Yi 說起他有次在釣魚,和旁邊的老頭閑扯,一扯扯出來個(gè)以太網(wǎng)的發(fā)明者。那時(shí)我就感慨,硅谷 TM 真是個(gè)神奇的地方。

后來又陸陸續(xù)續(xù)聽到同事們不少關(guān)于偶遇硅谷活化石的故事,比如面試遇到和蓋茨喬布斯同時(shí)代的程序員等等,聽得我如癡如醉。

上周終于遇到一個(gè)和喬老爺子同時(shí)代的面試者 S君,78年印第安納大學(xué)畢業(yè)。MIPS 的早期員工,NeXT 早期員工(他是在喬老爺子被自己親兒子蘋果掃地出門,剛領(lǐng)養(yǎng)了 NeXT 這個(gè)義子后加入的),數(shù)個(gè)公司的 VP,包括 NEC(好吧,NEC現(xiàn)在已近算不得什么好公司了,不過曾經(jīng)火過)。

然后他來我們 Tubi TV 這座小廟面試!

這在國(guó)內(nèi)是無法想象的!你能想象鮑岳橋簡(jiǎn)晶這些讓人敬仰的超級(jí)程序員前輩們跑到你的 startup 來面一個(gè)程序員的職位么?

S君住在 Atherton,硅谷著名的富人區(qū),想來是不缺錢的。整個(gè)面試過程中,有個(gè)問題好幾次我?guī)缀趺摽诙觯耗瓷先ゲ⒉蝗币环菪剿瑧{資歷(或者人脈)也可以去一些大公司領(lǐng)個(gè)閑置安度晚年好了,為何要來 Tubi TV 這樣一個(gè)處在需要事事操心的階段的創(chuàng)業(yè)公司?但顧忌到文化的差異,我強(qiáng)忍住了。

作為熱身,我問了他在 NeXT 的履歷,他說自己做 object-c compiler。我對(duì) compiler 并非諳熟,不敢造次,扯了幾句后就把話題移到喬老爺子身上。S君立刻打開了話匣子,講起了各種軼事(程序君按:媽蛋我當(dāng)時(shí)為啥沒把這些軼事記錄下來),隨后他目光一暗,說老爺子自從接手 Pixar 后,精力就都投在那邊了,在 NeXT 就很少出現(xiàn)他的身影。

隨后我們聊起了 MIPS。我漸漸感受到他對(duì)技術(shù)的那份熱愛 —— 這也可以解釋他輾轉(zhuǎn)多家公司,有大大小小公司的 VP title,卻還愿意在一線做事。

他說他在加入 NeXT 之前兩年,1984年(好吧,那時(shí)候我還穿著開襠褲滿地連滾帶爬地蹣跚學(xué)步呢),加入剛剛創(chuàng)立的 MIPS,親歷了一套指令集從學(xué)術(shù)界到工業(yè)界的轉(zhuǎn)型,因此對(duì) MIPS 飽含感情。因?yàn)樵?Juniper 做過中斷處理相關(guān)的代碼,我對(duì)各種 RISC CPU,尤其是 MIPS 和 ARM 比較熟悉,于是便班門弄斧,用 branch delay 試了試他的底。他說他主要的工作是優(yōu)化 TLB,設(shè)法優(yōu)化掉 CAM(那時(shí)估計(jì)還沒有TCAM)和 DRAM 之間的 SRAM(那個(gè)年代 SRAM 無比貴),但指令流水線也是懂的。在他如同教科書般詳細(xì)介紹完 branch delay 在早期幾代 MIPS CPU 的演進(jìn)后,我突然想起一個(gè)困擾我多年的問題:為何 MIPS 有 branch delay,而同為 RISC CPU 的 ARM / PowerPC 卻沒有在指令級(jí)別做這種事情。他解釋說就 RISC 而言,MIPS 是更純粹的 RISC CPU,而 ARM / PowerPC 在工業(yè)界已經(jīng)為了性能做了些改進(jìn)(妥協(xié)),另外,暴露過多的流水線的邏輯給軟件工程師(注:主要是寫編譯器和 Kernel 底層代碼的工程師)會(huì)使得編譯器過于復(fù)雜(靜態(tài)的編譯難以完美預(yù)測(cè)指令動(dòng)態(tài)執(zhí)行時(shí)的狀態(tài))。所以他覺得 ARM 的做法是正確的,尤其是后來 hyperthread(超線程)的出現(xiàn)印證了這一點(diǎn),pipeline 的復(fù)雜已經(jīng)使這種簡(jiǎn)單的優(yōu)化失去了意義,唯有 CPU 自己的亂序執(zhí)行才是王道。

我聽得津津有味,這個(gè)思路不就是 imperial programming(程序員告訴 CPU 做事的步驟)和 functional programming(程序員告訴 CPU 想干什么)的差別么?

既然提到了 ARM,我便順勢(shì)問他是否了解 literal pool。

可惜,文章在這里就戛然而止,后來的面試過程我已經(jīng)記不清楚,唯一能確定的一點(diǎn)是,他沒有來 Tubi TV。

(四)

本來有感而發(fā),火車上隨便寫寫,發(fā)篇長(zhǎng)文字圖片了事,不經(jīng)意間寫了這么些。程序員的人生道路很長(zhǎng),未來還有一波又一波的浪潮,大部分人注定會(huì)錯(cuò)過所有揚(yáng)名立萬的機(jī)會(huì),一輩子做一個(gè)普通的勤勤懇懇的程序員。對(duì)于這幾個(gè)面試,我其實(shí)有蠻多感悟的,但思慮再三,還是決定就此擱筆,讓大伙兒自己思考吧。

責(zé)任編輯:未麗燕 來源: 程序師
相關(guān)推薦

2012-07-18 08:22:11

梅耶爾

2015-08-19 09:10:37

程序員面試

2011-12-30 09:29:38

程序員

2013-07-17 18:00:02

程序員禁忌程序員錯(cuò)誤程序員bug

2021-07-01 19:25:31

Linux 命令服務(wù)器

2013-07-24 14:17:10

2009-03-26 09:22:05

2013-11-01 17:24:39

程序員命名

2021-02-20 13:55:35

程序員計(jì)算機(jī)技術(shù)

2012-05-11 09:13:28

程序員開發(fā)者

2015-12-24 10:28:37

程序員面試技巧

2016-04-28 11:17:33

互動(dòng)出版網(wǎng)

2013-08-01 10:03:41

程序員

2021-07-26 08:21:36

程序員高并發(fā)中間件

2011-07-05 11:08:05

程序員

2013-01-10 09:22:58

程序員面試程序員面試經(jīng)歷

2013-02-19 10:12:59

2013-04-22 09:05:11

程序員

2022-03-16 19:04:33

設(shè)計(jì)模式場(chǎng)景

2013-08-07 14:19:30

禁用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)