PTT推薦

Re: [討論] 我就問,刷題強者的實務表現?

看板Soft_Job標題Re: [討論] 我就問,刷題強者的實務表現?作者
fshfsh
(魚~*)
時間推噓27 推:31 噓:4 →:100

※ 引述《goodson (blahblah)》之銘言:
: 最近一次面到刷題的公司...感覺已經走火入魔了,
: 考試考到難的程度,比 Google 還難
: 去年就面過一次,當時考題 Easy ~ Medium
: 隔了一年還在找人,人資看我資歷主動邀我面試,
: 卻考得更難...有真心要找可以解決問題的人嗎?
: 都沒有照照鏡子,貴司的薪水可以比 G 還高嗎?
: 我考得過 Hard,還需要領你這 120 萬左右年薪?
: 我近十年經驗,可以拿出數十萬下載量
: 還在線的作品不被重視,
: 卻考 Hard 難度的考題來羞辱人浪費我的時間,
: 我看了考題十分鐘就 submit 不爽寫了。
: 當然這樣的狀況不只一間公司,
: 我就不指名道姓了
: 大概是被刷題進去的人佔到主管位,
: 所以也就信刷題這一套。
: 但我的疑問是,刷題進去的人,
: 到底產出如何? 只會寫那些數學題型類似的演算法,
: 對於實作沒有足夠經驗,到底可以做出什麼啊?
: 有沒有人跟刷題派合作過? 真的刷題高分等於強嗎?

我親身經驗,刷題非常有用

347 top k frequent elements
23 merge k sorted lists
56 merge intervals

一些基本的工具如 recursion , tree , map , deque ,比較稍微難的像line sweep , biwise

可以說,如果我沒碰過這些題目和工具,那麼我之前做的東西絕對難產,為什麼?

只會array list的人,面對複合型問題時,要怎麼寫高效能程式?

我曾經看過有人在工作上使用四重巢狀迴圈,要不是那時資料量還非常小,不然我看某時某刻一定會有人該 為什麼系統卡住了,不會動也沒報錯欸,console也沒印東西是怎樣T^T



我不懂為什麼你要因為你解不出來,就否定掉刷題整件事欸

這就好像一個魯蛇整天怪東怪西,都是they的錯

阿你是十年經驗強者,是只有幾間公司的面試機會嗎?

我前同事現在也在挑公司,人家資策會出來的,到現在也才工作三年,怎麼現在也是年薪120起跳在挑

(附帶一提,我也算是資策會出來的,要說一句昨日我以資策會為榮,今日我以資策會為恥)

那我真的蠻好奇你的十年工作經驗到底都在幹嘛,怎麼跟別人三年差不多

我另一個前同事,在公司待了5年啊,寫code能力比我資策會時候一些同學還差,有時候跟他共事都會腦袋充血,寫code又慢又一堆漏洞,最後我選擇自己寫好偷偷蓋過去

年資真的在這一行不代表什麼,難道Google 微軟 Apple那些超級大廠都是老人嗎?人家的團隊去看照片都年輕的很

對了,再補充你一句,刷題不是考「數學模型」,是時間複雜度和空間複雜度,除非你是在寫DP

--

昨日我以資策會為榮,今日我以資策會為恥


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.252.168 (臺灣)
PTT 網址
※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 07:58:23

Firstshadow10/06 07:59好= =

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 08:18:31

Csir10/06 08:53幸好我while迴圈每次都不會終止

leolarrel10/06 09:35西哥你...

stupid031910/06 09:39推簽名

chatnoir10/06 09:41為什麼今日以資策會為恥?

leolarrel10/06 09:48這個資策會是指轉職仔上課的那個資策會嗎?

Hsins10/06 09:53資策會不好嗎?可以一邊工讀博士,還行吧><

littlebroken10/06 09:56應該是在講最近那件事 高XX

littlebroken10/06 09:57討論就跑題了 還是繼續戰刷題吧

hobnob10/06 10:13推這篇,我之前真的有一個需求用到了binary search 找inde

hobnob10/06 10:13x,當時的需求跟題目一摸一樣

lchcoding10/06 10:30西哥你財富自由了,用軟體養生...?

ntpuisbest10/06 11:18想問一下,一般在使用linkedlist我都是Call library,

ntpuisbest10/06 11:18但是leetcode那題merge 2 sorted lists

ntpuisbest10/06 11:18是不是就要自己去設node的class這樣才能在實務上用那

ntpuisbest10/06 11:18題的解法?

ntpuisbest10/06 11:19另外想問什麼場景你會需要去merge two sorted list

先抱歉一下,我其實是要說 merge k sorted list

https://leetcode.com/problems/merge-k-sorted-lists/

