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