當前位置:
首頁 > 最新 > 反轉技術面試!還有這樣的操作?

反轉技術面試!還有這樣的操作?

編譯:伯樂在線/聽風

假想面試的時候用 Clojure 做題,狠狠地鄙視了一下不懂 Clojure、且高傲無知的面試官,然後瀟洒地離去。

如果你打算找一份程序員的工作,那麼你必須要通過白板面試。 作為工程師,模擬白板面試也經常是我們早上例行公事的一部分,同時還需要在星光層(astral plane)上打開一個漂亮的網格狀的 xterms 窗口,並且在每個鄰近的目錄中不由自主地運行 ls 命令,以防事情在昨晚有什麼變化。

這不亞於在廚房後面的那個抽屜里,搞一次天翻地覆地搜查。而那個抽屜里存放著各種各樣的法蘭盤、螺絲刀和從各種家用電器上掉下來多年的各種配飾或零件。現在誰也不知道這些東西原來是做什麼用的,或許從來就沒知道過,儘管如此,我們還必須小心翼翼的對待它們。

下面我將通過一個常見的面試題,向你演示一下白板面試:反轉鏈表。

首先,我們需要一個鏈表。清除 xterms 中不需要的工作區,然後在兩個括弧的作用域中寫上必要的元素和通配符。這樣我們就從無到有創建出了一個鏈表。

(defn cons [h t] #(if % h t))

「那不是一個鏈表,那只是一條 if 語句。」面試官說。

「 這不就是一個另類點的鏈表嗎?」你回答到,同時翻了一個白眼。

GIF/541K

user=> (defx(cons1(cons2nil)))

# user/x

user=> (xtrue)

1

user=> ((xfalse)true)

2

「x 到底是什麼?」面試官盡量讓自己看些來友善些。答案就在 REPL,但不要被它一時誤導了,它們可不是你的朋友。你在前台的「誓言」,不允許你使用它。

#object[user$cons$cell__44310x3b89cc1c"user$cons$cell__4431@3b89cc1c"]

「了解一個事物最好的方式,就是對它命名。」你回答到。恰當的名字具備魔力。由 Ursula K. Le Guin 發明的 K 語言是最古老和最精練的形式語言之一。一旦你使用某個字元對程序進行自定義命名,意味著你將不能再使用這個字元元素。 你自定義的縮寫名稱會記錄在程序的內存中。

「呃,好吧,你怎麼從這個鏈表裡面取出一個元素呢?」 面試官又問。

那些巧妙的表達式在你腦海中逐一呈現,彷彿紅地毯在你光著的雙腳下慢慢展開; 猶如昨晚觀看奧斯卡頒獎典禮時,你憧憬著不同的明星來親吻你;又好像你住在瑟略島(S?r?ya )山脈之上,月亮就是你的愛人。 除了邊界檢查,你在第一時間寫出了正確的代碼:

(defnnth[ln]

(whenl(if(=n)

(ltrue)

(recur(lfalse) (decn)))))

「你能不能給我寫一個正常的鏈表嗎?就像 Python 中的那樣?」

(defnprn-list[l]

(print"(")

(loop[ll]

(if(nil?l)

(print")n")

(do(print(ltrue))

(when(lfalse)

(print" "))

(recur(lfalse))))))

白板面試時根本沒有多餘的時間去描述變數、寫示例或文檔注釋。在白板面試中,時間就是一切。你就假裝你是一名 Haskell 程序員,正當著你奶奶的面繼續完成下面的代碼。

user=> (prn-list(cons1(cons2(cons3nil))))

(123)

面試官笑了,安心了。 至少此時,代碼輸出的鏈表仍是正序的。「那麼,要反轉這個鏈表,你需要……」

你抓住了他的手,然後在白板上寫代碼,那感覺就像在用古老的語言吟誦詩句。而此時此刻,他的大腦卻一片混亂,好像鬆了發條的瘋狂亂撞的鐘,又彷彿心臟上爬過絛蟲,砰砰直跳的心臟恨不得逃出胸腔。

(defnreverse[l]

(loop[rnil,ll]

(ifl

(recur(cons(ltrue)r) (lfalse))

r)))

user=> (prn-list(reverse(cons1(cons2(cons3nil)))))

(321)

當你鬆開他的手時,他結結巴巴地說了些有禮貌的話,然後把連帽衫的拉鏈拉上假裝以抵禦寒冷。這裡將會有其它的面試會議,但你已經不需要參加了。他用銳利的眼光朝你所在的地方看了一眼。

當然,他們會拒絕你,並且總是裝著極其難為情地說,你不符合他們的公司文化。乘風歸去吧。此地不屬於你。

看完本文有收穫?請分享給更多人

關注「伯樂在線」,看更多精選 IT 職場文章


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 伯樂在線 的精彩文章:

無我編程的 10 條戒律
累到想刪庫,程序員職業倦怠的真實現狀

TAG:伯樂在線 |

您可能感興趣

有哪些閃瞎眼的面試騷操作?
找不到工作是有原因的?面試官的這個問題,決定著你面試成功與否
如何準備才能做一場好的面試?
面試前,做好這六個準備工作,你的面試成功率會更好
程序員面試真的是「面試造火箭,工作擰螺絲」嗎?原因其實很簡單
在面試的過程當中能影響面試結果的因素很多 造成求職面試失敗的原因也很多 那麼求職面試失敗原因有哪些
這是一個機械公司的面試考題,來試試你能及格嗎?
這樣穿,你的面試才算合格!
求職面試的一些技巧!
面試是個技術活兒,掌握好這些技巧,必將事半功倍!
面試問題:你最大的弱勢是什麼?這樣回答面試官最滿意!
怎樣回答「你對職業發展有什麼看法」這樣的面試問題?
細數面試失敗的原因!走不到第二輪面試的真相可能不在你身上!
面試這樣穿,還擔心找不到工作嘛!
面試官問「你最想做的工作是什麼」,該怎樣回答比較合適?
這四種能力,比工作經驗更吸引面試官
沒履歷的你,想轉行?搞定面試官是第一步!
求職面試時,這些準備工作很重要!
在面試中,你可能會遇到截然不同類型的面試官,面對不同的面試官要怎樣應對呢?
微軟AI面試題有多難?這裡有一份樣卷,你也來試試?