第1個問題,我不太確定你是用什麼語言 我自己是用Java,那麼並不是我要自己設node class,而是你的執行環境本身就已經存在ListNode class了 題目也只允許你回傳ListNode 類別,自然你不能用Java內建的LinkedList 第2個問題,我假設一個情境 有家雞排店會從k家廠商進不同數量的雞排,雞排我們可以當作只有保存期限一種屬性 class 雞排 { Date expireDate; } 就算是同一家廠商來的雞排,保存期限也不一定一樣 當有顧客來的時候,雞排店老闆固定會用「保存期限最接近過期的雞排」,並且「已過期的雞排」不使用 現在請寫一個程式來符合這個需求。 PS:每家廠商送來的雞排是用保存期限來排序的,你可以當成是List<雞排>。 那麼你可能會說,我創一個ArrayList,然後把所有商店的所有雞排都放到這個List裡面去,再用保存期限去排序 排序是O(nlogn),n是雞排的總數,每次取出(倒序排然後每次都從最後一位取)是O(1) 這樣做確實也可以,但因為雞排本身就排好了 我可以創一個PiorityQueue,然後把k家廠商的雞排的第一家作為代表,放到PQ中 這麼一來,建立PQ時間複雜度就縮小成O(klogk),每次取出為O(logk),取完後再把下一份雞排加回去O(logk) 另外,如果雞排沒有用完,由於PQ的特性,我共不會做完整的排序,而是取到哪排到哪 比方說我有3家廠商好了,每家廠商進1000000份雞排,也就是k = 3,n = 3000000 如果你用第一種方法,那一定會排完這3000000雞排,再一份一份拿給顧客 第二種方法,就相當於我這3家廠區放入比較池,拿最接近過期的給他,再把那家的下一片雞排放到比較池

Hsins10/06 11:23樓上你這問題要先看是哪個語言的哪個函數庫,在實務上能不

Hsins10/06 11:23能那樣用,要看那個函式庫裡怎麼去實作 Linked List 和他

Hsins10/06 11:23相關 API 的。

Hsins10/06 11:26以 Java 的 java.util.LinkedList 來說,去檢查他實作的程

Hsins10/06 11:26式碼,可以知道跟你所說的自己設 node 的 class 也沒太大的

Hsins10/06 11:26差別…

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 12:46:26

alihue10/06 12:19開發搜尋引擎就用得到 merge two sorted list 了

peter9810/06 12:22merge two sorted list的應用明明很廣 別說工作上了 大

peter9810/06 12:22學課本db課程也有教 DB的external sort就是merge multip

peter9810/06 12:22le sorted listsarrays啊

peter9810/06 12:22Lists/arrays

peter9810/06 12:25當資料量很大 沒有辨法一次載入memory時 就可以考慮exte

peter9810/06 12:25rnal sort 而另一種應用則是可以跟map reduce 結合 加速

peter9810/06 12:25大數據處理 這就是上面說的搜尋引擎 或者recommendation

peter9810/06 12:25 system也用的到

peter9810/06 12:26隨便說都能有應用 我是不知道反對刷題的為什麼說沒用XD

peter9810/06 12:31搜索引擎還可以往trie延伸 根本說不完

Hsins10/06 12:34經驗告訴我不少人連 Trie 是什麼都不知道, 可能實務上不需

Hsins10/06 12:34要吧...

ntpuisbest10/06 12:35我沒說沒用,我自己目前也在刷題,只是目前我的工作沒

ntpuisbest10/06 12:35用到,所以才會想問大家場景是什麼

ntpuisbest10/06 12:38回h大我是用java沒錯,我就在想lc的題目大部分input

ntpuisbest10/06 12:38都是head但是java的linkedlist(我記得他好像是double

ntpuisbest10/06 12:38 linkedlist沒錯),是不是就是因為他封好了,所以還是

ntpuisbest10/06 12:38自己寫node比較適合,不然我也不知道他封好的狀況下

ntpuisbest10/06 12:38怎麼去做斷開link再接上的動作

API沒有給你操作Node,你只能自己實作

peter9810/06 12:43喔 原來是認真發問XD 好的 那我會認真回你 自己寫node比

peter9810/06 12:43較好 練leetcode就是在練功 自己弄node才知道什麼情況用

peter9810/06 12:43dummy head可以省多事

ntpuisbest10/06 12:46像是leetcode有些design特殊的資料結構,lru我還理解

ntpuisbest10/06 12:46有用,而且還可以去call linkedhashmap但是像是min st

ntpuisbest10/06 12:46ack max stack這種,各位前輩有用到過嗎?

