Соревновательное программирование — это спорт. Единственный способ преуспеть – это практика!

Я слышал вопрос, особенно от студентов уровня 3, о том, как я могу получить место в FAANG. Ответ на все эти вопросы - соревновательное программирование. Хороший профиль на платформах конкурентного программирования может принести вам рефералов, которые помогут вам в осуществлении вашей мечты. И да, соревновательное программирование — не единственный способ попасть в FAANG.

Что такое соревновательное программирование?

Соревновательное программирование похоже на спорт, где спортивные программисты должны найти ответы на различные алгоритмические вопросы, используя структуры данных и алгоритмы. Целью соревновательного программирования является написание исходного кода компьютерных программ, способных решать поставленные задачи. Это помогает развивать «искусство мышления», которое делает вас хорошим программистом. Это не только улучшит ваши навыки программирования, но и улучшит ваши навыки решения проблем, уровень терпения, навыки отладки и логическое мышление. Как только вы начнете, возврата не будет.

С чего начать?

Единственное, что вам нужно для начала, — это знать основы некоторых языков программирования, таких как C, C++, Java или Python, и знать некоторые базовые структуры данных, такие как массивы.

Помните, что вам не нужно владеть языком программирования или DSA, чтобы начать работу.

Я видел, как многие люди запутались в том, какой язык выбрать. Большинство программистов выбирают C++ из-за встроенной библиотеки STL и высокой скорости.

Какую платформу выбрать?

Существует много платформ для соревновательного программирования, и выбор правильной вызывает сильную головную боль. У каждого своя особенность. Но, на мой взгляд, начните с длинных задач Codechef и, как только вы освоитесь с задачами начального уровня, переходите на Codeforces. Длинный вызов Codechef - это 10-дневный вызов, который проводится каждый месяц, где дается 7–8 задач, и каждая задача имеет 100 баллов. Поверьте мне, как только вы начнете это делать, вы будете каждый месяц ждать вызова. Codeforces каждые 2–3 раза в неделю проводит короткие конкурсы, в которых задачи сортируются по уровню сложности.

Не ждите подходящего момента, чтобы давать конкурсы, начинайте давать их, даже если не можете решить ни одной задачи. После конкурса посмотрите статьи и решения других программистов. Решите проблему и проанализируйте сложность. Не волнуйтесь, если вы не можете понять технические термины. Вы познакомитесь со всем этим, как только начнете.

Некоторые моменты, о которых стоит помнить…

  • Одна вещь, на которую я хочу обратить внимание: не демотивируйтесь, глядя на список рангов, и вы не сможете решить ни одной проблемы, это просто практика. Поверьте, единственный способ стать лучше — это практика.
  • Не отставайте от оценок. Я знаю, что все хотят быть кодером с хорошим рейтингом, но вашей главной целью должны быть знания. Не занимайтесь мошенничеством, чтобы стать кодером с хорошим рейтингом. Скажем нет плагиату!
  • Соревновательное программирование — это спорт. Играй честно! Если вы копируете чужой код без понимания, вы обманываете себя.
  • Сохраняйте последовательность. Кодируйте ежедневно, и результаты будут выдающимися!
  • Если вы найдете какой-либо технический термин, который вы не можете понять, просто выполните поиск в Google.
  • Если вы где-то застряли, обратитесь за помощью! Все готовы помочь вам, просто попросите их.
  • Расширяйте свою сеть, подружитесь с другими программистами и обсуждайте с ними логику и сложность.
  • Помните, что будут дни, когда вы не сможете решить ни одного вопроса или где-то застрянете. Не волнуйтесь, с этим сталкиваются все, просто сделайте перерыв и начните снова.
  • Конкурентное программирование — не единственный способ получить место в компании, ориентированной на продукт, есть и множество других способов, поэтому, если вам не нравится соревновательное программирование, вы можете заниматься многими другими вещами, такими как разработка приложений, веб-разработка или открытость. вклад источника.

Самая большая ошибка программистов, вероятно, заключается в том, что они разочаровываются и недостаточно практикуются. Или заниматься только теми задачами, в которых они чувствуют себя хорошо.
– Дерек Кисман, также известный как SnapDragon

Ресурсы

www.codechef.com

www.codeforces.com

www.geeksforgeeks.org

Введение в алгоритмы Томаса Х. Кормена, Чарльза Э. Лейзерсона, Рональда Л. Ривеста и Клиффорда Штейна.

Интервью по кодированию, Гейл Лаакманн Макдауэлл

Я мог бы упомянуть подробный список ресурсов, но это не принесло бы никакой пользы. Так что просто сосредоточьтесь на них. Вы можете изучить структуры данных и алгоритмы на GeeksForGeeks, это один из лучших сайтов для программистов.