什麼是 LeetCode?

by | 11 月 27, 2017

LeetCode 是一個收集軟體工程師面試考古題的線上練功網站。

從幾年前的 100 多題,到現在已經累積超過 700 題;在上面可以選擇自己習慣的語言解題,除了鍛鍊思考外、也暫時離開編輯器的援助。

求職者為了在時間有限的面試下表現得更好,會在網站刷題練手感。

為什麼要刷題

軟體工程師因為是技術崗位,在招聘的過程會測驗應徵者的技術能力,從網路上前輩們的分享得知,會先透過電話面試、後續才會被邀請到公司進入下輪。

而電話面試會請受試者打開某個協同文件,在沒有編輯器幫助的情況下解題。差別在如果語法錯誤、或是左右括弧未成對等編輯器會跳出提示幫助,所以對於語法必須相當熟練。

白板解題更是直接離開鍵盤。

衝擊性的認知

我看的線上課程算多,不過當我最近認識 LeetCode 才發現到,兩個方向基本不太一樣,遭遇了毀滅性的認知打擊。

一般課程都是教你怎麼樣快速做出有成就感的東西,主要在「應用」層面,比如說做出幾款應用等等、表格地圖資料庫範圍。

而面試題偏向資料結構和演算法,這些東西就屬於學科裡的硬底子功夫,像是 Binary Tree 和 Linked List,可能會覺得很陌生或根本沒被提到。 除非特別做功課,不然以作品為導向的課程沒有太大幫助。

一來不懂這些依然可以做出應用,二來這並不是大部分消費者會想(需要)學習的範圍,非本科的要靠自己找書補足這方面的知識點。

被題目各種虐。

例如「不使用加減號,完成兩個數字求和」、「給出羅馬數字回推阿拉伯數字,好比”VI”會得到6、”DCXXI”得到621」。

種種看到懷疑人生的驚喜,連答案擺在前面都不知道他寫啥咪。

「a + b = (a ^ b) + (a & b << 1)」

…(;´༎ຶД༎ຶ`)??

對於能全部刷完的實在深感佩服,還看到不少刷了好幾輪為了求好offer實在是讚嘆,也覺得背脊一涼。

連這種遙不可及的成就找工作都略顯吃力,也就代表整體的素質門檻被越墊越高,光想就覺得很抖。因為 CS 熱門程度近幾年的觀察就業也嚴峻不少。

慢慢累積

回過頭來,對我來說不要說「刷題」了;基本就是大眼瞪小眼,看可否用灼熱的視線燒穿題目的深意,但基本上都是被甩巴掌的份就是。

舉上面這題來說,給一個陣列,裡面數字都是兩兩存在、但有一個落單的數字,請抓出來。假設給[1, 1 ,2],那2就是落單的數字。

所以我前面有提到,這跟講求「應用」的課程不同,更多的是硬底子思考,遇到當場就卡住了。

舉上面這題來說像移動火柴棒讓兩邊的等式成立那種遊戲,需要一個「啊哈」摩門特,有看出來就有、沒有就是沒有。

現在能解出來也不代表再有壓力的情境下可以順利完成。

嗯…第 10 行的 ^ 是什麼?因為這題才去研究 XOR,平常都只用 and 和 or 而已。

再來一題。

題目給羅馬數字,要把它轉換成阿拉伯數字。比如給”IV”得到數字4、給”VI”會得到6,”DCXXI”得到621。

再來一題。

在不使用+、-號的方式下,取得兩個數字的加總。

..

(°ཀ°)

延伸閱讀

吳 致賢

吳 致賢

擁有 App/Web 開發經驗的軟體 PM,從 0 到 1 執行過 20 個以上全客製專案,包含悠遊付、friDay 影音等。關於我的簡歷點此

Recent Posts

時尚與穿搭,啟蒙我審美的影片

時尚與穿搭,啟蒙我審美的影片

在 YouTube 與 bilibili 看了超過一百部關於時尚、穿搭、服飾主題的影片,整理出幾個精選,希望讓讀者們從比較有趣的角度瞭解:)