CodeGym /Java Blog /Toto sisi /編碼作為一項運動。競爭性編程的簡短指南
John Squirrels
等級 41
San Francisco

編碼作為一項運動。競爭性編程的簡短指南

在 Toto sisi 群組發布
我們人類在所做的每一件事上都傾向於相互競爭,這可能是我們作為一個物種成功的關鍵原因之一。編程也不例外。由於編碼是一門相當複雜、多層次且要求很高的學科,因此編碼人員熱衷於相互競爭以找出誰最有能力也就不足為奇了。 編碼作為一項運動。 競爭性編程簡短指南 - 1

什麼是競爭性編程?

競爭性編程是一種智力運動,涉及參與者利用他們的編程技能和 CS 學科(如算法和數據結構)的知識來解決編碼問題. 此類比賽的參與者,也稱為運動程序員,需要在各種限制下並按照提供的規範編寫代碼。為了獲勝,運動程序員需要編寫代碼來解決所提供的任務。獲勝者是根據許多標準宣布的,例如花費的時間、最終代碼的質量、執行時間、程序的大小等。許多大型科技公司,如穀歌、Facebook、亞馬遜、微軟等,支持競爭性編程並參與組織比賽,同時還聘請有才華的體育程序員。國際大學生程序設計競賽(International Collegiate Programming Contest,簡稱ICPC)起源於1970年代,被譽為歷史最悠久的編程競賽。

競爭性編程的好處

以下是作為專業編碼員參與競爭性編程可以獲得的好處的快速列表。
  • 提高編程技能,如邏輯和算法、基礎數學、數據結構、計算思維、調試等。
  • 對您的專業組合和簡歷的重要補充。
  • 有機會被市場領導者註意到並獲得一些有吸引力的工作機會。
  • 練習編碼不同方面的方法。
  • 開發人員社區中的社交聯繫和網絡。
  • 令人興奮和競爭激烈的比賽。

有競爭力的編程平台

這些是 Internet 上可用的一些最流行的競爭性編程平台。 CodeChef 是一個競爭激烈的編程社區,每個月都有數百個挑戰和幾個新的競賽。 Codewars 是一個具有編程挑戰的編碼在線社區。允許您提交自己的挑戰,其他用戶將對其進行評估。 那裡最受歡迎的競爭性編程平台之一。它每年定期舉辦編程馬拉鬆比賽,並提供數十種挑戰。 HackerEarth 有超過 10,000 個不同難度的編程挑戰,每個人都可以挑戰。 Codeforces 是俄羅斯的一個編程競賽平台,有數百個編程挑戰,經常舉辦各種競賽。 提供計算機科學不同領域的編程挑戰,並舉辦年度 Codesprint 和其他競爭性編程競賽。

競爭性編程比賽

每年都會舉辦數十場編程競賽。這裡有一些最受歡迎和最負盛名的。
  1. ICFP編程競賽
自 1998 年以來每年 6 月或 7 月左右舉行的國際編程競賽。
  1. Topcoder 馬拉鬆比賽
在具有可觀現金獎勵的競爭性編程社區競賽中很受歡迎。Topcoder 的馬拉松通常持續兩週左右,讓參與者有機會改進他們的解決方案。每場比賽都有不同的評分機制,將輸出每個解決方案的質量。
  1. CodeChef 長期挑戰
CodeChef Long Challenge 是一項持續長達 10 天的月度競賽。
  1. 臉書黑客杯
Hacker Cup 是 Facebook 的年度公開編程競賽。它向世界各地的參與者開放,由多輪比賽組成,獎金相當可觀。
  1. 谷歌代碼挑戰賽
Google Code Jam 是由 Google 主辦和管理的國際編程競賽。自2003年起每年舉辦一次。
  1. 美國計算機科學聯盟 (ACSL)
美國計算機科學聯盟 (ACSL) 為中學生和高中學生組織計算機科學和編程競賽。
  1. 國際大學生程序設計競賽 (ICPC)
國際大學生程序設計競賽是面向大學生的算法程序設計競賽。最古老的競爭性編程競賽之一。

提示和建議

讓我們以一些提示和建議作為結尾,如果您願意參加競爭性編程,這些提示和建議可能會有所幫助。
  • 選擇一種編程語言。
這是很明顯的,但仍然值得一提。您應該從選擇一種您最熟悉的編程語言開始,以便在競爭性編程中使用它。C++、Java、Python 是大多數競爭性編程競賽中最常見和普遍接受的語言。
  • 深入了解數據結構和算法。
至少了解數據結構和算法的基礎知識對於成功解決競爭性編程挑戰至關重要。查看我們關於算法數據結構的文章,以獲取有關這些主題的學習材料的鏈接。
  • 找到您的編碼風格和應對編程挑戰的方法。
競爭性編程挑戰的參與者需要解決的大多數挑戰都有不止一種解決方案。目標是提出最佳解決方案。因此,專注於開發您獨特的編碼風格和方法來應對這些編程挑戰是有意義的,這將使您能夠在時間和執行代碼所需的香料方面編寫最佳解決方案。
  • 嘗試不同的競爭性編程網站和競賽。
即使在所有競爭性編碼競賽和挑戰中,您都需要解決算法問題,但這些問題的類型和對參賽者的要求可能在許多方面有所不同,從方法到難度和時間敏感性。因此,建議至少嘗試幾個不同的問題,以便總體上更好地感受競爭性編程。
  • 保持定期解決編程問題。
定期練習對於幾乎任何事情的成功都很重要,但在競爭性編程中尤其如此。培養正確的心態和解決編碼問題的方法需要大量的定期培訓。您不必將自己局限於上面列出的專用平台,尤其是在剛開始時,競爭性編程問題可能感覺太具有挑戰性。您可以使用 CodeGym 及其 1200 多個 Java 編碼任務進行練習,還可以使用編碼遊戲技術面試準備平台
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION