首頁 > 新聞 > 智能 > 正文

刷完 400 道 LeetCode 題后,我“悟”到了五大經驗

2023-06-21 16:18:06來源:ZAKER科技  

【CSDN 編者按】作為一個代碼在線評測平臺,LeetCode 是許多程序員提高編程技能和算法能力的極佳場所,它包含了算法、數據庫、Shell、多線程等多種分類的題目,其中以算法題目為主。那么當一個人在 LeetCode 上狂刷 400 道題后,會得到什么新的感悟嗎?

原文鏈接:https://dev.to/durgesh4993/after-solving-400-leetcode-questions-here-are-five-things-that-i-have-learned-c60

未經允許,禁止轉載!


(資料圖片)

作者 | Durgesh kumar prajapati

譯者 | 明明如月

責編 | 夏萌

出品 | CSDN(ID:CSDNnews)

在我成功刷完了 LeetCode 上 400 道題之后,我獲得了一些寶貴的經驗,這些經驗對我在軟件開發方面的理解和方法產生了深遠的影響。本文將介紹我從中悟到的五點經驗。

LeetCode 這個網站對許多正在找工作的軟件開發人員來說并不陌生,它整理了來自谷歌、Facebook、微軟等頂尖公司的技術面試題目和題解。然而,讓人感到困惑的是,現在越來越多的小公司也開始大量采用關注數據結構和算法的面試題,這讓一些人產生了疑問,因為他們認為 "Leetcode 能力 " 并不能準確衡量他們的工作實力。

我贊同這個觀點,擅長 LeetCode 并不等同于你就是一個出色的開發者,而且在實際工作中,你可能永遠不需要反轉二叉樹。然而,通過練習 LeetCode,你會學到很多有價值的東西,這些都將在你的職業生涯中發揮重要的作用。

數據結構和算法的重要性

LeetCode 并不提供全面的數據結構和算法(DSA)課程,因此在使用這個平臺前,你需要對這個數據結構和算法有基礎的了解。我強烈建議你刷題之前要系統地學習數據結構和算法的基礎課程。然而,一旦你在 數據結構和算法(DSA)上打下了基礎,再去刷 LeetCode 就將如虎添翼,而且刷題也會反向加深你對數據結構和算法的理解。

值得一提的是,對于任何開發者來說,具備扎實的數據結構基礎都極為重要。最近國外就有一位大神玩家通過對算法進行小改進,成功讓游戲的加載時間縮短了 70%。在大規模使用的情況下,數據結構和算法的有效實現對于應用程序的性能和穩定性影響深遠。

總有人比你更懂 - 學無止境

我經常會對找到的解決方案和自己寫出的代碼進行對比,經常會為自己的解法感到自豪,但每當我瀏覽評論區時,可能會破受打擊。我看到過一些解決方案,它們甚至優于官方提供的答案。在使用 LeetCode 刷題過程中,我學到的很多內容都源于對他人代碼的仔細研究,并將他們的建議融入我的工作。

這種 " 總有更多可以學習 " 的觀念同樣適用于我的職業生涯。我很幸運,有經驗豐富的同事們愿意慷慨分享他們的知識,幫助我提升自己。這種向他人學習的方法讓我能盡可能多地吸取他們的專業知識。

看似微小的細節可能對你的工作產生深遠影響

在正式工作之前,代碼中的錯誤基本上不會產生任何實際的后果。那些只在特定情況下才會顯露的 bug 往往可以被忽視。但如果你已經工作,代碼將推到生產環境,如果你的產品用戶量龐大,任何一個哪怕只在一個極端情況下出現的 bug,都可能給大量用戶造成麻煩。

LeetCode 提供了對這種場景的極好訓練,因為每個問題都有數百個測試用例,這其中往往包含很多邊界用例。如果未能正確處理好邊界情況,代碼就會失敗。

最近,我需要處理一個缺乏適當約束的數據庫,其中許多行包含一些意料之外的數值。我非常感謝在 LeetCode 上積累的技能,因為這讓我能在這些問題影響生產環境之前就識別并解決它們。

勤奮勝于天賦

" 當天賦未得以施展時,勤奮勝于天賦。" 這句話出自 Tim Notke,對我個人來說,其影響深遠,尤其是在使用 LeetCode 刷題時。我曾遇到許多在處理中等難度問題時掙扎的天才開發者,因為他們對解決問題的方法和所需工具的經驗和理解不足。

起初,我在 LeetCode 上解決最簡單的問題也會感到困難。然而,在參加了幾門數據結構和算法課程并經過一段時間的練習后,我提升到了在合理時間內解決大多數中等難度,甚至一些難度較大的問題的水平。

為了更好地提高我的 Java 編程能力,我最近將 LeetCode 的解題語言從 Python 切換到 Java。盡管我每天在工作中都在使用 Java,但在解決這些問題時,我并不覺得自如。然而,我并沒有感到沮喪。我堅信,只要有足夠的實踐,我在 Java 的技巧就能達到和 Python 一樣的熟練程度。

戰略規劃在軟件開發中至關重要

規劃是軟件開發的核心環節,不容忽視。無論是在實際編程中還是參加正式面試中,都能深刻意識到編碼只是整個過程的一部分。有時我們往往會陷入這樣一個誤區:讀到問題提示后,立即進入編碼階段,這是一種常見的錯誤,很容易因為了解和思考地不夠清楚導致結果不盡人意。

軟件開發中充滿了模糊不清和意外的情況,編程面試試圖通過提供通常模糊或不完全的問題來模擬這個現象。與面試官溝通,尋求對任何不確定性或限制的明確解釋是非常重要的。建議在開始編寫代碼之前,先提出解決方案,評估其優點和局限性,只有當所有人都接受了提出的計劃,才開始編碼。

否則,如果解決方案不滿足時間和空間要求,將無法進行任何必要的更改。這一點同樣適用于專業環境,因為如果在沒有適當分析需求和考慮所有選項的情況下開始編碼,可能最終導致大規模重構。

結論

作為一個個體,我很幸運可以享受在 LeetCode 上學習和挑戰,甚至在找工作之外的時間里也能從中獲得樂趣。然而,我也理解并不是每個人都有同樣的看法,有些人可能會認為它是浪費時間,或者刷題得到的經驗在實際開發中毫無用武之地。

關鍵詞:

責任編輯:hnmd003

相關閱讀

相關閱讀

推薦閱讀