Алгоритмическое интервью

Алгоритмическое интервью

Eugene

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

Дисклеймер: в этой заметке я НЕ БУДУ рассуждать о том:

  • о том нужны ли алгоритмы разработчику (коротко: зависит от того чем именно вы занимаетесь).
  • о правильности такого подхода к оценке кандидатов (коротко: каждая компания вольна строить найм как хочется, рынок всё решит)

Что такое алгоритмческая секция?

Интервьюер даёт задачу (одну или несколько) в формате: есть входные данные(А), необходимо написать функцию которая принимает А, внутри себя делает какую то магию и возвращает результат(B). Цель кандидата: успеть решить задачу/задачи за отведенное время.

Что оценивается на алгоритмической секции?

При правильном проведении из нее можно извлечь ценные артефакты о том:

  • Как кандидат мыслит, как рассуждает о проблеме (особенно когда проблема незнакомая + время ограничено)
  • Как задает вопросы и какие это вопросы
  • Как воспринимает обратную связь
  • Насколько глубоки и широки знания кандидата в Computer Science
  • Как кандидат пишет код (пишет ли тесты, как оформляет код и т.п.)

Какие факторы влияют на успех при прохождении интервью:

  • Количество решенных задач (Практика)
  • Широта и глубина знаний по алгоритмам и структурам данных (Теория)
  • Аналитические способности / интуиция (вытекают из предыдущих 2х пунктов)
  • Везение (попадется ли вам задача которую вы уже видели)

Задача кандидата: максимизировать свои шансы по каждому из пунктов.

Рассмотрим подробнее как это можно сделать:

Количество решенных задач (Практика)

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

С ростом опыта полезно ставить себе таймер, чтобы искусственно воспроизводить атмосферу настоящего интервью.

Полезные ссылки (для уверенных в себе, начинающих скорее отпугнут):

Широта и глубина знаний по алгоритмам и структурам данных (Теория)

Однажды наступит такой момент когда задачи на LeetCode перестанут решаться, потому что не получается придумать ничего кроме наивного/брутфорс решения. И это нормально, это означает что нужно идти искать идеи где-то еще кроме своей головы. Например в разделе Discuss на LeetCode :)

Но понять их будет проблематично без предварительного изучения того как работает используемый алгоритм или структура данных. Тут то нам и придут на помощь книги/курсы/справочники по алгоритмам.

Полезные ресурсы которые помогут стартовать в этой непростой теме:

Аналитические способности / интуиция

Это вещь которую нельзя описать. С течением времени и практики мозг и смекалка начинают работать лучше и лучше. Чем больше вкладывается времени и сил тем больше отдача. Приходит понимание как подходить к решению большинства незнакомых задач, по факту вырабатывается собственный фреймворк по их решению.

Везение

Как долго бы кандидат не готовился и сколько курсов не прошел, всё равно вероятность не решить задачу присутствует. И это тоже нормально, предела совершенству не существует. Прорабатавая предыдущие пункты кандидат по факту повышает вероятность наступления "везения".

Bonus: Mock interview.

По своему опыту могу сказать что собеседование это огромный стресс для организма. И часто этот стресс мешает показать свои настоящие знания. Поэтому для достижения успеха нужно научиться работать со стрессом и держать его под контролем. В этом отлично помогают mock interview - пробные собеседования ничем не отличающиеся от настоящих с той лишь разницей что ошибка ничего не стоит для кандидата :) После нескольких попыток организм привыкает и на реальном собеседовании справляться с эмоциями становится в разы легче.

Итог

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

Ссылки для дополнительного изучения (если хочется погрузиться в тему глубже):


P.S. Я создал анонимную форму обратной связи для подписчиков канала. Если у вас есть вопрос/отзыв/пожелание то я с радостью прочитаю, пишите :)


Report Page