若要提升你現有或新程式語言的技能,參與程式碼挑戰是個絕佳途徑。
多年來,許多平台與網站應運而生,為各層級的程式設計者提供激動人心的挑戰。 無論是想嘗試學習一門新語言,還是希望在高壓下檢驗自己的能力,程式碼挑戰都能帶來樂趣與考驗。
除了顯而易見的好處,面對這些挑戰還能提升問題解決能力、深入理解語言,並享受學習新演算法的樂趣。 眾所周知,演算法在招聘流程中十分常見,因此在這一領域佔據優勢能助你一臂之力。
本文將介紹一些頂尖的程式碼挑戰網站和平台。 其中有些對初學者友好,而另一些則更適合經驗豐富的程式設計者。 我們還加入了一些適合兒童學習程式設計的資源,因為兒童程式設計也變得相當流行。
Edabit
學習新事物最簡單的方法是持續地與之互動,程式設計亦是如此。 除非將書本知識付諸實踐,否則光是閱讀再多的好書也無法增加你的實戰能力。
Edabit 是一個成熟的平台,提供短小精悍的程式碼挑戰,可以快速提升你的程式設計能力。
HackerRank
HackerRank 是一家新創公司,專注於為個人和組織提供程式碼挑戰。 通常,根據挑戰內容,你會收到需要完成的項目說明,至於如何完成則取決於你自己。
目前,開發者可以使用 Java、Python、JavaScript、PHP、C++ 和 SQL 來解決平台上的挑戰。
每次提交解決方案後,平台會根據準確性等因素自動評分。 之後,你將進入全球排行榜,並同時獲得成就(徽章)。 此外,平台還會舉辦「衝刺」賽事。
密码之家撰写了一篇精彩文章,描绘了 HackerRank 中的前 50 個挑戰。 如果你對此感興趣,這篇文章值得一讀,它包含了大量的示例和材料。
Coderbyte
Coderbyte 是一款基於現代程式設計實踐的獨特應用程式。 其核心功能是程式碼挑戰,旨在幫助全球數百萬人成為更優秀的開發者。 與市面上其他同類應用程式不同,Coderbyte 致力於協助人們解決業界層面的問題。
使用該平台的好處之一是它與許多頂尖軟體品牌合作,例如 Google、LogMeIn、HBO、PWC 等等。 如果你期望能在這些公司找到一份工作,那麼可以放心,Coderbyte 可以提供你所需的挑戰來檢驗你的技能。
註冊後,你可以從挑戰和演算法中進行選擇。 有數十萬個用戶提交的解決方案,可以幫助你更全面地理解特定的程式設計主題。
組織也可以註冊並管理他們的篩選流程。 成為註冊組織後,你可以使用其他工具,這些工具可以協助你獨立篩選每位開發者。
Codewars
持續程式設計實踐的美妙之處在於,你總能想到解決問題的新方法。Codewars 正是利用這個概念。 該平台以「kata」為基礎,提供多種語言的練習與挑戰。
完成這些練習後,你可以獲得分數,還可以查看其他程式設計師如何解決特定問題。
如果你打算練習一門新語言,那麼 Codewars 是一個值得收藏的網站。
以下是一些支援的語言:
- Clojure
- Rust
- Swift
- Python
- Haskell
- Shell
- JavaScript
- PHP
- Kotlin
- Scala
許多其他語言正處於 BETA 測試階段,可以使用但可能存在潛在瓶頸。
從根本上說,Edabit 希望提供一個平台,彌合初學者和資深程式設計師之間的差距。 你可以查看路線圖以查看完整的功能列表。
CodinGame
遊戲作為學習平台並非新概念,但現在這個領域似乎有更多參與者。 CodinGame 只是众多透過遊戲化體驗提供程式設計挑戰的平台之一。 你不是在編寫簡單的程式碼,而是在建構遊戲環境。 你編寫的所有程式碼都在某種程度上影響著「遊戲」的進展。
事後來看,像 CodinGame 這樣的平台可以幫助技術開發者理解因果關係,以及某些決策如何導致特定結果。
這不僅僅是一個讓你隨意編寫 JavaScript 程式碼的廉價網站。 CodinGame 涉及一些頂級演算法,並擁有無數世界級的程式設計師,他們協助為新舊開發者提供解決方案。
HackerEarth
HackerEarth 是一個著名的平台,會舉辦駭客松、程式碼挑戰和各種競賽。
你也可以在這裡了解一些關於現代公司招聘流程的有趣知識。 儘管不是全部,但 HackerEarth 資料庫中發現的大量挑戰,最終可能會在你未來的任何工作面試中被問到。
這怎麼可能呢? 主要是因為 HackerEarth 的真正業務是為頂尖科技公司提供招聘解決方案。 如果你想被認為是最棒的,你必須與最棒的人一起競爭。 對你來說,這是一個雙贏的局面。
Programmr
Programmr 是一個適用於所有層級開發者的動態數位實驗室。 透過 Programmr,你可以直接在瀏覽器中編寫、編譯程式碼並執行專案。 該平台支援當今使用的所有主要語言。 無論你想執行的是行動應用程式還是資料庫結構,Programmr 都有能力支援。
在挑戰方面,Programmr 為 Java、C++、PHP、C#、Ruby、Python 和 iOS 提供了一系列客製化挑戰。 每組挑戰包含 100 多個挑戰,你可以根據受歡迎程度(基於用戶投票)和其他因素來排序。
這個平台與其他平台的不同之處在於,你可以利用你的新體驗獲得即時回饋,無論是特定語言的證書,還是僅來自現有用戶的回饋。
The Coding Train
Daniel Shiffman 是一位白手起家的個人,他創造並製作了關於程式設計的優秀教材。 The Coding Train 是 Daniel 的個人 YouTube 平台,他在那裡分享了解決程式設計相關問題的激動人心且有用的影片。
然而,他的方法相當有趣。 他沒有將所有內容託管在他的網站上,而是使用 YouTube 作為挑戰的平台,並將他的網站作為解決方案的平台。
請注意,他的挑戰基於 P5.js 和 Processing,這兩種是藝術和平面設計中常用的解決方案。
Wolfram 挑戰
Wolfram 是世界上最知名的電腦科學公司之一。 他們的平台因其可能性而令許多人驚嘆不已。
雖然我們的重點不是 Wolfram Alpha,但在 2018 年初他們推出了一個新的領域 Wolfram 挑戰。
這裡有許多可以想像的挑戰範例,包括尋找「成本最低的解決方案」或「最合適的解決方案」。 它類似於典型的機器學習任務:尋找一個在分類某個測試集時表現最佳的函數(例如基於神經網路)等。
與本評論中的其他網站/平台相比,Wolfram 涵蓋了廣泛的挑戰領域,而不僅僅是程式碼。 總而言之,如果你想提升你的批判性思考能力,這將是個理想的平台!
LeetCode
LeetCode 的意思是,它不僅僅是一個託管隨機挑戰的網站。 相反,LeetCode 是為未來做好準備的一種方式。
該平台提供現代化的學習方式、複雜的挑戰和出色的儀表板來完成所有工作。
此外,還有文章、討論區和其他社群功能,以鼓勵無縫體驗。 許多 LeetCode 用戶已經「畢業」到 Uber、Amazon、Stripe 等公司工作。
Codeforces
Codeforces 適合所有鐵桿和專注的程式設計師。 想想軟體工程師、滲透測試人員、人工智慧愛好者和機器學習愛好者! 作為一個資深程式設計師的平台,Codeforces 以其聲名狼藉的排行榜和競爭精神而聞名。
入門比你想像的要容易。
Exercism
很高興看到許多程式碼挑戰平台背後的遠大抱負。
Exercism 也不例外。 創辦人 Katrina Owen 表示,她的目標是「協助人們透過 Exercism 學習足夠的程式設計知識,以便他們能在發展領域找到工作。」
在撰寫本文時,平台上有 48 種語言的 2,600 多個練習,而且全部免費! 你是否想過學習 Kotlin,或者也許 在 Vim 中變得更有技巧? 現在是透過有趣的挑戰學習新技能的好機會!
Frontend Mentor
儘管對你們中的一些人來說可能令人驚訝,但前端開發中仍然存在程式碼!
這裡的挑戰主要由用戶共同解決。 例如,有人可能會發佈一個「材質設計卡」並挑戰你讓它更好,或者創建一個類似的變體。
結果是你有能力獲得一些創新的想法。 能夠即時看到其他人如何解決類似問題是很棒的。 你可以隨時在自己的專案中重複使用其他人提交的程式碼。
Flexbox Froggy
談到前端,你對 Flexbox 的理解如何? 溫習一下 Flexbox 的使用和對齊方式,讓自己保持敏銳和準確總是不錯的!
Flexbox Froggy 是一款有趣的小遊戲,帶你完成 28 個不同 Flexbox 使用和對齊的步驟。 也許它不是一個挑戰,而是一個提醒,但你能在不看答案的情況下完成所有關卡嗎?
Grid Garden 是一款非常相似的遊戲; 唯一的區別是你使用的是 Grid 函數而不是 Flex。
PyBites
Python 被廣泛認為是最容易學習的語言。 它通常被推薦給新手程式設計師,讓他們先去探索。 但是,不要因此而低估 Python 的能力。
如今,許多機器學習和數據集生成都專門使用 Python 進行,這絕非小事!
PyBites 讓你能快速掌握最新資訊。 文章、程式碼挑戰和其他重要花絮能幫助你提升智慧。 每項挑戰都包含一個複習環節,你可以在其中比較你的程式碼,並探索解決問題的正確方法。
CodeCombat
CodeCombat 是另一個提供動態且具有挑戰性程式碼環境的程式設計遊戲。 與 CodinGame 等產品不同的是,CodeCombat 更注重於教師。 因此,你可以使用該平台在學校教授程式設計和解決問題。
有專門為此目的設計的工具、教材和其他資源。 這也很有趣。 你建構的 CodeCombat 遊戲既有趣又具有視覺衝擊力。 遊戲在孩子們之間如此受歡迎。 給孩子們挑戰來開發他們的虛擬環境,可以激勵他們在未來創造出驚人的東西!
Tynker
正如簡介中簡要提及的,我們為你們所有的父母準備了一些東西。Tynker 是一個有趣的小平台,可以幫助教孩子們程式設計。 它基於一個非常簡單的拖放介面,孩子們可以在其中隨機選擇選項,並期望能解決出現的問題。
請別誤會,Tynker 比你想像的更適應現代標準。 如果你的孩子正處於青春期,你可以讓他們使用 Python 或 JavaScript 編寫解決方案,而不是只使用 Block。
總結:挑戰自己!
在我們列出的所有網站和平台上,總共可能有 10,000 個獨特的程式碼挑戰。 你不可能全部都完成。
相反地,我的建議是找出一個你認為最適合你需求的平台,並專注於那個平台。 你可以建立友誼、學習新事物,誰知道呢,你可能學得夠多,找到一份高薪公司的新工作!
你也可以考慮使用 DataCamp 來學習數據科學,其中包括程式碼挑戰和專案。
接下來,如何在流行的程式語言中添加註解?