專欄 | 九章演算法
網址 | http://www.jiuzhang.com

對於軟體開發人員來說,保持程式設計的競技水平是非常有必要的。
通過解決不同型別的程式設計難題,迎接不同型別的程式設計挑戰,不僅能讓你成為處理問題的高手,幫助你瞭解程式語言的複雜性,還能讓你學習到更多新的演算法,變得越來越優秀。
下面是10個優質的程式設計網站,有利於幫助大家提高程式設計技能,準備技術面試,促進大家的職業發展。
1
1
TopCoder


TopCoder 是最早的線上程式設計競技平臺之一,該網站提供了一系列的演算法挑戰,在這裡,你可以:
-
使用他們的程式碼編輯器直接進行線上作答。
-
參加該網站舉辦的 SRMs 挑戰專案。該比賽將會在每月定期舉辦,作為參賽者,你需要以最快的速度,與眾多其他的程式設計挑戰者進行比拼。
他們還會贊助競賽,如果你寫出最好的解決方案,就可以拿到獎勵!
2
2
HackerRank


HackerRank 側重於**“電腦科學”**主題,在演算法、數學、SQL、函數語言程式設計、AI 等眾多不同領域為挑戰者們提供了相應的程式設計題目。在這裡,你可以:
-
直接線上完成挑戰線上。
-
HackerRank 針對每一項挑戰都專門成立了討論區與排行榜。而它提供的大多數挑戰都來自於社論,讓你瞭解挑戰內容的同時,思考如何提出解決方案。並且除了挑戰對應的這篇社論,你目前無法檢視其他挑戰者在 HackerRank 上的解決方案。
3
3
LintCode


LintCode 收集了網上一些最常見、最高頻的程式設計題目,支援中英雙語:
-
相比其他的一些網站,LintCode 的程式設計挑戰覆蓋的領域更多,包括演算法、資料結構,人工智慧,系統設計等眾多領域。
-
如果你在準備軟體工程面試,在 LintCode 刷題是很有幫助的,它的每道題都有詳細的解答,能幫助你更好地理解。
-
LintCode 有一個模擬面試專欄,精選 Facebook, Amazon, Google, Linkedin 等IT企業的面試題,真實還原面試流程,專門為求職者準備。
-
LintCode 有《Cracking the Coding Interview》《劍指offer》等演算法學習書籍的配套習題庫,可供初學者練習。
-
LintCode 還有自己舉辦的程式設計比賽,很多演算法愛好者會在這裡PK,切磋技藝。
4
4
GeeksforGeeks


對於**“演算法和資料結構”**主題,GeeksforGeeks 有很多很好的文章、解釋和程式碼解決方案。在這裡,你可以:
-
在線上編輯器中進行挑戰。
-
在該網站的程式碼解決方案中,你會看到解題者是如何將一個複雜的問題分解成更簡單的部分,並提出程式碼解決方案的。
如果你正在準備一個軟體工程的面試,也可以用這個網站準備和複習更難的演算法問題。
5
5
Coderbyte


Coderbyte 提供了200多種程式設計挑戰。在這裡,你可以:
-
使用10種程式語言中的一種進行線上挑戰。
-
看到網站釋出的大多數挑戰的官方解決方案。
-
檢視該網站其他80萬使用者為同一挑戰提供的解決方案。
除了程式設計挑戰之外,Coderbyte 還提供演算法和資料結構、Web開發等程式設計訓練營的預備課程以及一系列關於面試準備的相應課程,被很多頂級程式設計訓練營所推薦。
6
6
Codewars


Codewars提供了大量由他們自己的社群提交和編輯的程式設計挑戰,在這裡,你可以:
-
使用多種程式語言像打遊戲升級一樣進行挑戰。
-
通過線上編輯器直接完成每項挑戰。
-
通過實戰訓練來提升程式設計開發技能。
-
檢視關於每個挑戰的討論以及每個使用者解決方案。
-
通過挑戰來獲得分數和排名。
7
7
CodeFights


CodeFights提供了一組程式設計挑戰,在這裡,你可以:
-
在線上編輯器中進行挑戰。
-
在專門的使用者挑戰論壇中參與討論。
-
與**“機器人”**比拼!
8
8
CodinGame


CodinGame這個網站很特別,他跟一些競爭性程式設計網站有所不同。它不是簡單地通過生成一組輸出來實現程式設計挑戰,而是以玩遊戲的方式通過線上程式設計完成相應挑戰。這是一個很棒的網站,有些遊戲非常有趣,並且遊戲介面和圖形設計非常精美。
9
9
CodeChef


CodeChef是一家印度的程式設計競賽網站,它提供了數百個挑戰供你選擇。在這裡,你可以:
-
通過線上編輯器來進行程式設計。
-
根據自身的程式設計能力,選擇不同技術等級不同類別的程式設計挑戰。
-
在他們建立的程式設計師社群中進行交流併為論壇編寫教程。
-
參加 CodeChef 的程式設計競賽。
10
10
Codeforces


Codeforces 是一家總部位於俄羅斯的競賽程式設計網站,它會定期舉辦線上比賽,並且競賽選手是世界上一些最優秀的程式設計師。他們的挑戰通常需要用到高等數學和演算法,如果你是一個程式設計新手,他們的挑戰很可能對你來說難度比較大。

精英程式設計師交流社群,定期釋出面試題、面試技巧、求職資訊等
