Написать пост

Шпаргалка: как пошагово решить задачу на собеседовании + советы для подготовки

Аватар Евгений Туренко

Чек-лист стажёра Google, который поможет справиться с задачами на техническом интервью, и немного полезных материалов для подготовки.

Один программист попал на стажировку в Google и выложил чек-лист, по которому готовился и проходил техническое интервью — мы перевели и адаптировали его, он ждёт вас в конце статьи.

Кроме него здесь есть несколько советов по подготовке. Информация достаточно общая, поэтому её можно применять к любому техническому интервью: хоть в Google, хоть в стартап, хоть для первой стажировки.

Если вы хотите на собеседование именно в Google, посмотрите этот материал — мы в нём рассказали, как готовиться и что надо знать.

Материалы для подготовки

Сайты

Pramp

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

Codesignal

А здесь вы найдёте вопросы из реальных собеседований в Facebook, Google, Microsoft и другие крупные компании. Большинство вопросов на Codesignal содержит требования к сложности алгоритмов, это классно.

interviewing.io

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

Книга Cracking the Coding Interview (6-е издание)

На русском книга называется «Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию».

Что автор статьи советует прочитать:

  • Interview Preparation Grid, да и весь раздел Behavioral Questions (на русском «Подготовка к поведенческим вопросам»).
  • Раздел Interview Questions: Data Structures — разбор вопросов о структурах данных (на русском 4 первых подраздела из части «Вопросы собеседования»).

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

Пара советов о том, как вести себя на собеседовании

  • Поддерживайте коммуникацию, будьте честны. Говорите, когда обдумываете вопрос, описывайте ход мыслей.
  • Общайтесь, шутите, если получается. Старайтесь получать удовольствие от процесса.
  • Записывайте любую информацию, которую считаете важной.
  • Задавайте вопросы и подстраивайтесь под ход интервью.
Посмотрите мнения экспертов: что надо и что не надо делать на собеседовании.Другие советы: как отвечать на вопрос про желаемую зарплату, на какие нетехнические навыки смотрят, важен ли диплом.

Порядок действий для решения задачи

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

☑️Прочитайте вопрос.

☑️Убедитесь, что разобрались во входных и выходных данных, а также в побочных эффектах.

☑️Задайте уточняющие вопросы и озвучьте все логичные предположения, чтобы интервьюеру было понятно, как вы думаете. Например, какие будут объёмы данных, кто будет пользователем.

☑️Если вам дали примеры — подробно изучите их, они помогут лучше понять особенности задачи. Если не дали — придумайте свои, которые иллюстрируют задачу и помогают вам разобраться.

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

☑️Разработайте алгоритм.

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

☑️Пройдитесь по алгоритму на нескольких примерах, чтобы убедиться, что он работает. Проверьте критические и пограничные случаи — минимумы и максимумы, null и т.д.

☑️Оцените сложность алгоритма по времени и по памяти.

☑️Если вы придумали более оптимальный алгоритм и у вас ещё осталось время, вернитесь к шагу 4.

☑️Напишите решение, опираясь на выбранный алгоритм.

☑️Проверьте код на ошибки.

☑️Обдумайте, как ваша реализация алгоритма справляется с критическими и пограничными случаями.

☑️Проверьте реализацию на каком-нибудь примере, просматривая код на ошибки.

☑️Когда вы убедитесь, что код выполняется правильно, проверьте его чистоту и стиль.

That’s all, folks!

Следите за новыми постами
Следите за новыми постами по любимым темам
23К открытий23К показов