原文:The Most Popular Coding Challenge Websites,作者:Md. Fahim Bin Amin
如果你想提升你的分析能力,没有比解决问题更好的方法了。
如果你是一个程序员,那么这是你应该为自己做的事情。程序员几乎每天都需要处理各种各样的问题。
最重要的是,以高效的方式解决问题可以使你的工作效率大大提高。而解决具有挑战性的问题有助于我们做到这一点。
如果你喜欢,你也可以在 YouTube 上观看这个完整的 视频 🎥
为什么要发展你的问题解决能力
这些天来,技术正在迅速发展,我们几乎每天都能看到一些惊人的变化和改进。
每当我们谈论技术时,一个热门词汇就会出现在我们的脑海中--那就是编码或编程。现在,编码/编程不仅仅是使用不同的编程语言来解决不同种类的问题,而是你作为一个开发人员所要做的很大一部分。
网络开发、机器学习、人工智能、增强现实、应用开发和许多其他领域都需要强大的解决问题的能力。
有许多流行的网站通过提供各种类型的问题来帮助你做到这一点,你需要运用你的分析和数学技能,用编程语言解决每个问题。
我将为你提供一个编码挑战网站的清单,这些网站将帮助你一天天提升自己。
请记住,这些网站对每个人都有用,无论你是编码挑战的新手还是专业的程序员等等。
目录
- beecrowd
- HackerRank
- Codeforces
- LeetCode
- Kaggle
- CodeChef
- AtCoder
- Topcoder
- Coderbyte
- Project Euler
- Codewars
- SPOJ
- CodinGame
- GeeksforGeeks
- Toph
- LightOJ
- Exercism
- Online Judge
- HackerEarth
- Code Jam - Google's Coding Competitions
- ICPC
最佳编码挑战网站
1. beecrowd
beecrowd 非常适合那些刚刚开始的适合初学者,来解决编码难题的网站。它曾经被命名为URI,所以有可能你已经熟悉 URI 这个名字了。
如果你想解决特定类别的问题,那么你很幸运,因为这个网站也提供这个服务。
下面是一个字符串问题集的图片。你还可以通过 ID(#)、名称(NAME)、主题(SUBJECT)、已解决(SOLVED)等过滤问题。初学者非常喜欢这些功能。
在这个网站上,你还可以参加不同的编程比赛,并查看你的全球排名、全国排名和全校排名。
另外,你还可以查看你的进度,注册后过了多少天,你解决了多少问题,你得到了多少分数,等等。
你还会得到一个漂亮的个人资料页面,看起来也很美。😊我在刚刚开始 CP(竞争性编程)之旅的时候,曾经在这个网站上练习解题。更不用说,在我的大学里,我在 1250 名学生中获得了第三名的成绩。🎉
你也可以看看我的 beecrowd profile here.
2. HackerRank
HackerRank 是目前最受欢迎的编码练习网站之一。这对每个人来说都是一个不错的平台,尤其是初学者。
该网站看起来很漂亮而且很精致,第一次来这里的用户在浏览整个网站时不会感到费力,所以这绝对是一件好事。
HackerRank 为公司和开发人员提供不同的入口。如果你是为了解决问题而学习,那么你会选择 For Developers 部分。
如果你想学习任何特定的主题或编程语言,那么这个网站是你开始学习的最佳场所。你可以按主题进行准备。你还可以参加他们的认证考试,在人群中脱颖而出。我已经通过了他们的 Python(基础)认证考试
你也可以从那里选择准备工具包,如果你愿意,可以在面试前做好准备。 此外,你还可以参加编程竞赛。
在这里,你还会得到一个漂亮的个人简介页面。你可以从 HackerRank 这里查看我的简介。
3. Codeforces
Codeforces 是世界上最常用和最知名的编码挑战和练习网站之一,它由 Telegram 赞助。特别是如果你知道 CP(竞争性编程),那么你很有可能听说过很多关于这个网站的事情。
虽然对于新人来说,这个网站可能看起来有点不同,但你不需要太多的时间来适应它。你可以通过解决不同类别、不同难度的问题来训练自己。
有竞争力的程序员根据他们在编程比赛中的成功结果有等级。如果你听说过红色程序员/紫色程序员等,那么肯定是来自 Codeforces。
你可以从上面的图片中了解到 Codeforces 的排名系统。更多细节,你可以查看这篇文章。
Codeforces 每周定期安排比赛,它们被分为第一组、第二组、第三组和第四组。他们还安排全球回合和教育回合竞赛。你可以直接从这里获得竞赛的时间轴。
Codeforces 还在其网站上提供了一个很好的用户资料。你也可以查看我的。
4. LeetCode
如果你熟悉FAANG(Facebook、Apple、Amazon、Netflix、Google)的流行语,那么你肯定应该知道这个网站 如果你想为 FAANG 等大型巨型科技公司的编码面试做练习,那么他们都会做leetcoding。
你可能认为我在上面这段话中打错了字。不,我没有。LeetCode 在那些以 FAANG 为目标的人和那些正在努力提高解决问题的能力的人中已经变得如此受欢迎。参加 LeetCode 上的竞赛已经很普遍,人们称之为 leetcoding!
在这里,你可以解决很多问题,并通过列表、难度等级、状态和标签来筛选问题。
你还可以选择有关数组、字符串、哈希表、动态规划编程和其他许多类别的问题。
正如我上面提到的,你也可以参加编程比赛。唯一使 LeetCode 不同的是,它是基于算法练习的。是的,LeetCode 和其他编码网站不一样,因为它只关注算法练习。
在这里,你不需要提供解决问题的完整代码,你只需要用任何流行的语言提供一个有效的算法来解决这个问题就可以了。
你还可以看到你的代码在其他人中的表现,其实现的算法需要多少空间和时间,等等。
最重要的是,LeetCode 有一个很棒的讨论组,人们在那里谈论他们的问题、解决方案、如何改进他们的算法、如何提高他们代码的效率等等。这是 LeetCode 最强大的功能之一。
LeetCode 的一个悲哀之处在于,你不会免费获得每一个功能!这一点是真的。是的,这是真的。你必须按月或按年付费才能解锁它的所有功能。有很多问题你会发现在网站上被锁定。如果你不购买高级计划,你就不能解锁它们。
如果你刚刚开始你在 LeetCode 上的算法之旅,那么实际上你不需要担心他们的高级计划,因为免费版本对你来说已经足够了。
后来,如果你想变得更加认真,那么支付他们的高级订阅费用将是一个大问题,因为你将获得大量的更多的功能。这非常有帮助,包括像顶级面试问题、顶级 FAANG 问题、视频解释等等。
你还可以在 LeetCode 上得到一个漂亮的个人资料页。你可以看看我的。
5. Kaggle
在写这一节之前,我很困惑,因为 Kaggle 不是一个典型的编码练习网站。这个网站基本上是为数据科学服务的,它是目前最受欢迎的网站之一。
Kaggle 是一个面向数据科学家和机器学习爱好者的在线社区平台。
它是一个流行的众包平台,吸引、培养、训练和挑战来自世界各地的数据科学和机器学习爱好者,一起解决众多的数据科学、预测分析和机器学习问题。
因此,如果你对数据科学感兴趣,那么你应该查看这个网站。在这里,你可以查看别人的笔记本,提交你的笔记本,参加比赛,改进数据集,等等。
Kaggle 允许用户与其他用户协作、查找和发布数据集、使用集成 GPU 的笔记本以及与其他数据科学家竞争以解决数据科学挑战。
另外,如果你对数据科学感兴趣,但不知道从哪里开始,请不要担心!Kaggle 已经为你提供了支持。 你可以查看他们的学习部分,那里有许多免费课程,可以从一开始就教你很多东西。
✨ 提示: 如果你想学习更多,那么我建议你完成 freeCodeCamp 的 YouTube 频道的数据科学播放列表。
Kaggle 还提供排名和一个漂亮的用户资料。你可以查看我的资料。
6. CodeChef
CodeChef 是另一个像 HackerRank 一样受欢迎的印度网站,在那里你可以解决很多问题,参加比赛,等等。
你可以根据不同的类别过滤问题,并使用任何最流行的编程语言来解决它们。
他们的网站上还有一个学习环节,你可以学习如何以系统的方式解决问题。这是很有帮助的,特别是对于初学者。
在他们的学习部分,你可以选择自学、指导学习和疑问支持。其中一些是免费的,但在一些课程中,你必须在开始学习之前付费。
这个网站还提供用户排名,包括全球排名和全国排名。他们还在网站上提供了一个用户档案。你可以查看我的,虽然我现在在大多数网站上都不活跃。😅
7. AtCoder
AtCoder 是一个设在日本的编程竞赛网站。Makoto Soejima(rng_58)是 Topcoder 的前管理员和问题作者之一,他是 AtCoder 的创始成员。
在这个网站上,你可以参加不同的编程比赛。他们在周六和周日定期举行编程比赛。此外,你还可以解决以前举行的编程比赛的问题。
我看到很多人经常参加编程比赛,并通过解决 AtCoder 上的问题定期解决以前比赛中使用的问题。我也试过一段时间来检查代码的效率,说实话,这确实很有效。
在这里,你还可以查看全球排名。在这里,你也会得到你自己的个人资料页,你和其他人可以看到你的全球排名等等。
8. Topcoder
Topcoder(原名 TopCoder)是一家众包公司,拥有一个由设计师、开发人员、数据科学家和竞争性程序员组成的开放式全球社区。Topcoder 为社区成员的项目工作支付报酬,并向企业、中型和小型企业客户出售社区服务。
在这里,你可以赚钱、学习,并在他们的 MVP 计划中做更多的事情。你可以参加五个不同的方向,成为副手(copilot),成为评论员(reviewer),还可以通过Topcoder Gig Work获得自由工作的合同,以获得收入。
我个人觉得,这个网站对初学者来说,有些难度。你可以在我为你制作的 YouTube 视频中获得更多细节。
9. Coderbyte
Coderbyte 有一个庞大的 你可以解决的题集,。他们还提供一个具有挑战性的库,包括入门课程,面试包,职业资源等。
要获得所有的功能,你需要向他们购买一个订阅计划。我个人非常喜欢他们的面试包。
在这里,你还会得到一个个人简介页。
10. Project Euler
Project Euler 是一系列具有挑战性的数学/计算机编程问题,解决这些问题需要的不仅仅是数学上的见解。
Project Euler 是一个解决数学挑战问题的伟大网站。但解决这个网站上的问题需要的不仅仅是简单的数学知识。
如果你想用更多的方法来解决数学问题,那么这个网站就会派上用场。
11. Codewars
Codewars 是一个针对所有编程水平的人的编码挑战网站。它声称有一个超过 300 万的开发者社区。
这个网站最大的好处之一是,它跟 LeetCode 一样高度关注算法。此外,如果你的目标是非常擅长编写简洁高效的程序,那么这个网站可以成为你的一大财富。
在 Codewars,你会经常看到Kata和Kyu。
Kyu(或 Kyū)表示距离大师级(Dan)的距离。这就是为什么他们往下数。一旦你达到了大师级(dan),我们就会往上数。武术中的黑带是丹级(大师级)。
在 Codewars 中, kata 是以提高技能和技术为重点的代码挑战。有些是训练编程基础知识,而有些则侧重于复杂问题的解决。另一些是旨在测试你创造性解决问题的能力,而另一些则是基于现实世界的编码场景。
如果你想知道更多关于 Codewars 的排名系统是如何工作的,那么只需查看他们的文档.
在 Codewars 上,你也会得到一个像我的那样漂亮的个人资料页。请记住,我在这个网站上没有解决过那么多问题,因此我的个人资料页看起来很空。😅
此外,我发现他们的排行榜页面相当有趣。
12. SPOJ
SPOJ 是一个包含大量问题供人解决的网站。它声称有 315,000 名注册用户和超过 20,000 个问题。
根据 GFG 的说法,
你可以尽最大努力提交的问题的解决方法,并关注或检查这里的优秀编码员的提交。一旦你解决了大约 50-70 个问题并建立了一些信心,你可以参加不同的比赛。
他们的问题集也是相当有趣的。
你还会在这里得到一个漂亮的用户资料页面,你可以用它来展示你解决问题的能力。
13. CodinGame
在 CodinGame,你可以通过超过 25 种编程语言的有趣练习来提高你的编码技能。
对于中级和高级软件工程师来说,这是一个很好的网站,可以在继续保持其技能的同时获得乐趣。此外,挑战是游戏化的,多人访问意味着用户可以挑战朋友和同事。
14. GeeksforGeeks (Popularly known as GFG)
你可能想知道为什么我把 GFG 包括在这篇文章中,因为它只提供算法、教程等。
嗯,这并不是他们提供的全部。是的,GFG 因其教程、算法等而相当受欢迎,但他们也提供了一个不错的问题解决平台。
你也可以按照你自己的想法来过滤问题。
你还将获得你的个人资料页面,你可以在 GFG 网站上展示你解决问题的进展。
15. Toph
有竞争力的程序员参加编程比赛,并在这个网站上解决许多问题。这个网站对孟加拉国人来说有点特别,因为孟加拉国的大学通过它安排了许多编程比赛。
你可以在这个网站上解决不同类别的问题,他们还为你提供一个漂亮的个人资料页面。他们还根据你在编程比赛中的表现提供排名。
如果你是一个有解决问题能力的初学者,那么这个网站可以帮助你在开始你的问题解决之旅。
16. LightOJ
在 LightOJ 中,你可以解决很多分类的问题。它是高度基于解决算法问题的。他们的问题分类如下:
- LightOJ Volumes (卷轴)
- Warm-Up (热身)
- Advanced Search Techniques (高级搜索技术)
- Database (数据库)
- Data Structures (数据结构)
- Divide And Conquer (分而治之)
- Dynamic Programming (动态规划)
- Fast Fourier Transform (快速傅里叶变换)
- Flow/Matching (流程/匹配)
- Game Theory (游戏理论)
- Geometry (纹理)
- Graph Theory (图论)
- Greedy
- Math (数学)
- Matrix (矩阵)
- Parsing/Grammar (解析/语法)
- Recursion/Branch and Bound (递归/分支和绑定)
- String (字符串)
他们还为你提供了一个漂亮的个人资料页面,你可以看到你的活动。这可能看起来很奇怪,但有时我发现这个网站在某些情况下比 LeetCode 更好。此外,你在这个网站上所做的一切是完全免费的!
17. Exercism
你可以通过他们独特的学习、实践和指导的下来发展你在 57 种不同的编程语言中的编程流畅度。
Exercism 是完全免费的,它是由像我们这样的人建立的。你也可以向他们捐款或捐物,以支持他们免费的良好服务。
他们还提供了一个非常漂亮的用户资料页面,也显示了你在他们网站上所做的一切,从发布到维护。
在他们的 曲目(tracks)页面上,你会得到一个 57 种不同编程语言的列表,你可以在这里开始练习。
在他们的网站上解决问题对我来说似乎超级有趣。我真的很喜欢他们管理网站的方式。
18. Online Judge (Commonly known as UVa)
这是一个最古老的解决编程相关问题的网站之一。我仍然觉得它是一个对初学者来说非常难的网站。该网站的用户界面和导航也非常老旧。
这里所有的问题都有一个 PDF 文件。如果你想解决问题,你需要下载问题的 PDF 文件,因为他们不提供问题描述的直接预览。
他们的网站 上有很多题集。我发现现在仍然有很多用户在使用这个网站。因此,我在这里提到了它。
19. HackerEarth
HackerEarth 是一家印度软件公司,但总部设在美国旧金山,提供企业软件,帮助组织满足技术招聘需求。HackerEarth 被用来进行技术技能评估和远程视频面试。
你可以从他们的 实践页面练习你的问题解决技能。此外,你还可以从他们的 挑战 页面参与编程挑战和黑客马拉松。
他们的面试准备部分相当惊人。你可以参加 Adobe Coding Test、Facebook Coding Test 和 Amazon Coding Test 的模拟评估。
他们还为每个人提供了一个漂亮的用户资料。
20. Code Jam - Google's Coding Competitions
Google Code Jam 是一个由谷歌主办和管理的国际编程比赛。该比赛开始于 2003 年。比赛由一组算法问题组成,必须在固定的时间内解决。
如果你有兴趣参加 Code Jam 竞赛,那么他们的档案部分,为你提供了大量的资源,你可以在那里获得早期的问题并进行练习。
他们的比赛也提供了很多奖金,例如:
在数千名参赛者中,只有前 25 名将前往世界总决赛,争夺世界冠军头衔和高达 15000 美元的现金奖励。而且还会有很多其他的奖品--排名前 1000 名的参赛者将赢得一件独家的 Code Jam 2022 的 T 恤衫。
21. ICPC - International Collegiate Programming Contest
ICPC 是世界上最著名的编程竞赛之一。
国际大学生程序设计竞赛,被称为 ICPC,是世界各大学之间一年一度的多层次竞争性编程竞赛。
谁有资格参加 ICPC?
ACM/ICPC 是一个以团队为基础的比赛,对参赛者有一定的要求:只有大专生和不超过 24 岁的研究生一年级学生才有资格;每个团队由三名成员组成。一个人最多可以参加两次决赛,最多可以参加五次区域赛。
个人观点
如果你是一个完全的初学者,那么从beecrowd 开始。如果你想在学习特定编程语言的同时开始解决问题,那么就从HackerRank 开始。
在 beecrowd 或 HackerRank 上解决了差不多 50 多个问题后,开始在Codeforces上解决问题。第一次,你无法在 Codeforces 上的编程竞赛中做得那么好,这完全没关系,这是很自然。你只需要定期尝试。这些问题对你来说可能相当难,但在不断解决问题后会一天天变得容易。
你可以在开始在 Codeforces 上解题的那天参加AtCoder。你也可以试试CodeChef,但我觉得在这种情况下 Codeforces 已经足够了。
这将为ICPC 和Code Jam做准备。不要忘记解决 Code Jam 上的早期问题。
如果你想获得数据科学方面的专业知识,那么只要去参加Kaggle。
如果你想获得算法方面的专业知识,那么LeetCode和LightOJ是你唯一的地方。GeeksforGeeoks在这方面也会帮助你。
对于 LeetCode,从Nick White获得一些帮助。他的LeetCode 解决方案播放列表到今天为止有 189 个视频,你会从他那里学到很多东西,相信我!
另一个很好的资源是Neetcode,在这里你可以从 LeetCode 获得策划的问题和它们的解决方案。官方的Neetcode 的 YouTube 频道也是一个很好的频道。
其他网站
你可能会发现下面的网站也很有用!
⭐ StopStalk
这个网站从各种竞争性网站(如 Codeforces、SPOJ、HackerRank、Timus 等)检索你的朋友最近提交的作品,并在一个地方显示所有的作品。你可以从这里 查看我的 StopStalk 简介。
⭐ CodersRank
这是一个为帮助开发人员寻找工作和职业发展而建立的平台。在这里,你的 CodersRank 档案可以作为你的编码知识的证明记录。
你必须在这里从 GitHub 连接你的私人和公共存储库,以生成你真正的 CodersRank 简介。你也可以从 这里 查看我的 CodersRank 简介。
总结
感谢你阅读这整篇文章。我希望它对你的问题解决之旅有很大的帮助,无论你是一个有经验的开发者还是刚刚开始你的学习之旅。
另外,如果你想分享你的宝贵反馈,或者想和我聊天,那么你可以在 Twitter和 LinkedIn 联系我。
如果你对开源感兴趣,那么你可以在 GitHub 上关注我,因为我在那里非常活跃。
如果你喜欢编程相关的内容,那么我也建议你订阅我的 YouTube 频道,因为我尽力在那里发布高质量的内容。:)