想提高演算法能力是做網上面試題好還是刷ACM題目好?
12-29
想提高自己的演算法能力,現在我有兩個想法,一個是做網上面試題,一個是做ACM題目。如果選前者的話是不是早了點,如果選後者會不會性價比比較低?請教大家,哪個方案更好一些?謝謝!
我的建議是找本經典的演算法書:演算法導論 (豆瓣),跟著上面一個章節一個章節的看,當然也許會有人說,這個太過於理論,不適用於新手。但是我想說的是我們往往會低估自己的實力。
如果你覺得第一本書太過於複雜了,可以參考Algorithm Tutorials。這是當年TopCoder為了教學新手,專門花錢請各位神牛寫的一些入門演算法教程。當然這又給你介紹了一個練習平台,至於如果在上面練習可以參照:TopCoder: How do you get started on TopCoder? 其實求職考演算法只是為了檢驗你的思維能力,僅此而己。忘掉那些功利性的思想,just enjoy algorithm至於你說的到底做acm題還是面試題,我覺得只要利於你思維提高,whatever。
ps:兩個面試題很好的網站:LeetCode,Programming Interview Questions 噢對了,如果你看了演算法導論,然後發現我對動態規劃很感興趣的話,那你可以看一看:Dynamic Programming Archives Tag: GeeksforGeeks- 首先你提高演算法能力的目的是什麼?如果是為了通過面試時候方便點,做點題就好,別人提到的leetcode之類的已經足夠。ICPC題目沒有必要研究,說的不好聽些,很多題目出了只是為競賽而競賽
- 面試中考察演算法,最終是要考察你的思維能力:是否嚴謹,是否有解決未知問題的能力,等等。不管你最後選擇怎樣提高,請一定不要忘了這個初衷。
- 沒有必要去看《演算法導論》。更沒有必要什麼一章一章去看,IT公司 99%以上的人,不需要知道什麼是Fibonacci Heap。
- 推薦演算法概論 (豆瓣) , 我不清楚中文版的翻譯怎麼樣,但是英文版讀過,寫得非常好。
- 讀演算法教科書的目的是培養以下2個能力:怎麼從一個抽象數學問題中找到該問題性質,並巧妙利用性質解決問題;構造的演算法是否在假定的輸入條件下,都正確運行,最差的情況的定量分析。
謝邀。就我個人遇到過的應屆生情況來看,大部分應聘者基本功都比較成問題,要想提高演算法能力,先夯實基本功才是正道。基本功足夠紮實之後,無論你是做面試提還是刷 ACM 題,或者看演算法導論,都能起到效果。說實話絕大部分面試題對演算法的要求不高,不要太過於高估演算法對於面試的作用。
15 年離現在時間還挺長的,應該準備的時間很充分。
.
稍微厲害的人,一年的時間,區域賽不打鐵是可以的。
.
話說 ACM 和面試題是有一些差別的,前者要在 5 小時內做出 10 題左右,題目難度不一(可能有的大牛覺得都差不多吧)。而面試題一般在半小時到 45 分鐘就可以搞定,但面試前後有很多扯淡的內容可以看出來你是不是「只參加過 ACM」而沒有太多的項目經驗。
.
拿一個栗子說,比如排序 100 萬個數字,你用什麼方法?一般說快排可以放你過關。但是他隨後可能就問,假設數字很多,比內存的空間還大,你怎麼辦?這就不是 ACM 的經歷能讓你解決的問題了。
.
我覺得 ACM 和實際工作不算是矛盾的東西,喜歡的話刷一點題也可以,@vczh 大牛言重了。而 LeetCode 一般是面試前練手用用,難度一般比 ACM 題目低。
.
此外建議好好幫導師幹活,面試的時候扯淡估計有用。
一旦開始做ACM題目,忘乎所以之後,你就喪失了學習如何把現實問題建模為演算法問題的機會了。這樣學出來之後屁用都沒有。就跟你數學很牛逼,積分可以心算,結果給你一道物理題你連方程都寫不出來一樣。
最近coursera有一門演算法課,可以跟著上一下,挺好的
求職面試題集-九度Online Judge,用代碼記錄你的成長之路!兼顧的好選擇
ACM 必須的 我們賽隊堅持到regional的 都很厲害了
推薦閱讀:
※去面試一定要在網上先投簡歷嗎?可不可以提前主動打電話預約面試?
※說說你所遇到的那些奇葩面試官?
※G30早稻田本科面試會要求在面試中做題嗎?
※面試官問你什麼星座,愛好 ,是不是代表已經沒有問題,對面試者不感興趣,但是為了安慰面試者而繼續提問?
※如何估計全紐約有多少窗戶?有哪些思路?