Re: [討論] 軟體工作真的有需要刷題嗎?

看板Soft_Job作者 (Peaceful Warrior)時間2年前 (2021/08/15 19:26), 2年前編輯推噓37(38129)
留言68則, 41人參與, 2年前最新討論串7/14 (看更多)
小弟在後端與資料領域打滾過幾年,也刷過上百題 Leetcode 同意大部分演算法題確實工作上不會用到,但仍然有很多潛在價值存在 就來分享一下我覺得刷題真的"有意義"的那部分好了 1. 工程基本功 例如天字第一題,Two Sum,考得就是一個 Hash Table 的基本概念 也是非常常見的 junior developer 會遇到的場景 例如現在有兩台機器,定期產出 1e6 筆資料量級的 excel 報表 現在要你寫個系統 on-demand 讀取並合併兩張報表後返回給客戶 如果做成 O(N^2) 然後跟主管說他就這麼慢沒辦法 那技術顯然很有問題... 2. 將理論實際應用的能力 例如 Trie 的概念本身不難 但突然碰到沒見過得複雜變化問題 你有辦法馬上反應過來應用上去嗎? 3. Coding 速度與準確度 你有沒有辦法在很短時間,實作一個中等難度的問題,然後一次就 bug free pass 這對應的是你平日工作的開發效率,還有邏輯是否縝密 如果你寫兩三行 code 就要一直 print 看輸出修改邏輯漏洞 代表你對程式操作變數的熟練度不足 當要大量開發一些不太困難的工項時(這是公司常見場景),效率會較低落 而且可能會有潛藏的 bug 甚至 unit test 也幫不了你,因為你根本就沒想到要測試這些 corner case 4. 後端系統設計 要你做資料庫選擇,那最少該對 B+Tree, LSM Tree 等結構有概念 要你做地圖系統,那 Quad-Tree, R-Tree, KD-Tree, Z-Order Indexing 也該能聊聊? 或 Cache 系統最常見的 LRU/LFU cache 選擇 分散式系統最基本的 Consistent Hashing 有哪些應用,好壞是什麼 這類演算法可能實作很複雜導致 Leetcode 不愛考 但 Leetcode 的部分題目也是從這些概念中提煉出來(例如一堆基本 Tree 操作) 足夠小到可以變成一個 10~20min 寫的完的題目 假如你 Leetcode 都寫的出來,想來要理解系統設計真實應用的演算法也不會太困難 5. 靈活思考 這就一些奇怪的觀察力考驗題 看你能不能看穿他轉幾個彎之後,就是某個簡單的演算法概念 跟考益智問題的意思差不多 因為他想找真的很聰明、頭腦很靈活的人 如果聰明人想得出來,大量努力刷題苦練過的普通人也想的出來 那起碼這個篩法有一定機率找到我想要的人,另一些也是肯努力的人 這樣對面試官來說也不錯了 6. 溝通能力 這個應該也被講爛了 很多公司也沒有要你一秒給最佳解(真的題題秒解還會懷疑你是哪邊去偷到題目) 而是要看你一路跟面試官怎樣討論溝通,將答案一步步優化到最佳的整個過程 你刷的題目足夠,思考也會更穩定,討論更聚焦更有方向,對答案更有自信 如果他覺得你是個一起討論研究問題很舒服的人,就有機會給正面評價 我自己就曾在 Appier 面試被丟了一個沒有優於 O(N^2) 還是 O(N^3) 解的問題 (細節部分記憶模糊了... 也可能是沒有 linear time 解) 但他問的一副有的樣子,一直要我再想想 我想了一陣子,還是跟他解釋了幾種不同思路、假設、還有分別會遇到的障礙 然後很有自信的跟他說這確實沒辦法 面試官就很滿意了,說那是他們真實遇到的難題,也確實還找不到辦法,所以跟我聊聊 後來我們又聊了很多有趣的問題,是很棒的面試經驗 假如當時我不夠熟練的話,一定只會一直擔心我哪裡沒想到,做不出來完蛋了死定了 大概就不會有後續了 當然啦,如果碰到不合格的面試官,或考題亂挑一通,那以上情境都不會發生 有些面試官只會背題,甚至自己也不懂 手上有一份答案,你講的跟答案一樣就 pass 你講不一樣但同樣可以過(甚至還更好)的答案,通通都算 fail 那遇到這種也只能說運氣不好,這場考試毫無意義 但不代表這整個演算法面試的模式沒有可取之處。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.122.161 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1629026770.A.B4E.html

