В каком порядке изучать структуры данных и алгоритмы?
Сначала линейные структуры (стек, очередь, связный список), затем хеш-таблицы и деревья, после них сортировки, потом рекурсия как способ мышления, дальше динамическое программирование и графы - и только затем регулярное решение задач с собеседований. Начинать с задач, а не со структур, - самая частая ошибка тех, кто учится сам: невозможно распознать, что задача просит кучу, если вы ни разу её не написали. Этот путь построен именно в таком порядке.
Какой язык лучше для DSA?
Тот, на котором вы будете проходить собеседование. На Python пишется быстрее всего, и его выбирает большинство; Java и C++ используют многие крупные компании и спортивные программисты; Go и Rust принимают всё чаще. Курсы по структурам данных, сортировкам, графам и наборам задач с собеседований читаются на четырнадцати языках с одними и теми же уроками и тестами (динамическое программирование и серия собеседований на Python - только на Python, битовые операции - на C++), так что выберите один, а если вакансия потребует другой, пройдите курс заново на нём: во второй раз это занимает дни.
Достаточно ли этого пути для подготовки к собеседованиям?
Здесь весь материал, на который опирается любое техническое интервью, и он даётся через написание кода, плюс практика: десять наборов задач с собеседований, серия по интервью на Python и два банка задач в конце. Чего он не заменяет, так это объёма: после пути продолжайте решать незнакомые задачи на время, а проектирование систем изучайте отдельно. Большинство джуниор- и мидл-собеседований закрывается тем, что здесь есть.
Сколько времени нужно, чтобы выучить структуры данных и алгоритмы?
Около трёх-четырёх месяцев при часе в день на весь путь: три-четыре недели на первые пять структур данных, три на следующие пять, две-три на сортировки, три на рекурсию, динамическое программирование и битовые операции, две-три на алгоритмы на графах, а наборы задач с собеседований - столько, сколько будете продолжать. Именно на динамическом программировании темп обычно падает; курс рекурсии перед ним и есть то, после чего всё складывается.
Нужна ли математика для изучения алгоритмов?
Меньше, чем вы опасаетесь. Нужно уверенно понимать логарифмы (чтобы читать Big-O), базовую комбинаторику и идею доказательства по индукции - именно ей рекурсия и учит на практике. Ни матанализа, ни линейной алгебры. Если вы понимаете, почему бинарный поиск на каждом шаге делит задачу пополам, у вас есть вся математика, которая нужна этому пути.
Курс DSA бесплатный?
Все курсы на пути бесплатны: уроки, редактор в браузере, тесты, подсказки ИИ и сертификаты тех курсов, которые их выдают. Pro лишь снимает дневной лимит энергии и даёт безлимитную помощь ИИ; ничего на этой странице за ним не заперто.
Стоит ли учить структуры данных, когда код пишет ИИ?
Даже больше, чем раньше. На собеседованиях их по-прежнему спрашивают, потому что это самый быстрый способ понять, умеет ли человек рассуждать о программе, а не только просить её сгенерировать. В работе тот, кто знает, что поиск по хеш-таблице выполняется за константное время, а вложенный цикл - нет, и есть тот, кто прочитает написанное ИИ и скажет, выдержит ли это десять миллионов строк.