乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      反轉(zhuǎn)技術(shù)面試!還有這樣的操作?

       漢無(wú)為 2019-03-18

      (給伯樂(lè)在線加星標(biāo),看經(jīng)典文章

      編譯:伯樂(lè)在線/聽風(fēng) 

      假想面試的時(shí)候用 Clojure 做題,狠狠地鄙視了一下不懂 Clojure、且高傲無(wú)知的面試官,然后瀟灑地離去。

      如果你打算找一份程序員的工作,那么你必須要通過(guò)白板面試。 作為工程師,模擬白板面試也經(jīng)常是我們?cè)缟侠泄碌囊徊糠郑瑫r(shí)還需要在星光層(astral plane)上打開一個(gè)漂亮的網(wǎng)格狀的 xterms 窗口,并且在每個(gè)鄰近的目錄中不由自主地運(yùn)行 ls 命令,以防事情在昨晚有什么變化。

      這不亞于在廚房后面的那個(gè)抽屜里,搞一次天翻地覆地搜查。而那個(gè)抽屜里存放著各種各樣的法蘭盤、螺絲刀和從各種家用電器上掉下來(lái)多年的各種配飾或零件?,F(xiàn)在誰(shuí)也不知道這些東西原來(lái)是做什么用的,或許從來(lái)就沒知道過(guò),盡管如此,我們還必須小心翼翼的對(duì)待它們。

      下面我將通過(guò)一個(gè)常見的面試題,向你演示一下白板面試:反轉(zhuǎn)鏈表。

      首先,我們需要一個(gè)鏈表。清除 xterms 中不需要的工作區(qū),然后在兩個(gè)括號(hào)的作用域中寫上必要的元素和通配符。這樣我們就從無(wú)到有創(chuàng)建出了一個(gè)鏈表。

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

      “那不是一個(gè)鏈表,那只是一條 if 語(yǔ)句?!泵嬖嚬僬f(shuō)。

      “ 這不就是一個(gè)另類點(diǎn)的鏈表嗎?”你回答到,同時(shí)翻了一個(gè)白眼。

      user=> (def x (cons 1 (cons 2 nil)))

      #'user/x

      user=> (x true)

      1

      user=> ((x falsetrue)

      2

      “x 到底是什么?”面試官盡量讓自己看些來(lái)友善些。答案就在 REPL,但不要被它一時(shí)誤導(dǎo)了,它們可不是你的朋友。你在前臺(tái)的“誓言”,不允許你使用它。

      user=> x

      #object[user$cons$cell__4431 0x3b89cc1c 'user$cons$cell__4431@3b89cc1c']

      “了解一個(gè)事物最好的方式,就是對(duì)它命名?!蹦慊卮鸬?。恰當(dāng)?shù)拿志邆淠Я?。?Ursula K. Le Guin 發(fā)明的 K 語(yǔ)言是最古老和最精練的形式語(yǔ)言之一。一旦你使用某個(gè)字符對(duì)程序進(jìn)行自定義命名,意味著你將不能再使用這個(gè)字符元素。 你自定義的縮寫名稱會(huì)記錄在程序的內(nèi)存中。

      “呃,好吧,你怎么從這個(gè)鏈表里面取出一個(gè)元素呢?” 面試官又問(wèn)。

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

      (defn nth [l n]

        (when l (if (= 0 n)

                  (l true)

                  (recur (l false) (dec n)))))

      “你能不能給我寫一個(gè)正常的鏈表嗎?就像 Python 中的那樣?”

      你咬緊牙關(guān),氣憤地在地板上直跺腳,但還是寫了一個(gè)排版良好的打印函數(shù)。 此刻,你的手掌仿佛充滿了老繭,你的眼皮仿佛沾滿了冰霜、以及煙灰黑色的雪花。 每個(gè)函數(shù)都是要付出代價(jià)的,當(dāng)然,除非它是無(wú)副作用的純函數(shù)。

      (defn prn-list [l]

        (print '(')

        (loop [l l]

          (if (nil? l)

            (print ')n')

            (do (print (l true))

                (when (l false)

                  (print ' '))

                (recur (l false))))))

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

      user=> (prn-list (cons 1 (cons 2 (cons 3 nil))))

      (1 2 3)

      面試官笑了,安心了。 至少此時(shí),代碼輸出的鏈表仍是正序的。“那么,要反轉(zhuǎn)這個(gè)鏈表,你需要……”

      你抓住了他的手,然后在白板上寫代碼,那感覺就像在用古老的語(yǔ)言吟誦詩(shī)句。而此時(shí)此刻,他的大腦卻一片混亂,好像松了發(fā)條的瘋狂亂撞的鐘,又仿佛心臟上爬過(guò)絳蟲,砰砰直跳的心臟恨不得逃出胸腔。

      (defn reverse [l]

        (loop [r nil, l l]

          (if l

            (recur (cons (l truer) (l false))

            r)))

      user=> (prn-list (reverse (cons 1 (cons 2 (cons 3 nil)))))

      (3 2 1)

      當(dāng)你松開他的手時(shí),他結(jié)結(jié)巴巴地說(shuō)了些有禮貌的話,然后把連帽衫的拉鏈拉上假裝以抵御寒冷。這里將會(huì)有其它的面試會(huì)議,但你已經(jīng)不需要參加了。他用銳利的眼光朝你所在的地方看了一眼。

      當(dāng)然,他們會(huì)拒絕你,并且總是裝著極其難為情地說(shuō),你不符合他們的公司文化。乘風(fēng)歸去吧。此地不屬于你。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多