08/15 19:38, 2年前 , 1F
08/15 19:38, 1F

08/15 19:43, 2年前 , 2F
08/15 19:43, 2F

08/15 19:44, 2年前 , 3F
08/15 19:44, 3F

08/15 20:47, 2年前 , 4F
推好文
08/15 20:47, 4F

08/15 20:47, 2年前 , 5F
同意
08/15 20:47, 5F

08/15 21:27, 2年前 , 6F
開發需要這些演算法就會去研究,但跟是否要在面試考
08/15 21:27, 6F

08/15 21:27, 2年前 , 7F
是兩回事 。
08/15 21:27, 7F

08/15 21:28, 2年前 , 8F
不過對應不同的場景,可以使用何種演算法倒是不錯的考法
08/15 21:28, 8F

08/15 21:28, 2年前 , 9F
但直接考那些 Pseudo Code,沒什麼意義
08/15 21:28, 9F

08/15 21:29, 2年前 , 10F
知道用什麼來解,對工程師來講就是後續製作的小細節
08/15 21:29, 10F

08/15 21:29, 2年前 , 11F
就資方成本最低的面試的方法 可以吹成這樣也不簡單
08/15 21:29, 11F

08/15 21:30, 2年前 , 12F
那些網路查就有
08/15 21:30, 12F

08/15 21:33, 2年前 , 13F
死背那些 Pseudo Code 沒什麼意義
08/15 21:33, 13F

08/15 21:37, 2年前 , 14F
讓這些有興趣的新手們,多貢獻程式到 github 吧
08/15 21:37, 14F

08/15 21:40, 2年前 , 15F
不就是資方沒能力鑑別人才,才用這樣的方式方便省事,也能
08/15 21:40, 15F

08/15 21:40, 2年前 , 16F
我連two sum是啥都不知道 我好廢
08/15 21:40, 16F

08/15 21:41, 2年前 , 17F
吹成這樣也不簡單了,考oral language你一定上
08/15 21:41, 17F

08/15 21:47, 2年前 , 18F
但是真的人才是不會浪費時間去搞刷題的,賺錢都來不及了
08/15 21:47, 18F

08/15 21:47, 2年前 , 19F
08/15 21:47, 19F

08/15 21:59, 2年前 , 20F
08/15 21:59, 20F

08/15 21:59, 2年前 , 21F
酸的大概菜雞吧 真的有在面試的就知道
08/15 21:59, 21F

08/15 21:59, 2年前 , 22F
以前都要研讀候選人的履歷針對性問一些問題
08/15 21:59, 22F

08/15 22:00, 2年前 , 23F
刷題就面前上去leetcode挑個題目 看一下各種解答
08/15 22:00, 23F

08/15 22:01, 2年前 , 24F
就跟聯考一樣 大家都標準一致
08/15 22:01, 24F

08/15 22:03, 2年前 , 25F
要一個一個去理解每個高中生的特質成本低呢
08/15 22:03, 25F

08/15 22:03, 2年前 , 26F
還是同一份考卷給大家寫成本低 挑出成績高的容易呢
08/15 22:03, 26F

08/15 22:04, 2年前 , 27F
還是大家都寫同一份考卷 挑出成績高的容易呢
08/15 22:04, 27F
你說的其實沒錯,確實最終是成本問題 我這篇是把"還算有用"的部分提出來講而已 不代表我贊成現在的海量刷題文化 但就面試成本來看 就是我花 30min 能看出上面這些能力 20~30%,其他重要的能力另外找方式考 跟我花 5~10hr 去把上面這些能力都過濾到 70% 很多公司還是寧可選前者,畢竟資深工程師的時間也是很貴的 當然找錯人的成本怎麼算,就看公司的智慧了...

08/15 22:07, 2年前 , 28F
推好文
08/15 22:07, 28F

08/15 22:24, 2年前 , 29F
這篇也太強XD
08/15 22:24, 29F

08/15 22:51, 2年前 , 30F
08/15 22:51, 30F

08/15 22:54, 2年前 , 31F
大家有空就多刷題
08/15 22:54, 31F

08/15 23:08, 2年前 , 32F
考試在業界一直都是最簡單的做法,只是有些特質考試考
08/15 23:08, 32F

08/15 23:08, 2年前 , 33F
不出來就是。
08/15 23:08, 33F

08/15 23:58, 2年前 , 34F
刷起來!
08/15 23:58, 34F

08/16 00:01, 2年前 , 35F
同意這篇
08/16 00:01, 35F

