CodeGym /Java 博客 /随机的 /编码作为一项运动。竞争性编程的简短指南
John Squirrels
第 41 级
San Francisco

编码作为一项运动。竞争性编程的简短指南

已在 随机的 群组中发布
我们人类在所做的每一件事上都倾向于相互竞争,这可能是我们作为一个物种成功的关键原因之一。编程也不例外。由于编码是一门相当复杂、多层次且要求很高的学科,因此编码人员热衷于相互竞争以找出谁最有能力也就不足为奇了。 编码作为一项运动。 竞争性编程简短指南 - 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