Как быстро подготовиться к вопросам по алгоритмам на IT-собеседовании — отвечают эксперты

Когда знаешь, что на собеседовании будут задавать вопросы про алгоритмы, хочется хорошо подготовиться в сжатые сроки и понять, что вообще нужно повторить. Мы решили спросить у экспертов, как быстро подготовиться к такому собеседованию.

Игорь Павлов

Игорь Павлов, руководитель группы разработки Waves Node

Начните с поиска примеров возможных вопросов в Интернете и самостоятельно порешайте задачи. Что нужно повторить в первую очередь:

  • Структуры данных — массивы, списки, деревья, двоичное дерево поиска, очереди, стек, хэш-таблица (конечно, нужно знать, что такое хэш). Как устроен каждый тип структур данных. Обратите внимание на то, какие структуры данных лучше всего подходят для конкретных задач.
  • Алгоритмы сортировки — метод пузырька, сортировка Хоара (quick sort), сортировка слиянием. Здесь необходимо понимание и способность объяснить, как работает каждый из алгоритмов.
  • Алгоритмы поиска — линейный и бинарный (метод деления пополам).

Затем нужно вспомнить или разобраться со сложностью алгоритмов и стандартных операций со структурами данных (доступ, вставка, удаление, поиск элементов). Ключевые слова для поиска: «O» большое, временная сложность алгоритма.

Думаю, что знаний по этим вопросам должно будет хватить для прохождения первичного собеседования, однако требования к специалистам могут отличаться от компании к компании.

Даниил Каневский

Даниил Каневский, директор по аналитике компании GoodsForecast

Чтобы быстро подготовиться к такому собеседованию, представьте себя на месте работодателя: чаще всего он задаёт вопросы по алгоритмам, чтобы понять, хорошо ли вы соображаете и насколько легко сможете решать самые разнообразные аналитические задачи. Быстро научиться хорошо соображать, к сожалению, невозможно. Но можно потренироваться, чтобы «расшевелить мозги» и вспомнить кое-что, чему учили в университете.

На интервью в GoodsForecast мы в основном предлагаем решать задачи трёх типов:

  1. Базовые алгоритмы и их алгоритмическая сложность. Например: какие вы знаете алгоритмы сортировки массивов, чем одни лучше других и почему? Помимо сортировки, это могут быть основы дискретной математики, теории графов и т. д. Если вы сильно «плаваете», исправить это быстро будет сложно, но вспомнить университетский курс или почитать специальную книжку точно не будет лишним.
  2. Задачи «на сообразительность», не требующие специальных знаний, но требующие гибкости, мышления и логики. Лучше всего их решают «олимпиадники», но даже если вы к ним не относитесь, навык решения подобных заданий можно натренировать. Задач такого типа полно в Интернете, решайте их десятками, чем больше, тем лучше.
  3. Геометрические задачи. Например, как найти геометрическое место точек, равноудалённых от концов заданного отрезка. Для тренировки можно взять хороший задачник по геометрии для 9-го класса. Уверяю вас, получите удовольствие.
    Удачи на собеседованиях и хорошей работы!
Сергей Сердюк

Сергей Сердюк, методист образовательного курса «Андроид-разработчик» университета онлайн-профессий «Нетология», главный разработчик «Альфа-банка»

Фундаментально и быстро к собеседованию подготовиться довольно сложно, но возможно. Как бы я стал готовиться и на какие моменты обратил внимание при подготовке?

День 1

Рекомендую начать с тем, которые вам нужно вспомнить/почитать/посмотреть. Выберите сами:

  • что такое сложность алгоритма, какая бывает;
  • от чего зависит потребляемая память алгоритма и его скорость;
  • как самому рассчитать вышеперечисленные признаки.

День 2

Повторите базовые алгоритмы сортировки:

  • пузырьком;
  • выбором;
  • слиянием;
  • быстрая сортировка.

Обязательно посмотрите примеры кода и визуализацию.

День 3

Обязательно пройдитесь по базовым алгоритмам поиска:

  • поиск в хэш-таблице;
  • бинарный поиск;
  • деревья (красно-чёрное дерево).

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

День 4

Рассмотрите применение алгоритмов на практике — где применяются деревья и почему? Отмечу, что (в зависимости от специфики собеседования) существуют узконаправленные алгоритмы, например, для параллельной обработки данных, блокчейн, алгоритмы машинного обучения. Важно выбрать направление и просмотреть материалы, отражающие сегодняшние тренды определённой технологии.

День 5

Берите план и кратко пересказывайте коллеге всё то, что освоили/повторили/изучили за предыдущие 4 дня.

Если у вас в запасе больше двух месяцев на подготовку, я рекомендую пройти следующие курсы:

Желаю успехов на собеседовании!

Данил Головизин

Данил Головизин, продакшн-директор digital-агентства Rutorika

Самое главное: если вы никогда не работали с алгоритмами — от быстрой подготовки толку не будет. Программист должен уметь распознавать алгоритмы в бизнес-задачах, выводить собственные и знать, какие алгоритмы используются в его инструментах. Если вы просто погуглили популярные алгоритмы, на собеседовании вас подловят на вопросе, для ответа на который нужен боевой опыт. Лучше сразу сказать, что у вас небольшой опыт работы с алгоритмами, и получить работу с другими компетенциями.

А если с опытом всё в порядке — просто освежите теорию по алгоритмам сортировки (от простых вроде пузырька до гибридных) и алгоритмам поиска (алгоритмы бинарных деревьев, алгоритмы хэш-таблиц).

Итак, как быстро подготовиться к собеседованию, на котором будут задавать вопросы по алгоритмам?

Если вы ничего не знаете, то лучше так и скажите — толку от изучения всей доступной теории с нуля не будет. Если у вас с этим всё не так плохо, то повторите базовые структуры данных, алгоритмы сортировки и поиска. Изучите их реализации, вспомните, в чём их разница и в каких случаях стоит их применять. Попробуйте разобраться, почему тот ли иной алгоритм эффективнее в конкретно взятом случае. Закрепите знания на практике — решайте побольше задачек.

Помните, что при должном уровне усердия и подготовки у вас обязательно всё получится!

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.