08/16 00:24, 2年前 , 36F
不過台灣很多公司考刷題 薪水也不怎麼樣就是了
08/16 00:24, 36F

08/16 00:56, 2年前 , 37F
08/16 00:56, 37F

08/16 01:00, 2年前 , 38F
大聯盟的面試 中華職棒的薪水
08/16 01:00, 38F

08/16 01:34, 2年前 , 39F
這篇正解 從面試官的角度來看 就是這麼一回事
08/16 01:34, 39F

08/16 01:59, 2年前 , 40F
台廠很多只是學樣子 考官還不准你和他討論答案
08/16 01:59, 40F

08/16 02:05, 2年前 , 41F
有的還直接開leetcode讓你自己寫 笑死
08/16 02:05, 41F

08/16 02:14, 2年前 , 42F
台廠考leetcode 就跟我文章說那些公司問腦筋急轉彎依樣
08/16 02:14, 42F

08/16 06:49, 2年前 , 43F
08/16 06:49, 43F
※ 編輯: BBSealion (111.240.108.128 臺灣), 08/16/2021 09:58:48

08/16 10:45, 2年前 , 44F
面試考一堆,薪水也要跟上啊
08/16 10:45, 44F

08/16 10:52, 2年前 , 45F
08/16 10:52, 45F

08/16 11:26, 2年前 , 46F
11
08/16 11:26, 46F

08/16 11:54, 2年前 , 47F
推推 謝謝分享
08/16 11:54, 47F

08/16 13:59, 2年前 , 48F
08/16 13:59, 48F

08/16 16:47, 2年前 , 49F
但我想說實際工作的場合m需要一直看output修正結果的
08/16 16:47, 49F

08/16 16:48, 2年前 , 50F
場合意外地多呢. 因為很多時候用戶最初給的公式和預期
08/16 16:48, 50F

08/16 16:49, 2年前 , 51F
的結果會有出入. (有時是基於前一個系統的bug)
08/16 16:49, 51F

08/16 16:50, 2年前 , 52F
因為已交上去的報表不能改, 所以如何有效率的能data
08/16 16:50, 52F

08/16 16:51, 2年前 , 53F
map到用戶要求的結果在實際操作也同樣重要. 甚至關係到
08/16 16:51, 53F

08/16 16:52, 2年前 , 54F
專案能不能結尾.
08/16 16:52, 54F

08/16 17:21, 2年前 , 55F
有道理
08/16 17:21, 55F

08/16 18:48, 2年前 , 56F
公司沒時間好好挑人也能被你神話成這樣 你馬好~ lol
08/16 18:48, 56F

08/16 19:54, 2年前 , 57F
誰兩三行會印一次阿 但十行二十行檢查一次不好嗎?
08/16 19:54, 57F

08/16 20:10, 2年前 , 58F
高手一定都是寫完一個project 才print一次
08/16 20:10, 58F

08/16 21:44, 2年前 , 59F
unit test cases 寫完還需要print?
08/16 21:44, 59F

08/16 23:54, 2年前 , 60F
3現在是我的痛點 明知道有錯還是想讓編譯器幫我檢查
08/16 23:54, 60F

08/17 00:14, 2年前 , 61F
寫unit test 跟自己在寫的時候先確認 不衝突吧?
08/17 00:14, 61F

08/17 00:14, 2年前 , 62F
寫完一個project 才print一次 是反串????
08/17 00:14, 62F

08/17 01:15, 2年前 , 63F
08/17 01:15, 63F

08/17 17:20, 2年前 , 64F
推好文
08/17 17:20, 64F

08/19 14:32, 2年前 , 65F
刷題的重點不是在記解法吧 如果認真思考收穫其實不少
08/19 14:32, 65F

08/19 14:32, 2年前 , 66F
討論區的神人都能想到令人嘆為觀止的答案
08/19 14:32, 66F

08/19 14:33, 2年前 , 67F
但可惜的是大部分人只為了求職硬記解法
08/19 14:33, 67F
這點說的不錯 討論區很多大神的想法也是幫助開拓思維的寶庫 不過我自己推薦的是 學習通用的思維方式 > 學會精妙神奇的解法 太神的解法,甚至利用語言特性一行解那種,實用度反而更低 除非你是要打比賽衝名次省時間 否則老老實實的用基本功堆砌的解法,才是更有意義的學習

08/21 11:17, 2年前 , 68F
08/21 11:17, 68F
※ 編輯: BBSealion (111.240.125.113 臺灣), 08/21/2021 13:35:05
文章代碼(AID): #1X6FdIjE (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1X6FdIjE (Soft_Job)