Особенности найма в Амазоне или никаких собеседований с HR
Так как БигТех начал открываться после сокращений и заморозки то я решил поучаствовать в найме программистов и сейчас расскажу об особенностях этого процесса в компании Амазон.
Начну я с рассказа о том как проходит процесс для кандидата.
1. После того как вы откликнулись на вакансию ваше резюме проверяется на базовые требования. Обычно это что то вроде для позиции мидла:
BASIC QUALIFICATIONS- 3+ years of non-internship professional software development experience
- 2+ years of non-internship design or architecture (design patterns, reliability and scaling) of new and existing systems experience
- Experience programming with at least one software programming languagePREFERRED QUALIFICATIONS
- 3+ years of full software development life cycle, including coding standards, code reviews, source control management, build processes, testing, and operations experience
- Bachelor's degree in computer science or equivalent
2. Как только проверка пройдена вам присылают приглашение на онлайн задание, где у вас скорее всего будут алгоритмические задачи и несколько вопросов по техническому дизайну.
Решения проверяются автоматические
3. Если вы проходите онлайн тест то приходит приглашение на Phone screen интервью, где вы будете 1 час решать алгоритмические задачи и отвечать на поведенческие вопросы сотруднику Амазона работающего на соответствующей позиции или выше.
4. Если PhoneScreen пройден то вас пригласят на так называется Loop где вы на протяжении 4 часов с 4 разными людьми по часу будете решать задачи по Problem Solving, Data structures and algorithms, Logical and maintainable, System design и отвечать на поведенческие вопросы. время обычно разделяется следующий образом: 5 минут приветствие, 20 минут поведенческие вопросы, 30 минут coding, 5 минут вопросы кандидата.
В Амазоне есть правило 2&5 которое призывает обьявлять результат кандидату в течение 2 дней после Phone Screen и в течение 5 дней после Loop.
5. И вот только после того как вы успешно прошли все этапы у вас будет звонок с hr для обсуждения оффера. До этого момента никакого общения с HR у вас не будет.
Теперь расскажу все что происходит со стороны интервьюеров.
Для интервьюера все начинается с тренинга. На тренинге обучают этапам процесса, тому как вести себя на интервью и тому как вести себя не надо.
Очень запомнились следующие моменты:
1. Амазон уделяет огромное внимание тому чтоб кандидат имел положительное впечатление даже если не прошел отбор.
2. Очень важно бороться с так называемыми bias. Кандидат должен оцениваться только с функциональной точки зрения. Есть очевидные вещи типо того что нельзя оценивать человека по полу, цвету кожи и тп. Есть не очевидные - на ваше решение не должны влиять такие факторы, как то что вы учились в одном месте, родились в одном месте. Так же не должно влиять на выбор то где учился человек - в Гарварде или на курсах программирования, это ничего не говорит о том насколько этот человек будет успешен в Амазоне.
3. Строго запрещено давать feedback во время или после интервью.
После тренинга вы можете начинать учавствовать в интервью в роли помощника.
Процесс каждого интервью строится следующим образом.
1. Pre-brief.
Recruiter, Hiring manager и другие интервьюеры собираются вместе и начинают обсуждать кто какие поведенческие вопросы будет обсуждать. В Амазоне существует список компетенций вокруг которых крутятся все поведенческие вопросы. Каждому интервьюеру выделяется по 2 компетенции. Также интервьюер получает один из Problem Solving, Data structures and algorithms, Logical and maintainable, System design.
2. Интервью.
Перед интервью вы прописываете план - выбираете поведенческие вопросы из банка вопросов, которые соответствуют заданной вам компетенции. Примером может служить:
Например ваша компетенция - Have a backbone;Disagree and commit.
Одним из вопросов по этой компетенции может быть - "Расскажите о случае когда вы послали хорошую идею своему менеджеру и он не сделал ничего по этому поводу? Что вы сделали? Какой был результат.
Также вы выбираете или придумываете задачу для coding.
Пример: Logical and maintainable
Напишите set где каждый элемент имеет дату экспирации и удаляется.
На самом интервью в течение 20 минут для поведенческих вопросов вы должны копнуть кандидата по поводу наличия компетенции. Задача не просто задать вопрос но и наводящими вопросами выцепить все необходимые данные подтверждающие данную компетенцию. Как и во всех статьях о подготовке к FAANG мы действительно стараемся выстроить из ответа так называемую цепочку STAR (Situation/Task, Actions, Results). Если кандидат изначально об этом знает и рассказывает в такой последовательности то он точно будет намного ближе к цели чем кандидат который к этому не готов и будет плавать.
В течение 30 минут кодинга можно ожидать следующего. Например по задаче
Напишите set где каждый элемент имеет дату экспирации и удаляется.
от вас будут ожидать придумать решения с max/min heap или concurrent hash map,
придумать простейший garbage collector который время от времени будет удалять значения после экспирации, написать корректные public/private методы, предложить вариант для многопоточности, на senior позицию возможно придется придумать non-blocking решение с потоком выполняющим удаление элементов. От вас будут ожидать "правильных" вопросов типа "нужно ли пользователю давать доступ к методу удаления элементов после экспирации", неплохо будет написать тесты.
Совет - никогда не пишите в резюме знание языков на которых вы не сможете решить задачу. От вас могут потребовать решать на языке указанном в cv. Был свидетелем того, как кандидат не знал std::map хотя пол резюме у него было в с++. Большую часть времени он потратил вспоминая и в итоге пришел к std::HashMap
3. De-brief
Перед de brief вы заполняете feedback и голосуете - за/против. Для положительного ответа минимум трое рекрутеров должны проголосовать за. На debrief обсуждается решение. При равном счете кандидату будет отказ. Амазону дешевле не взять хорошего специалиста, чем нанять плохого.
Из советов