編程幾乎已經(jīng)成為了人類所知每個(gè)行業(yè)的必要組成部分进陡,如今有越來越多的人開始了他們的編程之旅。
如果你正在在學(xué)習(xí)編程秆撮,那么我可以告訴你一個(gè)提高技能的好方法四濒,那就是敢于去解決編碼過程中遇到的難題。解決不同類型的難題,可以幫助你成為一名優(yōu)秀的問題解決者盗蟆。
我整理了一些非常受歡迎的編程難題網(wǎng)站列表戈二,并且做了簡單介紹,希望它們可以在你的編程之旅中幫助到你:
1喳资、TopCoder
這個(gè)網(wǎng)站可以說是一個(gè)程序設(shè)計(jì)比賽的網(wǎng)站觉吭,有近一百萬程序員所支持,該網(wǎng)站每個(gè)星期都有兩次網(wǎng)上在線比賽仆邓,根據(jù)比賽的結(jié)果對參賽者進(jìn)行新的排名鲜滩。參賽者可以使用他們的代碼編輯器直接在線自行完成挑戰(zhàn)。根據(jù)參賽者完成時(shí)間長短排名节值。
TopCoder上排名靠前的用戶都是非常有潛力的程序員徙硅,他們會定期參加各種比賽。這些用戶還可以通過名稱為“ALGORITHMS WEEKLY BY PETR MITRICHEV”的博客平臺去發(fā)表一些關(guān)于編程競賽搞疗、算法嗓蘑、數(shù)學(xué)等方面的文章。
2匿乃、Coderbyte
Coderbyte 是 Kickstarter 資助的項(xiàng)目(在Kickstarter 支持之前這個(gè)網(wǎng)站就已經(jīng)存在了)桩皿,而且它針對完全的初學(xué)者和類似中級程序員。
Coderbyte 提供了 200 多種編碼挑戰(zhàn)幢炸,挑戰(zhàn)者可以從 10 種編程語言任選一個(gè)泄隔,直接在線解決問題。挑戰(zhàn)的范圍從簡單(查找字符串中的最大單詞)到復(fù)雜宛徊。
他們還提供一系列算法教程佛嬉,包括教程視頻和面試準(zhǔn)備課程。與HackerRank和其他類似網(wǎng)站不同的是岩调,除了?Coderbyte?發(fā)布的官方解決方案外巷燥,用戶還可以查看其他用戶提供的解決方案赡盘。
3号枕、Project Euler
Project Euler 提供了很多關(guān)于計(jì)算機(jī)科學(xué)和數(shù)學(xué)領(lǐng)域的挑戰(zhàn)。Project Euler 大概是世界上最受歡迎的編程挑戰(zhàn)網(wǎng)站陨享,它們設(shè)立得并不是很難葱淳,反而更加需要關(guān)鍵的思考和解決問題,以此來幫助你成長和學(xué)習(xí)你所使用的語言抛姑。這一切都是為了鍛煉你進(jìn)步赞厕,確保你充分理解自己在做什么。
你不能直接在網(wǎng)站上的編輯器編碼定硝,所以你需要在自己的電腦上編寫一個(gè)解決方案皿桑,然后在他們的網(wǎng)站上提交解決方案。
4、HackerRank
HackerRank提供了很多不同領(lǐng)域的挑戰(zhàn)诲侮,比如算法镀虐、數(shù)學(xué)、SQL沟绪、函數(shù)式編程刮便、人工智能等等。它關(guān)于人工智能的那部分挑戰(zhàn)绽慈,它們非澈藓担酷,而且讓高級程序員也有東西可以玩坝疼。它的背后是 Y Combinator搜贤、SVAngel 和許多其他公司。絕對有很多黑客在攻克這些钝凶。
HackerRank 還針對每一項(xiàng)挑戰(zhàn)專門成立了討論和領(lǐng)導(dǎo)委員會入客,而大多數(shù)挑戰(zhàn)來自于一篇社論,它解釋了更多的挑戰(zhàn)腿椎,以及如何接近它提出解決方案桌硫。除了這篇社論,你目前還不能看到其他用戶在 HackerRank 上的解決方案啃炸。
HackerRank 還支持用戶提交應(yīng)用程序铆隘,可以適用于工作、解決公司贊助編碼的挑戰(zhàn)南用。
5膀钠、CodeChef
CodeChef 是一家位于印度的編程競賽網(wǎng)站,由 Directi 創(chuàng)造的裹虫,該網(wǎng)站提供了數(shù)百種挑戰(zhàn)肿嘲。挑戰(zhàn)者可以通過在線編輯器進(jìn)行編程,而且還可以根據(jù)自身的編程能力去查看適合于自己水平的挑戰(zhàn)題目筑公,CodeChef 有一個(gè)大小合理的編程社區(qū)雳窟,用戶可以參與論壇討論,編寫教程匣屡,而且還能參加 CodeChef 的編碼競賽封救。
6、CodeEval
CodeEval 與 HackerRank 類似捣作,它也提供了一系列公司贊助的編碼挑戰(zhàn)誉结,如果能夠很好的完成挑戰(zhàn),還可能幫助你找到工作或者是現(xiàn)金鼓勵(lì)等券躁。公司會舉辦競爭挑戰(zhàn)賽惩坑,以此來招募新開發(fā)人員進(jìn)行工作掉盅。參賽者在這里看到當(dāng)前的挑戰(zhàn)列表。
7以舒、Codewars
Codewars 提供了很多由他們自己社區(qū)提交的編碼挑戰(zhàn)怔接,挑戰(zhàn)者可以選用多種語言在編輯器中直接在線完成挑戰(zhàn)。用戶還可以查看每個(gè)挑戰(zhàn)的討論以及其他用戶的解決方案稀轨。很多人用過之后都表示很好用扼脐。
8、LeetCode
LeetCode 是一個(gè)很受歡迎的在線判題系統(tǒng)奋刽,它提供了幾百道挑戰(zhàn)題目瓦侮,這些題目可以幫助挑戰(zhàn)者為面試做好技術(shù)準(zhǔn)備。挑戰(zhàn)者可以用 9 種編程語言直接在線完成挑戰(zhàn)佣谐。雖然該網(wǎng)站不支持查看其他用戶的解決方案肚吏,但用戶可以為自己的解決方案提供統(tǒng)計(jì)數(shù)據(jù),例如與其他用戶相比狭魂,代碼運(yùn)行速度等等罚攀。
網(wǎng)站還設(shè)有一個(gè)專門為面試準(zhǔn)備的 Mock Interview 部分,這是由他們自己創(chuàng)辦的編碼競賽雌澄,網(wǎng)站上有一些文章可以幫助你提供更好的解題思路
9斋泄、SPOJ
Sphere Online Judge(SPOJ)是一個(gè)在線判題系統(tǒng),提供 20000 多個(gè)編程挑戰(zhàn)镐牺。它支持所有你能想到的編程語言炫掐,而且在它背后還有一個(gè)優(yōu)秀活躍的社區(qū)論壇。用戶可以直接通過在線編輯器提交代碼睬涧。SPOJ 還舉辦了自己的競賽募胃,并用戶可以自由討論編程挑戰(zhàn)題目。不過畦浓,他們目前沒有像其他網(wǎng)站那樣提供任何官方解決方案或社論痹束。
10、CodinGame
CodinGame 與其他網(wǎng)站有點(diǎn)不同讶请,因?yàn)樗皇呛唵蔚卦诰庉嬈髦腥ネ瓿删幋a挑戰(zhàn)祷嘶,而是讓挑戰(zhàn)者真正參與在線游戲代碼的編寫。用戶可以在這里看到當(dāng)前提供的游戲列表和一個(gè)示例秽梅。這個(gè)游戲有一個(gè)問題描述抹蚀,測試用例,和一個(gè)編輯器企垦,你可以在 20 多個(gè)編程語言中任選一種編寫你的代碼。
11晒来、Codeforces
Codeforces 是一家為計(jì)算機(jī)編程愛好者提供的在線評測系統(tǒng)該網(wǎng)站由薩拉托夫國立大學(xué)的一個(gè)團(tuán)體創(chuàng)立并負(fù)責(zé)運(yùn)營钞诡。在編程挑戰(zhàn)賽中,選手有 2 個(gè)小時(shí)的時(shí)間去解決 5 道題,通過得分排名荧降,選手可以看到實(shí)時(shí)的排名(Standing)接箫,也可以選擇查看好友的排名,還可以看到某題有多少人通過等信息朵诫。
在 cf辛友,所有的用戶根據(jù)在以往比賽中的表現(xiàn)被賦予一個(gè) Rating 并冠以不同的頭銜,名字也會以不同的顏色顯示,比如 Expert 是藍(lán)色剪返,Master 是黃色废累。
12、hackerearth.com
HackerEarth 成立于2013年脱盲,是一家來自印度的邑滨、面向程序員的挑戰(zhàn)比賽、招聘服務(wù)網(wǎng)站钱反,通過編程比賽掖看,幫助企業(yè)挑選優(yōu)秀的程序員。HackerEarth 根據(jù)記錄每個(gè)人的編程過程面哥,通過特殊的算法模型來為企業(yè)主推薦合適的開發(fā)者哎壳,并最終由雇主決定人選。
13尚卫、atcoder.jp
這個(gè)網(wǎng)站是 日本最大的算法競賽網(wǎng)站耳峦,題風(fēng)很棒。有英文和日文題解焕毫,很貼心蹲坷,但是我們應(yīng)該很少有人能夠用日語看題看網(wǎng)站,不過邑飒,你可以將網(wǎng)站調(diào)成英文的循签。
14、hihocoder.com
風(fēng)格跟 ACM 很像疙咸,每周都會有一個(gè)競賽題目县匠,可以參與其中,每個(gè)月還會舉辦一般編程月賽撒轮,同其他參賽者們同臺競技乞旦,同時(shí)還有討論社區(qū)可供用戶討論算法、分享經(jīng)驗(yàn)等题山,而且也會像你推薦工作機(jī)會
15兰粉、codefights.com
CodeFights 是一家將練習(xí)編程的過程變?yōu)橛螒蜻^程的初創(chuàng)公司。參賽者既可以選擇人機(jī)對戰(zhàn)模式顶瞳,也可以選擇挑戰(zhàn)其它玩家玖姑。目前擁有 50 萬活躍用戶愕秫!可以讓用戶在對戰(zhàn)之中不斷提高自己的編程技巧。社交游戲與編程的結(jié)合是這個(gè)網(wǎng)站最大的特點(diǎn)
16焰络、Timus Online Judge URAL
Timus Online Judge 是一個(gè)俄羅斯最大的在線題庫戴甩, 有很多自己獨(dú)有的題目。由由烏拉爾聯(lián)邦大學(xué)管理闪彼,該網(wǎng)站的比賽規(guī)則類似于ACM甜孤,比賽分為團(tuán)隊(duì)賽和個(gè)人挑戰(zhàn)賽,比賽時(shí)間5個(gè)小時(shí)畏腕,通常有十幾個(gè)問題缴川,通過參賽者提交的解決方案計(jì)算得分。
17郊尝、lintcode.com
在線刷題網(wǎng)站二跋,匯集了各大公司的算法面試題。有階梯式訓(xùn)練題庫流昏,幫你選好應(yīng)該刷的題目扎即,特別適合小白和懶人。評測數(shù)獨(dú)很快况凉,最大的中文在線題庫谚鄙。
年度挑戰(zhàn)賽類型:
18、Google Code Jam
Google Code Jam 是一項(xiàng)由 Google 主辦的國際程序設(shè)計(jì)競賽刁绒。該項(xiàng)賽事始于 2003 年闷营,旨在幫助 Google 發(fā)掘潛在的工程領(lǐng)域頂級人才。比賽內(nèi)容包括一系列的算法問題知市,參賽者必須在指定時(shí)間內(nèi)解決傻盟。參賽者允許使用任意自選編程語言和開發(fā)環(huán)境來解答問題。
19嫂丙、Facebook Hacker Cup
Facebook Hacker Cup 是一個(gè)由 Facebook 臉譜主辦的國際性的編程比賽 娘赴。競賽始于 2011 年,是作為一種手段來招募工程技術(shù)人才跟啤。比賽由必須要在一個(gè)固定的時(shí)間內(nèi)解決的一組算法問題組成诽表,參賽者可以使用任何編程語言和發(fā)展環(huán)境去找他們的解決方案。
Facebook 將這次競賽作為一個(gè)重要的人才招募平臺隅肥,用以吸引優(yōu)秀的程序設(shè)計(jì)人員加盟竿奏。預(yù)選賽的前 25 名將被邀請到Facebook總部進(jìn)行決賽,決賽勝者將被授予全球"最佳黑客"稱號腥放,同時(shí)獲得 5000 美元獎(jiǎng)金泛啸。
20、ACM 國際大學(xué)生程序設(shè)計(jì)競賽
ACM 國際大學(xué)生程序設(shè)計(jì)競賽(英文全稱:ACM International Collegiate Programming Contest (簡稱 ACM-ICPC 或 ICPC))是由美國計(jì)算機(jī)協(xié)會(ACM)主辦的捉片,一項(xiàng)旨在展示大學(xué)生創(chuàng)新能力平痰、團(tuán)隊(duì)精神和在壓力下編寫程序汞舱、分析和解決問題能力的年度競賽伍纫。經(jīng)過近 40 年的發(fā)展宗雇,ACM 國際大學(xué)生程序設(shè)計(jì)競賽已經(jīng)發(fā)展成為全球最具影響力的大學(xué)生程序設(shè)計(jì)競賽。賽事目前由 IBM 公司贊助莹规。
本文所提及的都是根據(jù)以下內(nèi)容整理出來的:一些是我本人瀏覽網(wǎng)站時(shí)關(guān)注到的赔蒲,一些是通過谷歌搜索和基于 Quora 上的文章,還有一些在一些文章中遇到過的良漱。我還經(jīng)常逛一些類似于 r/learnprogramming 這樣的論壇舞虱,查看論壇用戶通常推薦哪些網(wǎng)站。