Как получить работу в Facebook или Google за 6 месяцев

Renelio

Зеленый человечек
Joined
May 25, 2017
Messages
345
Reaction score
78
С чего начать? Присоединиться к чьему-нибудь стартапу? Запустить собственный? Сфокусироваться на откачивании знаний алгоритмов и структур данных?


Для начала несколько полезных ссылок, упоминавшихся в ответах:
Итак, топ-3 ответов, набравших наибольшее количество голосов.

1. Аншуман Сингх, соучредитель InterviewBit, разработчик в Facebook
Типичный процесс прохождения собеседования
  1. 2-3 телефонных интервью. Обычно перед личной встречей проходит несколько бесед по телефону, чтобы «прощупать» собеседуемого. Как правило, в них могут задаваться несложные алгоритмические задачи, но в основном телефонные интервью предназначены для выявления «красных флажков» — потенциальных нежелательных черт и возможных проблем при вхождении нанимаемого в коллектив.
  2. Личные беседы
    • интервью 1-2: программирование, алгоритмы и структуры данных, культура программирования, «чистота» кода;
    • интервью 3: программирование или системный дизайн. Этот этап зависит от опыта собеседуемого. Соискатель тестируется на понимание сферы его предполагаемой профессиональной деятельности;
    • интервью 4: поведенческое. После нескольких технических собеседований следует собеседование с hr-ом. Его цель — выявить ваши психологические плюсы и минусы, оценить, насколько вы способны влиться в коллектив.
О подготовке к собеседованию
Существует множество блогов и сайтов, содержащих разнообразные материалы для подготовки к техническому интервью, но трудно найти хоть один, который предлагал бы структуру и порядок этой подготовки.

Именно таким является проект InterviewBit. Он абсолютно бесплатен, и предоставляет любому желающему упорядоченный и тщательно структурированный план подготовки к техническому собеседованию, в некоторой степени исполняя роль персонального наставника.

Последовательный подход. никаких деревьев и хэшей, пока вы как следует не усвоите массивы и списки.

main-qimg-2514ae3f3ce14edd1e962b39ea710411.png


Каждая тема разбита на подтемы

main-qimg-20ef46ae819775a296ea8ac191bf7947.png


Имитация интервью в процессе решения задач


main-qimg-c15d98eb1ea106fd34f31224cdb8c759.png


Джимми Саад, работает в Facebook
Развернутый и очень содержательный пост от человека, который сам готовился к собеседованию в Facebook и в результате успешно прошел его. Он детально описывает свою подготовку к собеседованию в течение примерно одного месяца, после чего получил работу в Facebook.

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

Итак, представим, что у вас собеседование через месяц. Как бы вы спланировали подготовку за это время?

Дни -∞-0: исходные данные
Предполагается, что вы знаете алгоритмы и знакомы с основными структурами данных, включая бинарные деревья поиска, хэш-таблицы, кучи, стэки, очереди, графы, а также владеете основными методами работы с ними и знаете временную сложность каждого из них.

Если это не так, вам понадобится куда больше месяца. Для начала обратите внимание на книгу «Введение в алгоритмы».Также от вас ожидают, что вы знаете язык программирования вроде С++ или Java.

День 1: книга
Приобретите книгу «Элементы технических собеседований». Это одна из лучших книг по данной теме. Она содержит более 300 вопросов, задаваемых на реальных интервью.

День 2-14: алгоритмы
Читайте книгу глава за главой, по одной в день, с 5-й по 19-ю. Решайте каждую задачу. Не программируйте, просто находите алгоритм решения. Поставьте себе дедлайн на каждое задание в зависимости от его сложности. Если не получается решить задачу за это время — перейдите к ответу и тщательно проанализируйте его.

День 14-24: программирование
Пройдите книгу еще раз, на этот раз программируя. Теперь вы знаете ответы, так что сможете вспомнить алгоритм решения каждой задачи довольно быстро (если нет, можно подсмотреть). Это этап программирования, так что не тратьте время на повторный подбор алгоритмов.

День 25-30: больше вопросов
Обратите внимание на следующие ссылки:
День 31: не техническая часть
Да, это немного жульничество — добавлять 31-й день, но настоятельно рекомендуется сделать это. Вам нужен день для подготовки к не технической части интервью (особенно, если вы устраиваетесь в Facebook, там практикуют не технические собеседования).

Во-первых, заготовьте вопросы, которые вы хотели бы задать интервьюеру. Затем подумайте о своем образовании и опыте: в каких проектах вы участвовали, частью каких команд были, какие возникали трудности и конфликты.

Подготовьтесь отвечать на вопросы вроде «почему вы выбрали именно нашу компанию?». Такие вопросы обычно заставляют соискателя растеряться.

Marcelo Juchem, разработчик в Facebook
30 минут занятий в день бесспорно лучше, чем 3 часа 30 минут в неделю. Занимайтесь часто и регулярно. Нет смысла работать непрерывно по 8-10 часов, это чревато выгоранием. Планируйте небольшие занятия через удобные для вас отрезки времени в течение дня. Сделайте этот график гибким, давайте себе отдохнуть, если это необходимо (нет смысла прерываться всего на 15 минут, если вы действительно устали). Не нужно геройствовать, достаточно выработать режим, который позволит вам стабильно развиваться.

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

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

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

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

Форматы собеседований
Большая часть собеседований на позиции разработчиков делится на три типа:
  1. поведенческое (психологическое)
  2. системный дизайн
  3. алгоритмы и программирование
Чаще всего проводятся интервью третьего типа. Первый тип помогает соискателю поставить себя на место рекрутера и задать себе вопросы: «Хотел бы я работать с этим парнем в течение всего следующего года? Выпил бы я с ним пива или пригласил бы на ланч, чтобы обсудить, как прошли выходные? Хотели бы иметь с ним дело другие представители нашего коллектива?» Собеседования типа 2 призваны проанализировать ваш прошлый опыт.

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