程式猿(ID:imkuqin) 猿妹編譯
編譯自:https://medium.freecodecamp.org/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f
程式設計幾乎已經成為了人類所知每個行業的必要組成部分,如今有越來越多的人開始了他們的程式設計之旅。
如果你正在在學習程式設計,那麼我可以告訴你一個提高技能的好方法,那就是敢於去解決編碼過程中遇到的難題。解決不同型別的難題,可以幫助你成為一名優秀的問題解決者。
我整理了一些非常受歡迎的程式設計難題網站串列,並且做了簡單介紹,希望它們可以在你的程式設計之旅中幫助到你:
1、TopCoder
這個網站可以說是一個程式設計比賽的網站,有近一百萬程式員所支援,該網站每個星期都有兩次網上線上比賽,根據比賽的結果對參賽者進行新的排名。參賽者可以使用他們的程式碼編輯器直接線上自行完成挑戰。根據參賽者完成時間長短排名。
TopCoder上排名靠前的使用者都是非常有潛力的程式員,他們會定期參加各種比賽。這些使用者還可以透過名稱為“ALGORITHMS WEEKLY BY PETR MITRICHEV”的部落格平臺去發表一些關於程式設計競賽、演演算法、數學等方面的文章。
2、Coderbyte
Coderbyte 是 Kickstarter 資助的專案(在 Kickstarter 支援之前這個網站就已經存在了),而且它針對完全的初學者和類似中級程式員。
Coderbyte 提供了 200 多種編碼挑戰,挑戰者可以從 10 種程式語言任選一個,直接線上解決問題。挑戰的範圍從簡單(查詢字串中的最大單詞)到複雜。
他們還提供一系列演演算法教程,包括教程影片和麵試準備課程。與HackerRank和其他類似網站不同的是,除了 Coderbyte 釋出的官方解決方案外,使用者還可以檢視其他使用者提供的解決方案。
3、Project Euler
Project Euler 提供了很多關於電腦科學和數學領域的挑戰。Project Euler 大概是世界上最受歡迎的程式設計挑戰網站,它們設立得並不是很難,反而更加需要關鍵的思考和解決問題,以此來幫助你成長和學習你所使用的語言。這一切都是為了鍛煉你進步,確保你充分理解自己在做什麼。
你不能直接在網站上的編輯器編碼,所以你需要在自己的電腦上編寫一個解決方案,然後在他們的網站上提交解決方案。
4、HackerRank
HackerRank提供了很多不同領域的挑戰,比如演演算法、數學、SQL、函式式程式設計、人工智慧等等。它關於人工智慧的那部分挑戰,它們非常酷,而且讓高階程式員也有東西可以玩。它的背後是 Y Combinator、SVAngel 和許多其他公司。絕對有很多駭客在攻剋這些。
HackerRank 還針對每一項挑戰專門成立了討論和領導委員會,而大多數挑戰來自於一篇社論,它解釋了更多的挑戰,以及如何接近它提出解決方案。除了這篇社論,你目前還不能看到其他使用者在 HackerRank 上的解決方案。
HackerRank 還支援使用者提交應用程式,可以適用於工作、解決公司贊助編碼的挑戰。
5、CodeChef
CodeChef 是一家位於印度的程式設計競賽網站,由 Directi 創造的,該網站提供了數百種挑戰。挑戰者可以透過線上編輯器進行程式設計,而且還可以根據自身的程式設計能力去檢視適合於自己水平的挑戰題目,CodeChef 有一個大小合理的程式設計社群,使用者可以參與論壇討論,編寫教程,而且還能參加 CodeChef 的編碼競賽。
6、CodeEval
CodeEval 與 HackerRank 類似,它也提供了一系列公司贊助的編碼挑戰,如果能夠很好的完成挑戰,還可能幫助你找到工作或者是現金鼓勵等。公司會舉辦競爭挑戰賽,以此來招募新開發人員進行工作。參賽者在這裡看到當前的挑戰串列。
7、Codewars
Codewars 提供了很多由他們自己社群提交的編碼挑戰,挑戰者可以選用多種語言在編輯器中直接線上完成挑戰。使用者還可以檢視每個挑戰的討論以及其他使用者的解決方案。很多人用過之後都表示很好用。
8、LeetCode
LeetCode 是一個很受歡迎的線上判題系統,它提供了幾百道挑戰題目,這些題目可以幫助挑戰者為面試做好技術準備。挑戰者可以用 9 種程式語言直接線上完成挑戰。雖然該網站不支援檢視其他使用者的解決方案,但使用者可以為自己的解決方案提供統計資料,例如與其他使用者相比,程式碼執行速度等等。
網站還設有一個專門為面試準備的 Mock Interview 部分,這是由他們自己創辦的編碼競賽,網站上有一些文章可以幫助你提供更好的解題思路
9、SPOJ
Sphere Online Judge(SPOJ)是一個線上判題系統,提供 20000 多個程式設計挑戰。它支援所有你能想到的程式語言,而且在它背後還有一個優秀活躍的社群論壇。使用者可以直接透過線上編輯器提交程式碼。SPOJ 還舉辦了自己的競賽,並使用者可以自由討論程式設計挑戰題目。不過,他們目前沒有像其他網站那樣提供任何官方解決方案或社論。
10、CodinGame
CodinGame 與其他網站有點不同,因為它不是簡單地在編輯器中去完成編碼挑戰,而是讓挑戰者真正參與線上遊戲程式碼的編寫。使用者可以在這裡看到當前提供的遊戲串列和一個示例。這個遊戲有一個問題描述,測試用例,和一個編輯器,你可以在 20 多個程式語言中任選一種編寫你的程式碼。
11、Codeforces
Codeforces 是一家為計算機程式設計愛好者提供的線上評測系統該網站由薩拉托夫國立大學的一個團體創立並負責運營。在程式設計挑戰賽中,選手有 2 個小時的時間去解決 5 道題,透過得分排名,選手可以看到實時的排名(Standing),也可以選擇檢視好友的排名,還可以看到某題有多少人透過等資訊。
在 cf,所有的使用者根據在以往比賽中的表現被賦予一個 Rating 並冠以不同的頭銜,名字也會以不同的顏色顯示,比如 Expert 是藍色,Master 是黃色。
12、hackerearth.com
HackerEarth 成立於2013年,是一家來自印度的、面向程式員的挑戰比賽、招聘服務網站,透過程式設計比賽,幫助企業挑選優秀的程式員。HackerEarth 根據記錄每個人的程式設計過程,透過特殊的演演算法模型來為企業主推薦合適的開發者,並最終由僱主決定人選。
13、atcoder.jp
這個網站是 日本最大的演演算法競賽網站,題風很棒。有英文和日文題解,很貼心,但是我們應該很少有人能夠用日語看題看網站,不過,你可以將網站調成英文的。
14、hihocoder.com
風格跟 ACM 很像,每週都會有一個競賽題目,可以參與其中,每個月還會舉辦一般程式設計月賽,同其他參賽者們同臺競技,同時還有討論社群可供使用者討論演演算法、分享經驗等,而且也會像你推薦工作機會
15、codefights.com
CodeFights 是一家將練習程式設計的過程變為遊戲過程的初創公司。參賽者既可以選擇人機對戰樣式,也可以選擇挑戰其它玩家。目前擁有 50 萬活躍使用者!可以讓使用者在對戰之中不斷提高自己的程式設計技巧。社交遊戲與程式設計的結合是這個網站最大的特點
16、Timus Online Judge URAL
Timus Online Judge 是一個俄羅斯最大的線上題庫, 有很多自己獨有的題目。由由烏拉爾聯邦大學管理,該網站的比賽規則類似於ACM,比賽分為團隊賽和個人挑戰賽,比賽時間5個小時,通常有十幾個問題,透過參賽者提交的解決方案計算得分。
17、lintcode.com
線上刷題網站,彙集了各大公司的演演算法面試題。有階梯式訓練題庫,幫你選好應該刷的題目,特別適合小白和懶人。評測數獨很快,最大的中文線上題庫。
年度挑戰賽型別:
18、Google Code Jam
Google Code Jam 是一項由 Google 主辦的國際程式設計競賽。該項賽事始於 2003 年,旨在幫助 Google 發掘潛在的工程領域頂級人才。比賽內容包括一系列的演演算法問題,參賽者必須在指定時間內解決。參賽者允許使用任意自選程式語言和開發環境來解答問題。
19、Facebook Hacker Cup
Facebook Hacker Cup 是一個由 Facebook 臉譜主辦的國際性的程式設計比賽 。競賽始於 2011 年,是作為一種手段來招募工程技術人才。比賽由必須要在一個固定的時間內解決的一組演演算法問題組成,參賽者可以使用任何程式語言和發展環境去找他們的解決方案。
Facebook 將這次競賽作為一個重要的人才招募平臺,用以吸引優秀的程式設計人員加盟。預選賽的前 25 名將被邀請到Facebook總部進行決賽,決賽勝者將被授予全球”最佳駭客”稱號,同時獲得 5000 美元獎金。
20、ACM 國際大學生程式設計競賽
ACM 國際大學生程式設計競賽(英文全稱:ACM International Collegiate Programming Contest (簡稱 ACM-ICPC 或 ICPC))是由美國計算機協會(ACM)主辦的,一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程式、分析和解決問題能力的年度競賽。經過近 40 年的發展,ACM 國際大學生程式設計競賽已經發展成為全球最具影響力的大學生程式設計競賽。賽事目前由 IBM 公司贊助。
本文所提及的都是根據以下內容整理出來的:一些是我本人瀏覽網站時關註到的,一些是透過谷歌搜尋和基於 Quora 上的文章,還有一些在一些文章中遇到過的。我還經常逛一些類似於 r/learnprogramming 這樣的論壇,檢視論壇使用者通常推薦哪些網站。
●本文編號311,以後想閱讀這篇文章直接輸入311即可
●輸入m獲取文章目錄
演演算法與資料結構
更多推薦《18個技術類微信公眾號》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。