網際網路技術筆試總通不過?leetcode刷對了麼

2021-08-04 05:51:05 字數 3101 閱讀 5916

**:

leetcode,繞都繞不過去的程式設計師刷題神器

對所有求職技術崗位的童鞋來說,有這麼一樣東西恐怕做夢都會夢到【leetcode】,繞都繞不過去的程式設計師刷題神器。

「哲學是世界觀和方**的統一,是具體科學知識的概括與總結。」

今天,逆行君就帶你從世界觀和方**兩方面走進「leetcode」

什麼是leetcode

leetcode目前有450題(依稀記得去年還只有340多道啊),分為三個難度easy、medium、和hard。題目大致分為兩類:

1、基礎演算法的知識。

這些題裡面有大量的演算法題,解這些題都是有套路的,不是用遞迴(例如深度優先dfs,廣度優先bfs),就是要用動態規劃(dynamic programming),或是拆半查詢(binary search),或是回溯(back tracing),或是分治法(divide and conquer),還有大量的二叉樹,陣列、鍊錶、字串和hash表的操作。通過做這些題能讓你對這些最基礎的演算法的思路有非常紮實的了解和訓練。

2、程式設計題。比如:atoi,strstr,add two num,括號匹配,字串乘法,萬用字元匹配,檔案路徑簡化,text justification,反轉單詞等等,這些題的edge case,corner case有很多。這些題需要你想清楚了再做,只要你稍有疏忽,就會有幾個case讓你痛不欲生,而且一不小心就會讓你的**會寫得又臭又長,無法閱讀。通過做這些題,可以非常好的訓練你對各種情況的考慮,以及你對程式**組織的掌控(其實就是其中的狀態變數)。

為什麼一定是leetcode

leetcode是注重演算法的刷題工具,在考演算法的筆試面試中,碰見原題的概率可算是非常大:

@飛龍:面試向演算法,感覺沒有比leetcode更合適的訓練方法了。短期刷用處也很大,如果你對**有感覺的話,一些巧妙的解法你看一眼就會忘不了。

@anonymity:參加了一些公司的筆試,看到過leetcode上的原題或近似題。最後,從了某公司的美國總部軟體工程師的offer。學生們專案經驗少,只能考演算法。刷題很有用。    

@yuquan wang:

會leetcode,不一定能拿offer

不會leetcode,基本拿不了offer.

簡而言之,就是,leetcode到底要怎麼刷?

刷題的順序,可以按不同的難度等級練習,先把easy的題目練完,再高階medium,最後的hard就量力而為。廣度優先的練習會讓你快速掌握大部分題型,這樣應對突發的面試筆試需求也可以信心十足,不會出現還沒有練過的地方。

還不錯是不是。

不過按tag來刷,也可能會在慣性思維下,去想關於tag的演算法。比如138. copy list with random pointer(深拷貝鍊錶),tag:hash table。儘管是乙個hard的題目,但是已經提示hash表,怎麼樣都會想到建立對映關係(而且目前最好的解法並不是使用的hash table)。

最後提供一種綜合性思路,也就是在各個tag分類裡按不同的難度刷題,這樣就既有廣度也有深度了。

我們還想給你一些小技巧

01 善用github

不少人都會一邊做leetcode的題目一邊在github上repo,這樣不僅對自己的解題思路有所記錄,還能方便查詢。不少刷leetcode的高手,他們的答案也是寫在自己的github上,你也可以通過github成功找到他們。

02 善用leetcode的討論區

同一道題的解法往往不止一種,甚至思路和方式都會完全不同,例如這位同學所說:「邊刷邊感嘆天外有天,比如有道很簡單的乙個int array只有乙個數隻出現了一次,其他數都是出現了兩次,找出只出現一次的數。看到討論區的答案是把所有element xor起來,頓時膜拜」 所以一般很簡單的題,也有必要看看討論區的優秀答案,畢竟提公升自己的演算法水平才是正義目標啊。

重點,90%同學都不知道的討論區在的正確開啟方式:

從每道題目下方的discuss按鈕裡點進去,才是每道題對應的討論!

03 徒手寫**的能力

很多同學在leetcode上編得風生水起,但在筆試面試中遇到面試官拿出一張a4白紙,可能就懵逼了,改改塗塗半天寫不完整。這個時候徒手寫**的能力就尤為突出了,無論你是先手寫完**再敲到網頁上,還是**ac(通過)後再默寫一遍,徒手**能力都是值得訓練的,這也是你的整體思維和架構能力的體現。

04 善用碎片時間

有很多同學由於實習或者其他原因沒有辦法拿出大段時間來刷leetcode,這裡為實習/工作/研究僧提供乙個「一天一題時間表」:

1、早上起來出門前,迅速看一道題。

2.在擁擠的交通工具上,超脫自己,「冥想」題目。

3. 題目so easy,手機提交。

4. 短時不能通關?那就一直放在腦子裡面想,到了公司/實驗室,基本答案就可以動動手寫在電腦上了。

5. 如前文所說,將思路和解決方案放到github上。

6. 晚上睡覺前,反思一下是不是最優解法,有時間的話看看discuss,沒時間,把自己的解法理順了,涉及的知識點再過一遍腦子。

05  菜鳥小白專用技巧欄目

對於基礎不紮實的菜鳥選手,逆行君並不推薦按照前面提示的難度/tag進行刷題操作,有可能受思維暗示的影響不說,效率也會比較低下。

第一次刷,首先攻克array,string,tree,linkedlist,math這五個tag,好處在於可以迅速的在規避思維暗示的同時,迅速鞏固資料結構的知識,或許還能掌握某種資料結構的小技巧。

每個tag內部就按照easy-medium-hard的順序做,這樣最開始一天刷10道easy,後面熟了這個資料結構一天也能刷5道難題,不會在初期被挫的刷不下去,培養一種刷題的「爽」感。

這個順序完成之後,你已經完成了25%以上的進度條了,之後翻轉順序,從hard向easy進行刷題,開始會有點小虐,但後面就會效率奇高。刷完第一遍之後,就可以愉快的進行全tag刷題round 2了~

免費題解在這裡

網際網路技術DIY LEARNING A

python基礎語法 資料結構 numpy pandas 展示資料 matplotlib 機器學習方法 tcfs 去中性化?分布式檔案系統 堡壘 大型根節點伺服器?可監控 tensorflow gpu nosql mongdb 主從資料庫多節點備份,壞時自動頂上 臨時master 好時自動恢復 原先...

2023年網際網路技術總結

2020年年初infoq發布2020 年值得關注的十大技術趨勢,文中提到雲計算 雲原生技術的發展 2019 年,還是有很多人會對 雲原生 充滿了疑惑甚至誤解。這想必也是為何我們一直能夠在不同場合聽到關於雲原生的各種不同定義的原因所在。有人說,雲原生就是 kubernetes 和容器 也有人說,雲原生...

中國網際網路技術聯盟推出國內首個「網際網路 」資訊門戶

ita1024 該門戶 將以內容產品化的理念打造,首次開闢了 網際網路 行業案例 業界趨勢和國家政策解讀 潛龍報道和融資報道 網際網路 高階論壇與峰會報名 網際網路 成熟度測評與分析報告這五大專業板塊。通過線上開啟視野 線下交流討論 探索建設自我檢驗,層層推進中國企業對 網際網路 的深刻理解。在網際...