Вы не можете пройти собеседование в Google или Facebook, ничего не зная об алгоритме. Так почему бы не учиться сейчас.
Я программист с опытом работы более 15 лет. В первые годы (в старшей школе) я много учился и много работал над алгоритмами. Пока я не закончил учебу, я всегда учился и страстно увлекался этим. После окончания учебы я пошел учиться за границу и пошел по исследовательскому пути.
Однако, проработав 3 года, я предпочитаю заниматься продуктами / программным обеспечением, а не исследованиями. Я обратился к технологиям / инжинирингу вместо алгоритмов. Тем не менее, я лично считаю, что понимание алгоритмов по-прежнему очень важно для разработчиков. И я не думаю, что можно пройти собеседование в Google или Facebook, ничего не зная о них!
1. HackerRank
Этот сайт очень известен в мире программирования, от младшего до старшего, от разработчика до менеджеров по найму.
Hackerrank имеет множество алгоритмов, от низкого до высокого уровня сложности, и всевозможные алгоритмы и структуры данных (даже SQL). Вы напишете код, запустите его напрямую и увидите результаты или просмотрите обсуждение, чтобы узнать, как люди его решают.
В ходе моих собеседований было также несколько компаний, которые разрешили мне приехать сюда, чтобы провести свои тесты (алгоритмы + множественный выбор + эссе). Поэтому вы можете прийти сюда, чтобы сделать больше упражнений и привыкнуть к этому.
2. TopCode
TopCoder - одна из первых онлайн-арен для программистов, которые могут напрямую соревноваться друг с другом. Он предоставляет список алгоритмических задач, которые вы можете решить онлайн с помощью редактора кода. Матчи одного раунда проводятся несколько раз в месяц в определенное время, где программисты соревнуются друг с другом, чтобы быстрее всего решать задачи с наивысшими баллами.
Пользователи, занимающие высокие места в TopCoder, являются очень хорошими программистами и регулярно участвуют во многих соревнованиях по программированию. Люди с самым высоким рейтингом будут вести собственный блог под названием «ЕЖЕНЕДЕЛЬНЫЕ АЛГОРИТМЫ ПЕТРА МИТРИЧЕВА», где они смогут писать о соревнованиях кода, алгоритмах, математике и обо всем, что им нравится.
3. Geekforgeeks
Если у вас когда-либо возникали проблемы с составлением алгоритма, после поиска решения в Google вы, вероятно, несколько раз увидите эту страницу.
Эта страница geekforgeeks выглядит немного… некрасиво, упражнения не очень хорошо классифицированы. Однако в нем есть много решений для распространенных алгоритмов. Каждое решение включает в себя множество различных методов, а также сложность / объем памяти каждого метода. Это очень интересно и полезно читать.
Поэтому иногда вы можете увидеть эту страницу / пример решения популярных алгоритмов домой!
4. Leetcode
Еще один популярный сайт для обучения алгоритмов: Leetcode. По количеству задач здесь не уступает хакерранку, есть 3 основных уровня сложности: легкий / средний / сложный (некоторые простые задачи очень сложные).
Когда я ходил на собеседование по алгоритму, мне часто задавали несколько простых вопросов для начала, среднего уровня для оценки способностей и жесткого для интервью в Facebook / Google.
Эта страница также имеет приятный вид, поскольку она измеряет ваш код производительности / времени выполнения по сравнению с другими, чтобы узнать, работает ли ваш код быстро или медленно, может быть оптимизирован или нет.
Ежедневная проблема кодирования
Эта страница меня представили, когда я смотрел канал на Youtube CS Dojo - сотрудника Google, который бросил свою работу, чтобы работать ютубером.
В отличие от остальных страниц, на этом сайте нет списка заданий. Вместо этого вы вводите свой адрес электронной почты, каждый день вам будут присылать 1 алгоритм на пробу.
Это также Easy / Medium, которые используются такими компаниями, как Amazon / Google, для собеседований с кандидатами. Если вы приобретете пакет Premium, вам будет предоставлено решение.
Exercism.io
Если другие страницы предназначены для отработки алгоритмов, то Exercism - довольно хорошее место для изучения программирования.
Есть много упражнений по Exercism, но эти упражнения не слишком тяжелы для алгоритмов, но тяжелы для использования языков программирования:
- Используйте if / else, loop.
- Обработка даты, обработка строк
- Разделение методов, организация классов
- Как обрабатывать ошибки, писать асинхронный код
Я использовал этот сайт, чтобы узнать больше о Голанге и Эликсире.
Если вы какое-то время занимались программированием, хотите выучить новый язык, выучить новый образ мышления, просто перейдите на Exercism!
В конце концов
В этой статье я поделился 6 классными веб-сайтами, на которых можно практиковать алгоритмы и изучать программирование!
Я лично считаю, что вам не нужно слишком много учиться, просто зайдите в Skilled / Hackerrank / Leetcode, если вы хотите потренироваться перед собеседованием; Или выберите Exercism, если вам нужно выучить новый язык.
Если у вас есть интересный алгоритмический опыт, потренируйтесь на собеседовании, просто поделитесь в комментариях! Спасибо.