Собеседование в Амазон

Хочу рассказать свою историю собеседований с Амазоном на позицию SDE2, от первого контакта с рекрутером до получения офера.

Этап первый: попасть на собеседование #

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

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

Что делать если не знаешь никого кто работает в Амазоне? Я зашёл на LinkedIn, построил фильтр по бывшим коллегам из Яндекса и тем, кто сейчас работает в Амазоне, написал в личку, попросил рефер.

Сделать рефер — не проблема, и даже напротив: в случае найма, сотруднику будет премия.

Этап второй: онлайн-тестирование #

В первом же письме рекрутер прислала ссылку на онлайн-тест. Есть возможность пройти демо-тест, чтобы познакомиться с платформой. Некоторые компании проводят тесты, например, на Hackerrank, но в случае Амазона платформа собственная, поэтому имеет смысл сначала потыкать что там и как.

Пройти тест просят в течение недели с момента, как прислали ссылку.

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

Так же есть форма, где нужно написать своими словами «как решал» и оценить сложность в терминах O-большого. Не уверен, что это кто-то читает, есть автотесты на платформе, но раз просят заполнить — сделал.

Этап третий: телефонное интервью #

Ответ пришёл в тот же день, когда я написал тест.

В итоге, назначили телефонное интервью. В назначенное время, через 9 дней, связались в Amazon.Chime (ссылку оставили в описании встречи, всё работает по аналогии с зумом), код писал в одном из сервисов а-ля collabedit.

Формат интервью: 5 минут на знакомство и рассказ про себя, полчаса пишем код, 5 минут в конце на вопросы интервьюеру.

Вопросов дают несколько. Первый совсем простой — проверка на адекватность. Второй вопрос так же относительно простой, но есть т.н. follow-up — т.е. естественное развитие вопроса в чуть более сложный, например, «а что если без дополнительной памяти?» или «а можно ли решить за логарифм?».

Интервьюер был, что называется “nice”, помогал и направлял. Впечатление осталось положительное.

Этап четвертый: онсайт #

Через 7 дней пришёл ответ.

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

Рекрутер перенаправила меня на специального человека из travel team, который занимается организацией перелётов. Отправили excel-файлик, в котором нужно было заполнить личные данные и опросник: желаемая дата прилёта, желаемая дата отлёта, бронировать ли отель, нужны ли визы.

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

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

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

Эдинбург. Напомнил мне другой «бург», который Петер.

Глаз Саурона. Недалеко от офиса Амазона и вокзала Waverley, куда я прибыл из Лондона на поезде.

Итак, онсайт у меня был 22 января, в четверг, и состоял из разных секций.

Разговор с менеджером «за жизнь» #

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

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

В этой переговорке проходили все секции интервью, по очереди приходили разные интервьюеры.

В Амазоне каждая секция начинается с 5-10 минут разговора про Leadership Principles. Задают вопрос из разряда «какой самый сложный баг вы победили» и по ответам хотят понять владеет ли кандидат этими принципами.

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

Короче, знать Leadership Principles и, главное, подготовить пару-тройку историй с работы, которые их демонстрируют — must have.

Кодинг #

5-10 минут про Leadership Principles, далее задачка уровня medium/hard на LeetCode. Код надо писать маркером на доске, важно проговорить сперва своё решение, убедиться, что интервьюер с этим ок и тогда уже писать. В конце надо не забыть протестировать, т.е. взять пару тест-кейсов и пройтись по коду как в дебаггере. Я рисую табличку со значениями переменных на стеке прямо на доске, проговариваю как они меняются при выполнении программы.

Кодинг #

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

Обед #

Ко мне прикрепили т.н. lunch buddy, с которым мы пошли в местную кафешку. Парень сам из Глазго, приехал в Эдинбург работать в Амазоне. Рассказывал мне как он ездит на выходные к родителям, а так же не пропускает ни одного матча любимой футбольной команды 😊

Кодинг #

5-10 минут про Leadership Principles, далее я писал код на ноутбуке. Задача была написать компонент JavaScript, так чтобы он был встраиваемым в другие сайты: здесь поговорили про недостающие неймспейсы в CSS, про версионирование библиотек, про кеширование в браузере и т. д.

Систем-дизайн #

На вход даётся «продуктовая задача» в формате: представь, что мы хотим открыть стартап и ты технический директор. Скажем, хотим запилить сервис стриминга музыки. Давай спроектируем его.

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

Накидал какие будут модели (в смысле MVC), какие им соответствуют таблички в базе (реляционной) и какие есть связи между ними.

Далее нарисовал ручки REST API и примеры ответов в JSON.

Меня попросили реализовать «фичу», которой заранее не было. Для этого пришлось добавить ещё одну табличку, сделать миграцию, и добавить ещё одну ручку. Про что я и рассказал, и нарисовал на доске.

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

В дебри масштабирования а-ля “что будем делать, когда придёт чёрная пятница, и все ломанутся пользоваться нашим сервисом” так же не успел особенно залезть.

Заключительный разговор, попрощались, рекрутер проводила до выхода.

Этап пятый: офер #

Через неделю позвонила рекрутер и сказала про офер по телефону, детали отправила письмом:

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

PS. Обсудить можно в телеграм-чате любознательных программистов. Welcome! 🤗

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