Шпаргалка: как пошагово решить задачу на собеседовании + советы для подготовки
Чек-лист стажёра Google, который поможет справиться с задачами на техническом интервью, и немного полезных материалов для подготовки.
23К открытий23К показов
Один программист попал на стажировку в Google и выложил чек-лист, по которому готовился и проходил техническое интервью — мы перевели и адаптировали его, он ждёт вас в конце статьи.
Кроме него здесь есть несколько советов по подготовке. Информация достаточно общая, поэтому её можно применять к любому техническому интервью: хоть в Google, хоть в стартап, хоть для первой стажировки.
Если вы хотите на собеседование именно в Google, посмотрите этот материал — мы в нём рассказали, как готовиться и что надо знать.
Материалы для подготовки
Сайты
Здесь можно потренироваться проходить собеседования. Участники по очереди интервьюируют друг друга, при этом можно использовать общий редактор кода, аудио- и видеосвязь. Скорее всего поначалу вам будет сложно и нервно, но со временем вы освоитесь и во время настоящего собеседования будете чувствовать себя гораздо комфортнее.
А здесь вы найдёте вопросы из реальных собеседований в Facebook, Google, Microsoft и другие крупные компании. Большинство вопросов на Codesignal содержит требования к сложности алгоритмов, это классно.
Этот сайт посоветовали в комментариях к оригинальной статье. На нём предлагают анонимно попрактиковаться в собеседованиях с крутыми программными инженерами из известных компаний. Пишут, что «это бесплатно, и так будет всегда».
Книга 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К показов