基本上,有些題目出出來真的就是給你練功用的 比方說LRU,我記得Java某一個API就有內建的功能了 所以工作上確實是不會還要自己寫(俗稱造輪子) 但如果你能寫出來,你會對List指標操作有更深一層瞭解 重點就是工作上遇到的東西不會永遠都用基本API來解 如果你對這些基本操作理解很深,你就有辦法自己寫一個針對場景客製化的資結或演算法 這也是我從不覺得刷題無用的原因XDD

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 12:57:13

peter9810/06 12:48這樣對你寫tree也有幫助 tree實務上用很廣哦 tree相關演

peter9810/06 12:48算法還有DFS/BFS也很廣 各個環環相扣 你終究要自己用nod

peter9810/06 12:48e寫tree的 所以先用node寫list吧

嗯嗯 100%同意 Tree真的很好用 DFS/BFS都有用到

alihue10/06 12:48其實搜尋也不是典型的 trie 了,而是為了省記憶體改用

alihue10/06 12:48FST ,先用 FST 找到詞的 index 位置再去找詞。

alihue10/06 12:48那些 leetcode 的資料結構頂多算是常識,實務上會有更多

alihue10/06 12:48考量如記憶體/或是在 disk 的 index 結構、

alihue10/06 12:48是否 immutable 、cpu overhead等。實務上需要的不是你是

alihue10/06 12:48否馬上知道要用什麼,而是你能不能做好的 research 找到

alihue10/06 12:48最好的演算法

Hsins10/06 12:50那些知識是在 research 的同時, 用來判斷適用性跟文章有沒

Hsins10/06 12:50唬爛的…我想 n 想問的是實務上會是要自己寫 node 還是怎樣

Hsins10/06 12:52,那個要從實務面上評估需不需要調整;如果你想要直接訪問

Hsins10/06 12:53操作封裝好的 LinkedList 上 Node 的話,是不建議的,因為

peter9810/06 12:53實務上我是都用lib list(挖鼻孔)

ntpuisbest10/06 12:54tree的話我知道mysql底層是b+ tree,然後霍夫曼編碼也

ntpuisbest10/06 12:54跟二元樹有關,另外inordertravesal也可以順序印出資

ntpuisbest10/06 12:54料,還有什麼場景適合自己刻tree嗎?以前有個物流前

ntpuisbest10/06 12:54輩說過他用了一堆tree,但他說他不想講太多,我google

ntpuisbest10/06 12:54 搜尋 binary tree real world example也沒發現什麼,

ntpuisbest10/06 12:54再問問各位前輩了

Hsins10/06 12:55他是 private 的,或許可以透過 reflect 魔改(?),但這

Hsins10/06 12:55樣就會打破他的權限,不太安全

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 13:00:54

ntpuisbest10/06 12:59感謝原Po回答,謝謝

alihue10/06 13:00實務上如果你越接近開發 infra 才會更容易開發演算法,但

alihue10/06 13:00缺很少,別練了一堆結果去投 web api 的缺

笑死,不過現在很多前端都要問演算法資結了

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 13:02:23

ntpuisbest10/06 13:01我發現原Po好像就是我提到的倉儲物流前輩,不好意思@@

你誤會了吧,我不認識你啊XDD

Hsins10/06 13:03我是覺得前端也該問啦,有些網站一開起來風扇就在那轉不停

Hsins10/06 13:03,開發者工具打開一看,做個排序寫了好幾層迴圈、不然就是

Hsins10/06 13:04一直打 API 死循環的…

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 13:07:05

ntpuisbest10/06 13:09https://i.imgur.com/Vimsh3h.jpg

圖 我就問,刷題強者的實務表現?

lovdkkkk10/06 16:18覺得用 ArrayList 也一樣,只是要多維護 head index

lovdkkkk10/06 16:18還比 LinkedList 少存幾百萬個 next pointer

lovdkkkk10/06 16:20(指上面雞排例子)

你講的沒錯,但前提是傳入的參數 以Leetcode來說,傳入的參數是不計入空間複雜度運算的,只計算「額外」的空間使用 (其實想想也很合理,要是題目傳參都直接 memory leak,那題目本身就不成立了) 那麼端看你參數傳入的型態,看你是像題目一樣傳入3個雞排List來排序,每個List各100萬雞排 還是照你說的,傳入一個300萬元素的ArrayList,以及傳入k個index 如果是後者,一樣也可以用PriorityQueue的方式來處理 差別就在PQ存入改成index指向ArrayList,因為ArrayList用index取值時間複雜度O(1),所以沒有問題 照理說,你這樣處理確實少了pointer 但我很難想像真實場景會把k個雞排廠排成一個ArrayList來傳 畢竟假設雞排廠要升級成一個物件,上面要加屬性了,這個結構會完全失效 所以我可能會先去和傳給我的人溝通叫他麥鬧XDD

lovdkkkk10/06 16:40不過雞排攤實體空間限制應該無法一次放幾百萬片雞排還是

