Site icon AppTractor

Моя подготовка к собеседованию в Google

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

Во время моего недавнего поиска работы я посетил несколько интервью и получил предложения от Google и Amazon. За последние несколько лет онлайн-сообщество очень помогло мне в подготовке. В этом посте я поделюсь со всеми своим подготовительным путешествием и своими знаниями — расплата за помощь :)

Процесс собеседования инженера по разработке ПО

Процесс обычно начинается с того, что рекрутер компании составляет список потенциальных кандидатов. Затем кандидат проходит первоначальный отбор(ы), в ходе которого определяется, подходит ли он/она для этой роли. Как только это будет понятно, типичное собеседование SWE проводится в следующих этапах.

P.S. Я сосредоточусь больше на подготовке к программным интервью, так как они занимают большую часть процесса собеседования. Однако мы кратко рассмотрим системный дизайн и лидерство.

A. Программирование

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

Для простоты — раунды программирования сосредоточены на решении проблем с помощью структур данных и алгоритмов. Эти вопросы, как правило, сложны и дают ценную информацию об аналитических способностях кандидата.

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

Нет короткого пути. Единственная работающая формула — это последовательность. Практикуйтесь, практикуйтесь и практикуйтесь, пока не разовьете естественный навык решения проблем.

Стратегия подготовки

1. Оцените время подготовки

Это часто игнорируется и не считается необходимым. Я предлагаю откалибровать ваше текущее отношение к решению проблем с помощью данных и алгоритмов. Я изучил свои сильные и слабые стороны и сделал приблизительную оценку времени на подготовку. Эта оценка помогла мне подготовить мой разум к долгосрочной (или краткосрочной) цели и поддержала мотивацию.

Дайте себе достаточно времени на подготовку. Всегда лучше быть слишком подготовленным, чем недостаточно подготовленным.

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

Перед собеседованиями я поставил себя на средний уровень.

2. Платформы для программирования и обучения

LeetCode, InterviewBit и GeeksForGeeks были моими главными платформами для практики в программировании. Перед собеседованием я решил около 320 задач LeetCode, 80 на InterviewBit и 30 вопросов в GFG.

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

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

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

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

И последнее, но не менее важное, статьи Вайдехи Джоши BaseCS. Она пишет интуитивно понятные и простые объяснения по нескольким темам.

3. Использование таймера

Поскольку продолжительность собеседований сокращается, очень важно работать над тем, как вы решаете проблемы. Как правило, программное интервью длится 45–50 минут, и от кандидата ожидается, что он решит — две средние ИЛИ одну сложную ИЛИ одну легкую плюс одну сложную задачу.

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

Я использовал таймер, чтобы отсчитывать время для сеансов программирования

Новички могут проигнорировать этот фактор, поскольку достижение правильного решения, очевидно, более важно.

4. Имитационные интервью

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

«Если вы последовательно проходите имитации интервью, считайте это положительным знаком».

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

5. Подготовьте роадмап

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

Рассмотрим ниже снимок моего календаря за месяц до собеседования.

Я разбил всю подготовку на набор задач/этапов. Я ставил ежедневные цели на недели (или даже месяцы) до собеседования. Этот метод помог мне избежать случайности и не заблудиться по пути.

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

B. Системный дизайн

В этом раунде у кандидата проверяют навыки технического проектирования. Их можно далее разделить на дизайн низкого уровня (LLD) и дизайн высокого уровня (HLD). Знания в этой области растут с опытом работы в отрасли.

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

C. Лидерство/поведение

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

Ключ здесь — оставаться прозрачным и просто быть собой.

Я выделю раздел S.A.R. (Situation, Action, Result — Ситуация, Действие, Результат), упомянутый в CTCI. Идея состоит в том, чтобы выявить важные темы для обсуждения, классифицируя истории на основе предыдущей работы. Чтобы узнать больше об этом, ознакомьтесь с таблицей софт скилов.

Советы

Источник

Exit mobile version