挑戰者聯盟:這20個編碼挑戰和競賽網站請收好
本文轉載自公眾號“讀芯術”(ID:AI_Discovery)
我們通常以10年為期劃分一代人,2020年是特別的一年,代表著一個十年的結束,另一個十年的開始。
在過去的十年里,人類社會繁榮發展,科學技術取得了巨大的突破。2012年好奇號探測器首次登陸火星,2015年探測深空引力波,2018年引入基因編輯超能力——CRISPR,2019年“拍攝”到了第一張黑洞照片。
如果問過去十年最重大的圖譜是什么,人工智能毫無疑問當選。正是因為人工智能出現,科幻小說才切實走進人類生活。機器學習賦予機器學習的能力,而深度學習——一項通過人工神經網絡重構人類大腦復雜性的繁重工作——則賦予機器自己的思維。
隨著技術的不斷進步,深度學習專家們都致力于創造一種人工通用智能——一種與人類無異的能夠執行任何形式操作的機器。
上文提到的每一次技術飛躍都可以借助計算機編程得以實現。“好奇號”火星車通過預先編程就可以在沒有人類干預的情況下獨自探索火星;繪制黑洞圖像需要一種算法來從地球表面的衛星網絡收集圖像數據。
正是這種與計算機的交融,促成了現在的許多科學突破。沒有它,我們的社會將停滯不前。
人人都能寫代碼
在這個數據呈指數增長的時代,不論是機構創始人、首席執行官、商業領袖、還是風險投資商,不論是年長還是年輕,每個人都應該掌握編碼技術。由于經濟差距持續擴大,不平等也始終存在,編碼將是生存必備技能。
好消息是任何人都可以學習編碼!雖然這確實不容易。但只要具備好奇心、決心和純粹的意志,就可以達成目標。編寫代碼本身也是為了解決問題。這是編程背后的基本概念。編碼經常被用來自動完成一項單調的任務。
學習編碼的最佳方法之一是實踐,而且是大量的實踐,并養成編碼的習慣。還有什么比通過參與編碼挑戰和和編碼競賽來提高技能更好的方法呢?
以下是20個可練習編程和解決復雜算法問題的網站。所有網站排名不分先后,來看看吧!
1. CodeWars
Codewars平臺設計良好,用戶可以在這里共同參與挑戰。其背后有兩組團隊維持運行,一是平臺開發者,他們授權kata教授各種技術,用啟發性的方法解決kata,并給出建設性的反饋;二是平臺領導者,他們主要是協調平臺內容和社區二者。
類型:
- Kata (編碼練習)
- Kumite (一對一挑戰)
- 論壇
- Wiki
最大優勢:Codewar的界面美觀簡潔,以獨特的方式呈現挑戰,并將其命名為Katas,在這里,程序員可以獲得技能,并在Kumite中挑戰其他程序員。Codewar集學與趣于一體,是最好的編程學習網站之一。
2. CodeChef
CodeChef是一個頗具競爭力的編程平臺,旨在幫助程序員提高他們在算法、編程和競賽領域的技能。這個由問題管理員組成的龐大社區推崇積極學習和友好編程的文化氛圍。
特點:
- 練習
- 比賽
- 討論
- 可主辦大賽
- 校園篇
最大優勢:CodeChef是最具競爭力的編程平臺之一,面向所有人開放,允許舉辦編程比賽,并提供一個名為“校園篇”(campus chapter)的功能,供編程俱樂部使用。Codechef每個月還舉辦3場比賽,并頒發獎品。
3. CodeGym
CodeGym是一款80%基于實踐的在線Java編程。任何想學習Java的人,都可以到這里來學習。
特點:
- 課程
- 任務
- 游戲
- 聊天室
- 論壇
最大優勢: CodeGym可為Java初學者提供練習任務,幫助他們了解所需的知識。還具有即時的解決方案驗證,以便立即發現錯誤。CodeGym還采用了最新的教學技術,具有令人驚艷的可視化效果和游戲。
4. HackerRank
HackerRank是一個招聘平臺,旨在為全球超過2000家公司評估開發人員技能。HackerRank使技術招聘人員和招聘經理能夠在招聘過程中的每個階段客觀地評估人才,從而幫助企業聘用有技能的開發人員,并加快創新速度。
特點:
- 編程練習
- 面試準備
最大優勢:HackerRank是頂級的編程練習網站之一,以為開發人員匹配大公司而聞名,對雇主和雇員都大有幫助。
5. Exercism
Exercism始于語言追蹤,允許用戶選擇喜歡的語言。此外,還會有導師檢查用戶代碼,并幫助用戶在其有所進步時更上一層樓。若是初學者想要進一步了解某種編程語言,那么該平臺簡直是為其量身而作。
特點:
- 語言追蹤
- 私人指導
- 實踐模式
最大優勢: Exercism始于語言追蹤,允許用戶選擇喜歡的語言。此外,還會有導師檢查用戶代碼,并在用戶進步時進一步提升編程能力。若是初學者想要進一步了解某種編程語言,那么該平臺簡直是為其量身而作。
6. SPOJ
SPOJ網站設計雖簡單,但包含大量的編碼挑戰有助于開發人員成長為真正的編程大師,并達成構建高效算法的技能。
特點:
- 競賽
- 算法
- 排名
- 狀態
- 討論頁
最大優勢: SPOJ有大量難度極高的編碼挑戰,可以測試開發人員真正的實力,同時開發人員也可以參加一些競賽來展示個人技能。
7. HackerEarth
HackerEarth是一個備受歡迎的編程平臺,包含8000多個編程問題、2000個編程挑戰和1000個編程馬拉松。1000多家公司的招聘經理對其信賴有加。該平臺受眾廣泛,擁有300萬開發人員。
特點:
- 練習(基本編程問題)
- 比賽(從新手賽到長達一周的編程馬拉松)
- 編程馬拉松(解決現實世界的問題和商業挑戰)
- 數據科學競賽(測試數據科學技能)
最大優勢:該網站可顯示比賽剩余時間,其開發者評估軟件可顯示比賽進展。該網站還擁有遠程面試功能和相應數據分析供公司后臺查看。
8. Programmr
Programmr是一個面向全體開發人員的編碼學習和實踐在線交互平臺。他們認為最好的學習方法是在自學的環境中按照個人節奏來學習。Programmr稱可以做出世界上最好的編程模擬器,開發人員可借此編寫和運行各種程序。
特點:
- 挑戰
- 項目
- 競賽
- 證書
最大優勢: Programmr擁有絕佳的在線編碼模擬器和B2B API,允許開發人員將編碼小部件集成到網站。
9. TopCoder 挑戰
TopCoder是一個極具競爭力的編程平臺。該平臺提供了一組算法挑戰,用戶可以在自己的代碼編輯器中解決。該網站上的挑戰多種多樣,只要你愿意,隨時都可以參加。
特點:
- 挑戰
- 字節工作
最大優勢:每項挑戰都有具體的截止日期和一定的獎品,還會顯示所需語言或庫。雖然這些挑戰并非為初學者準備的,但勝在網站構建絕佳。
10. CodeForces
CodeForces作為一個協作平臺,允許程序員參加有時間限制的“回合賽”,并給與參賽者相應積分。Codeforce也有競賽、問題集以及供程序員展開合作的團隊。
特點:
- 競賽
- 競技場
- 問題集
- 團隊
最大優勢: CodeForces非常適合那些意在尋求有趣挑戰以提高技能并加入適合自己需求的團隊的程序員。競技場的功能也是非常獨特的,程序員可以在那里通過特定的挑戰訓練技能,并在最后查看排名。
11. CodePen 挑戰
CodePen是一個很酷的在線集成開發環境(IDE),允許用戶在瀏覽器中編寫代碼,并在構建代碼時查看結果。CodePen 挑戰旨在通過編寫代碼來提高開發人員技能。每周都有全新的挑戰等著你去探索,最好的“Pens”會被單獨挑選出來。
特點:
- 團隊
- 播客
- 教育
最大優勢: CodePen挑戰非常有趣,融創造和協作于一體。競爭完全是空談,因為用戶沒有什么可失去的,反而還能通過參加這些挑戰獲得技能。
12. LeetCode
LeetCode是幫助開發人員提高技能、擴展知識和準備技術型面試的最佳平臺。成千上萬的程序員用它來收集Amazon、Facebook、谷歌、LinkedIn等的算法實踐。該平臺包含超過1400個可供練習的問題。
特點:
- 算法
- 數據庫
- 框架
- 并發性
- 競賽
最大優勢:LeetCode的探索工具可以幫助程序員在其編程生涯中邁向下一個階段。LeetCode為他們準備技術面試,并幫助公司雇傭頂尖人才。
13. GeekForGeeks
GeeksForGeeks是屬于極客們的網站,擁有大量有關編程和算法的資源。其中還包括面試環節,能夠幫助程序員贏得他們夢想的工作。還有一個出色的C和C++問題集合供程序員解決。
特點:
- 算法
- 面試
- 學員
- 測試
最大優勢: GeeksforGeeks涵蓋大量的教學主題文章,比如數據結構、算法、計算機科學,以及測試知識和理解的小測驗。這是一個學習計算機科學知識的絕佳平臺。
14. ProjectEuler
若你正在學習算法和計算機編程,那么你可能聽說過Project Euler。Project Euler是為有興趣將數學和編程結合起來解決問題的人而設計的一套數學問題。其要求開發人員利用數學形成算法并得到有效的解決方案,再通過計算機編程實際解決問題。這些問題的難度很大,而且不容易解決。
特點:
- 存檔問題
- 消息
最大優勢: 盡管該網站缺少內置的代碼編輯器或解決方案檢查器,但這樣一來程序員就可以下載IDE并在其中進行編碼。此外,由于數學是算法和數據結構的基礎,解決這些問題有助于達成一些程序員必備的技能。
15. CodinGame
CodinGame旨在讓程序員通過解決世界上最具挑戰性的一些問題,學習新的概念,并從最好的開發人員那里獲得靈感,從而不斷提高自身編程技能。
特點:
- 練習
- 競賽
- 貢獻
- 學習
最大優勢: CodinGame有助于用戶以游戲的形式學習編碼,讓他們以有趣的方式進行學習。開發人員還可以向導師尋求幫助,邀請導師檢查他們的代碼,也可以與其他開發人員相互比較解決方案。
16. URI OnlineJudge
該平臺由羅德島大學(URI)計算機科學系開發。該項目的主要目標是提供編程實踐和知識共享。該網站具備好用的用戶界面,包含1000多個問題,共分為8大類,可用11種語言解決。
特點:
- 問題庫
- 論壇
- 比賽及排名
- 高校開發人員
- 競賽
最大優勢: URI是由大學生開發的平臺,這意味著它秉持著初學者的心態,即想要以一種有趣的方式學習編碼。此外,這些問題的構成有代表性,并根據需要進行了劃分,從初學者的類別開始,逐漸發展成更復雜的類別,如計算幾何和圖形。
17. KickStart — 谷歌編碼大賽
Kick Start是谷歌發起的一項競賽,為全世界的程序員提供了一個可以通過在線競賽來提高技能的機會。每一輪比賽持續3個小時,特色在于這些算法挑戰由谷歌工程師開發,因此開發人員可以體驗一下在谷歌工作的感覺。比賽定期舉行,每個人都有機會參加。
圖源:unsplash
最大優勢: 排名領先的程序員有機會接受面試,甚至可能在谷歌找到一份工作。谷歌籌辦的另一大編碼競賽是Hashcode 。
18. Code Jam
Code Jam是谷歌開展時間最長的全球編碼競賽,在這里,不同級別的程序員都可以進行自我技能測試。參賽者必須通過一系列的算法問題,才能在世界總決賽中獲得一席之地,并有機會獲得冠軍和1.5萬美元的高額獎金。
最大優勢: Code Jam以4輪在線比賽的形式,讓世界各地的程序員解決復雜的算法問題完成挑戰,每年的Code Jam世界總決賽都在不同的谷歌國際事務處舉行。這個宏大的挑戰讓不同級別的程序員都能獲得經驗,并激勵他們提高個人技能以在決賽中獲得一席之地。
19. 回復挑戰
“回復挑戰”是由“回復者”設計的一系列挑戰,對任何熱愛科技和在線競賽的人開放。“回復挑戰”就是在編碼、網絡安全、創意和投資等領域尋找樂趣和展示才華。每項挑戰都有豐厚的獎品——Macbook Pro 16、Airpods Pro等。這些挑戰面向學生和專業人士開放。
特點:
- 投資挑戰
- 代碼挑戰標準
- 代碼挑戰青少年
- 網絡安全挑戰 (即將開始)
- 創意人員 (即將開始)
最大優勢: 回復挑戰趣味性極強,獎品豐厚誘人,挑戰多樣化,免費對大眾開放。
圖源:unsplash
20. Kaggle Learn
Kaggle以數據科學家之間的協作競爭而聞名。但他們也有一個名為Kaggle Learn的平臺用于提供微型課程。數據科學家通過這些小型課程可以學習實用的數據技能,并立即付諸實踐。
他們稱這是成為數據科學家或提高現有技能的最快、也是最有趣的方式。該平臺包含的課程有- Python、panda、SQL和數據可視化。
特點:
- 教程
- 練習
最大優勢:這些微型課程將復雜的話題濃縮成重要的幾部分,幫助初學者學習重要的話題,并在短時間內獲得必要的技能。其內置代碼編輯器,內核,易于使用,非常適合初學者。
這里不光有適合不同水平學習者的競賽和挑戰,而且在打怪升級的同時,還有可能獲得豐厚獎勵,你還在等什么呢?