lovdkkkk10/06 16:40得拆成N萬個冷凍櫃

嗯。。Leetcode還有題目是小朋友分糖果,小朋友的數量限制最大是一億XDD

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/06/2022 17:05:26

Ekmund10/06 17:28tree的話 看過用heap去做timer

Ekmund10/06 17:29每個事件設到期時間 根據時間sort

Ekmund10/06 17:29底下掛一堆事件這樣

superpandal10/06 18:29我只有一開始工作才一直用ArrayList 而且也稍微會考

superpandal10/06 18:29慮應用情境 除非一直以來都是使用別人的lib/框架 否

superpandal10/06 18:30則要比較好的完成事情肯定會愈來愈深入

superpandal10/06 18:33這些東西不一定刷題才會有 當然你說提早知道如何解刷

superpandal10/06 18:34題是有幫助的 但多半都是應用不到 而且應用場景沒連

superpandal10/06 18:35結到你也不一定想得出來可以用某某方式解

superpandal10/06 18:37算是蠻認同實踐才是檢驗真理的唯一標準

superpandal10/06 18:38而且很多內部功能都可以自己實現

s25g5d410/06 20:23推前端考資結,之前寫資料視覺化用 DFS 解環,然後副產物

s25g5d410/06 20:23(鄰接矩陣)交給下一 phase 算排位,還好小時候刷過 UVa

lovdkkkk10/06 20:31一億...應該分散在多個城市,變發糖員旅行問題 (無誤)

ryan200110/06 20:50說實在 這種二元辯論真的沒什麼意義

dapple10/06 20:59資策會付錢讓你去美國念博士回來還不用綁約可以直接跳槽

dapple10/06 20:59不是很棒嗎?

s25g5d410/06 21:21資策會本來定位不就這樣?

oopFoo10/06 21:37sort 3百萬?現在電腦 sort 1億筆資料也在瞬間而已。

oopFoo10/06 21:38有時笨方法不笨因為電腦太快了。

嗯嗯 好有道理 看來各大院校的資工系可以刪掉演算法和資結的課程了 反正電腦越來越快,我寫10層巢狀迴圈總能解決問題吧~ 看來我只要會寫迴圈和if就能進Google了呢

peter9810/06 22:41sort 1億筆資料也在瞬間阿 XD 唬爛不打草稿 你的電腦一

peter9810/06 22:43整套/整批下來要多少錢 才能在不用特殊演算法的情況下

peter9810/06 22:43瞬間sort完1億筆data?

viper970910/07 00:10感謝分享

※ 編輯: fshfsh (123.193.252.168 臺灣), 10/07/2022 07:18:17

WaterLengend10/07 10:40那個ID就不用跟他認真了

avril995010/07 11:46刷題的至少會 BFS/DFS,實務上很多東西都要碰到 tree

avril995010/07 11:46 然後一堆天才在那邊亂寫ㄏㄏ

lazarus112110/07 12:48以實務來看,雞排在放入時排序就好了吧

lazarus112110/07 12:49把off line時間考慮進去,就不用太高深的演算法了

hank5566310/07 13:54一億筆資料在用n^2排序的做法下要跑一整年欸

Hsins10/07 14:21量子電腦啦><

daddy2910/07 14:57看工作需求程度 有些dp寫起來就是簡單方便快 分支少

daddy2910/07 14:57前提是你得先懂這個算法

DDR67810/07 16:59就推以資策會為恥這句

viper970910/07 17:36量子電腦XDDD

k79897686910/07 17:47發哥也有在研究量子運算 有興趣的博士可以去應徵

k79897686910/07 17:48而且不用刷題

jerry84062210/07 18:50刷題很有趣欸 現在看到程式碼都會想降低複雜度

ku39999910/08 00:53前端很多連雙for loop寫不出來 或Map/Set不會用 都算了

ku39999910/08 00:54fizzbuzz都寫錯

ku39999910/08 00:54這種的就不要說考這個有什麼用了吧...

LincolnBoy10/08 00:56一億筆資料只要瞬間 太猛了 我想要那樣的電腦

ADEMAIN10/08 15:47量子電腦XD

abc2108699910/09 01:47團隊看照片年輕的很?我在電梯遇到的FTE怎麼看起來

abc2108699910/09 01:47都4、50歲

zo4j410/15 09:11資策會出來真的強的能用的少數,不要誤導大家...

asonge000010/31 20:36重點不在於你在工作中會不會開發演算法 而是在於程式

asonge000010/31 20:36語言都幫你包裝好的API 你有沒有這個知識判斷使用哪

asonge000010/31 20:36樣的資料結構跟算法對效能比較好 如果你連這些基礎知

asonge000010/31 20:36識都不知道要怎麼樣優化效能?