10 самых популярных сайтов для соревнований программистов на начало 2018 года

https://medium.com/coderbyte/the-10-best-coding-challenge-websites-for-2018-12b57645b654
  • Перевод


В конце 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. Вы сможете самостоятельно подготовить и провести соревнование. Вы сами решите, будет оно открыто для всего мира или будет локальным соревнованием вашего университета.

Cloud4Y 247,78
#1 Корпоративный облачный провайдер
Поделиться публикацией
Комментарии 13
  • –2
    Из 10 штук ни одного русскоязычного… Печальная статистика.
    • +3
      Ээээээ… Codeforces. Создана Мишей Мирзаяновым. Русскоязычен. Почти все задачи формулируются на двух языках — русском и английском.
      Мне кажется, вы несколько переутомились и устали в это прекрасное январское утро. Вам стоит отдохнуть.
      • +3
        … и немного подтянуть английский — потом еще спасибо себе скажете;
    • +3
      Добавлю:
      Sphere Online Judge
      Code Abbey
      Project Euler 1/3 доступна на HackerRank и на Codewars
      POJ Peking University
      CodeEval отчасти
      Kaggle тоже можно использовать для практики
      Checkio
      Exercism

      • +3
        Что насчет acm.timus.ru? Когда то был весьма популярен.
        • 0
          Можно добавить SoloLearn
          • 0

            А в topcoder уже можно решать задачки без участия в соревнованиях?
            Ну и интерфейс — когда я в последний раз туда заходил, он был невероятно ужасен, хуже только фейсбук.

            • 0
              Попробовал codewars. Дошел до 5kyu и надоело. Причем надоело даже раньше, чем бросил раньше, какое-то время еще писал задачи для прокачки рейтинга. Проблема, что все задачи очень похожи, можно выделить всего несколько типов, причем абсолютно все легко решаемые, с определенным уровнем подготовки, а сложность, зачастую, лишь показатель того сколько ты убьешь на написание кода времени. Это на всех ресурсах так или есть проекты с задачами поинтересней?
              • +1
                Посмотрите на вторую половину списка, где сложность помечена как Intermediate — Advanced. На этих сайтах есть как базовые задачки, так и весьма любопытные.
                В частности Hard и выше задачки на Hackerrank, Hard задачки на Leetcode, Medium и выше на Codechef.
              • +1
                Есть полностью русскоязычный acmp.ru/index.asp?main=tasks и там много прикольных алгоритмических задач. Да в основном рассчитан на учащихся, но задачи отсортированы по тематикам и сложности. Выбор языков не так уж и широк, но для начинающих вполне достаточен.
                • 0
                  По-моему, решение задачек на этих сайтах сродни решению сканвордов и кроссвордов. Неужели кому-то в IT не хватает реальных задач?
                  • +1
                    Да, интервьюирующим программистов.
                    • +3
                      К сожалению, некоторые люди решают реальные задачи через заднее место, абсолютно не задумываясь о том, что же они творят. И им бы хорошо было бы как раз порешать задачи начального/среднего уровня, чтобы не делать банальных глупостей.
                      Как пример, реальная ситуация, которую пришлось решать. Мобильное приложение умирало при добавлении нескольких тысяч элементов в список. Вскрытие показало, что элементы добавляются по одному. На каждый вызов элемента вызывается сортировка всего списка. На каждый вызов метода сравнения в компараторе вызывается полный просмотр другого списка поменьше, на 10-100 элементов). Теперь посчитаем сложность при размере одного списка N и второго M.
                      Добавляется N элементов. Сортировка на каждое добавление NlgN, итого уже (N^2)lgN. Ну и раз при каждом сравнении мы пробегаем по другому списку, получаем (N^2)*M*lgN. И все вот этого просто для создания сортированного списка с некоторыми проверками при сортировке. После рефакторинга значение, которое искали в коротком списке было закешировано, ибо не менялось, а добавление с сортировкой превратились в TreeSet. И стало все N*lgN.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое