[Перевод] 10 самых популярных сайтов для соревнований программистов на начало 2018 года
В конце 2016 года была опубликована аналогичная статья. С тех пор список был обновлен на основе наблюдений и анализа нескольких ресурсов (постов в популярных блогах, обсуждений на Quora, поисковых запросов в Google и обсуждений на форумах, таких как reddit/learnprogramming и Hacker News).
Предлагаем вниманию читателей обновленный список на 2018 год, который включает в себя 10 платформ, которые по личному мнению автора являются лучшими соревновательными площадками для программистов и содержат ресурсы, которые могут помочь начинающим и Intermediate-разработчикам совершенствовать свои навыки, подготовиться к собеседованию и продвинуться по своей карьерной лестнице.
На этих сайтах также можно просто посоревноваться с коллегами или развлечься, решая интересные головоломки. Порядок составления списка основан лишь на уровне сложности заданий: от начального до продвинутого.
1. Coderbyte
Beginner — Intermediate
Coderbyte предлагает 200+ соревновательных задач, которые вы можете решать в онлайн-редакторе, используя 10 различных языков программирования. Вы сможете ознакомиться с официальными решениями для некоторых задач, а также найти более 800 тысяч пользовательских решений. Coderbyte рекомендован командами многих известных образовательных курсов по программированию благодаря коллекции задач, полезных для подготовки к собеседованию.
2. Codewars
Beginner — Intermediate
Codewars предоставляет разработчиками большую коллекцию интересных задач, созданных сообществом платформы. Вы можете выполнять задания непосредственно в online-редакторе, используя один из 20 языков программирования. Зарабатывайте очки и поднимайтесь в рейтинге. Вы можете просмотреть обсуждение как для каждой задачи, так и для пользовательский решений.
3. CodeFights
Beginner — Intermediate
CodeFights — платформа, состоящая из коллекции задач, которые можно решать в онлайн-редакторе, и форума пользователей для обсуждения возникающих проблем. Отличительной особенностью является функция «Company Bots». Это возможность конкурировать с «ботами», которые были запрограммированы инженерами крупных технологических компаний. Вы когда-нибудь задумывались, насколько ваши навыки программирования соответствуют стандартам инженеров из Uber, Dropbox, Quora и других высокотехнологичных компаний? Посоревнуйтесь с этими ботами и узнайте. Не думайте, что это будет легко. Чтобы сделать соревнование более интересным и сложным, каждый из вопросов, с которым вы столкнетесь, настраивается под определенную компанию. Например, в соревновании с Uberbot, ожидайте заданий, связанных с алгоритмами маршрутизации и планирования.
4. CodinGame
Beginner — Intermediate
Этот сайт отличается от перечисленных выше тем, что вместо обычного решения, на CodinGame вы пишете код непосредственно для того, чтобы сыграть в онлайн-игру. Это увлекательно и некоторые из игр очень забавны (см. пример). Игровая графика хороша, а пользовательский интерфейс редактора/игры очень плавный. В целом, это отличный веб-сайт для новичков, изучающих программирование.
5. TopCoder
Intermediate — Advanced
TopCoder — одна из первых платформ для соревнований по онлайн-программированию. Популярные Single Round Matches происходят несколько раз в месяц в определенное время. Это возможность посоревноваться с другими разработчиками. Вот несколько тем, которые могут быть затронуты.
Помимо решения головоломок для развлечения, предлагаются и соревнования, в которых вы можете выиграть призы от спонсоров (реальных компаний) за лучшее решение.
6. HackerRank
Intermediate — Advanced
HackerRank сосредоточен на вопросах из многих областей информатики, таких как алгоритмы, математика, SQL, функциональное программирование, AI и многое другое (см. пример). Для каждой задачи создается обсуждение и таблица лидеров. Большинство задач начинаются с предисловия, в котором глубже описывается проблема и то, как подойти к ней, чтобы придумать решение.
Крупные работодатели, которые сотрудничают с ресурсом — Cisco, VMware, Red Hat, Dropbox и еще более 1000 других компаний, имеют возможность отфильтровать кандидатов, провести с помощью платформы техническую часть собеседования и увидеть соискателя «в деле».
7. LeetCode
Intermediate — Advanced
В LeetCode собрана одна из лучших коллекций задач на применение алгоритмов. Темы, которые охватывают задания, требуют знания структур данных (binary trees, heaps, linked lists, etc.) Задачи более сложные, чем на других сайтах, но они окажутся очень полезными, если использовать их при подготовке к собеседованию.
Раздел «Mock Interview» (Пробное интервью) специально предназначен для подготовки к собеседованию. Также проводятся соревнования по программированию, и есть раздел статей, который поможет вам лучше понять определенные задания.
8. CodeChef
Intermediate — Advanced
CodeChef — это некоммерческая образовательная инициатива индийской софтверной компании. Это глобальное сообщество программистов, объединенное целью обучения и дружеской конкуренции в рамках платформы для соревновательного программирования.
Каждый месяц CodeChef проводит три конкурса и раздает призы победителям в качестве поощрения. Кроме того, платформа открыта для всего сообщества разработчиков, которые могут проводить свои собственные конкурсы. Организации по всему миру в среднем проводят 30+ внешних турниров и конкурсов на CodeChef.
9. GeeksforGeeks
Intermediate — Advanced
GeeksforGeeks имеет лучшую коллекцию статей, объяснений и решений по теме алгоритмов и структурам данных. По ссылке вы можете увидеть пример того, как сложный вопрос разбивается на более простые части, объяснение и код решения.
Если вы готовитесь к собеседованию, советуем вам использовать этот сайт, чтобы подготовиться и освежить сложные темы в изучении алгоритмов.
10. Codeforces
Advanced
Codeforces — российская платформа для соревнований по программированию, на которой регулярно проводятся турниры, в которых участвуют одни из лучших программистов в мире. Если вы начинающий кодер, задания, скорее всего, будут слишком сложны для вас — вот пример из недавнего соревнования. Для решения этих задач обычно требуются передовые знания в области математики и алгоритмов.
Цель Codeforces — предложить разработчикам удобную платформу для создания, проведения и обсуждения соревнований по программированию. В платформе есть элементы социальной сети, это больше чем новостной портал и больше чем online judge. Вы сможете самостоятельно подготовить и провести соревнование. Вы сами решите, будет оно открыто для всего мира или будет локальным соревнованием вашего университета.