Співбесіду на програміста в Amazon

Представляю вашій увазі переклад своїй статті Amazon software engineer interview, спочатку опублікованій англійською на sobit.me.
Amazon - We Pioneer
Не так давно зі мною зв'язався технічний рекрутер з Amazon. Компанія організовує триденну онсайт співбесіду за наймом програмістів в їх берлінський офіс.
Весь процес, починаючи з того, як зі мною зв'язалися, і закінчуючи підписом контракту, зайняв близько двох місяців. Я хотів би поділитися досвідом, як все пройшло, і що, на мій погляд, допомогло мені отримати роботу.
Якщо я не згадав чогось важливого в статті, запитуйте в коментарях. Постараюся відповісти максимально детально.
27 квітня: Вийшли на контакт
Рекрутер зв'язалася зі мною через LinkedIn. Вона писала, що їм потрібні програмісти в берлінський офіс, і просила надіслати їй оновлене резюме, якщо мені це цікаво. З моєю звичкою постійно тримати своє резюме оновленим я відправив його вже на наступний день.
У відповідь я отримав трохи інформації про саму посаду та про те, як буде проходити співбесіда. В той же день я отримав посилання на технічне завдання на Hackerrank. Перший крок полягав у його вирішенні.
На завдання давалося дві години, і рекрутер попросила закінчити його до 5 травня. Я вирішив не поспішати і почекати до вихідних.
1 травня: Прескрининг
На Hackerrank є платформа для проведення компаніями технічних співбесід під назвою Hackerrank for Work. Саме на неї я потрапив, пройшовши по посиланню з листа. Платформа пропонує вбудований лічильник часу, веб-редактор з базовими можливостями автодоповнення для Java, безпосередньо постановку задачі і можливість протестувати її рішення з різними наборами вхідних даних, включаючи власні.
Ні рекрутер, ні платформа не повідомили мені про доступних на співбесіді мовах програмування до того, як я перейшов до вирішення завдань. Все, з чого я міг вибрати, C, C++, Java та пара інших. Це пішло врозріз моїм планам використовувати Go або PHP, і в підсумку я вибрав Java.
Співбесіду складалося з трьох завдань. Технічно їх можна було вирішувати в будь-якому порядку.
Завдання
Перша задача була про об'єктно-орієнтованому програмуванні. Було дано кілька класів з їх методами, і вимагалося надати ефективне рішення, підтримуючи при цьому легко читається і чистий код.
другим завданням були алгоритми. Рада, який допоміг особисто мені: почніть з рішення задачі вручну і візуалізуйте своє рішення — це допоможе поглянути на завдання під більш широким кутом і зрозуміти, які саме структури даних та алгоритми до неї підходять. Я вирішив задачу на папері. Рішення виявилося досить простим, і я всього лише переніс його в код.
Не обійшлося і без помилок: замість того, щоб сконцентруватися на останньому завданні, я продовжував оптимізувати і без того робоче рішення і рефакторіть код, щоб виглядав красивіше. Неправильно розставлені пріоритети. Урок засвоєний.
В останньому завданні потрібно було провести аналіз складності рішення попередньої задачі, а також пояснити свій вибір. Через брак часу мені довелося обмежитися лише аналізом.
4 травня: Співбесіда по телефону
На наступний день рекрутер вітала мене в листі по електронній пошті про проходження першого етапу. Перед тим, як запросити мене на онсайт співбесіду в берлінський офіс, вона хотіла зателефонувати і поговорити про моїх технічних навичках. Ми домовилися на 4 травня.
Підготовка
У мене було всього два дні на підготовку. Я пробігся по основним алгоритмам і структурам даних з наступного списку:
Крім загальних знань, вам також треба вміти обґрунтовувати складність алгоритмів і стандартних операцій над структурами даних. Мені в цьому дуже допомогла Вікіпедія.
Телефонний дзвінок
Дівчина на іншому кінці дроту виявилося дуже доброзичливою: ми почали розмову із загальних тем, типу погоди і життя в наших містах. Після цього ми перейшли безпосередньо до обговорення моїх технічних навичок. Вона торкнулася майже всі зі списку вище, а також поставила кілька запитань про динамічне програмування і рекурсію. Пару раз я спіткнувся на точних визначеннях деяких термінів, так як звик називати їх по-своєму. Зазвичай рекрутери не можуть сильно заглиблюватися в технічні теми, але їй було цікаво, як саме я їх називав і чому.
Під кінець вона перейшла на поведінкові питання. Я не готувався до них заздалегідь, і мені доводилося з ходу перебирати в голові відповідні історії до кожного питання.
Закінчили розмову її позитивністю про мою кандидатуру і впевненістю, що я проведу таке ж гарне враження на онсайт співбесіді її колегам. Відразу після цього я замовив книгу для підготовки до технічного співбесіди (вказана в розділі Посилання). І замовив її, до речі, через Amazon.
2 червня: Онсайт співбесіду
Через якийсь час мені прийшло два листи від рекрутера: в одному мені надали матеріали для підготовки до співбесіди, а в другому — форму з питаннями для заповнення. Питання були, в основному, про моєму поточному положенні, як Amazon може (і потрібно) допомогти мені з переїздом, про моїх поточних умовах роботи з точки зору заробітної плати та бонусів, і який день і час мені підходять для співбесіди.
Після надсилання заповненої форми на четвертий день я отримав підтвердження про співбесіді від нового рекрутери з офісу в Берліні. Ще через тиждень вона відправила мені докладний розклад з іменами та посадами тих, з ким мені треба було говорити. Було корисно знайти їх профілі LinkedIn, щоб заочно познайомитися поближче.
Підготовка
У мене було трохи менше місяця для підготовки. Я розумів, що не зможу освоїти куплену книгу повністю, тому вирішив приділити час трьох завдань з кожної глави. Увесь хід думок і ітерації рішення я описував на папері і порівнював їх з рішеннями в кінці книги. Чорною ручкою я вирішував завдання, а червоною — виправляв помилки. Метою було бачити менше червоного з кожною наступною завданням.
Цікавий ресурс для практики, який я відкрив для себе, — LeetCode. Так вийшло, що мій друг також вирішив зайнятися цим, і ми присвятили дві години кожного четверга після роботи спільного вирішення завдань.
За два тижні до співбесіди я почав готувати відповіді на поведінкові питання. Багато кандидатів недооцінюють важливість подібних питань і готуються тільки до технічної частини. Так не можна! Интервьюверам важливо дізнатися вас як особистість і зрозуміти, чи хочуть вони працювати з вами в одній команді. Мені було зручно писати відповіді у вигляді історій в стилі STAR. Я покрив наступні ситуації: помилки і провали, конфлікти, приклади лідерства. Як порада, постарайтеся говорити в своїх історіях більше про себе, а не про команду, з якою ви працювали. Таким чином інтерв'юеру буде легше оцінити ваш особистий внесок.
Вам треба чітко знати, чому ви хочете працювати в Amazon. Якщо ви не можете чесно відповісти на це питання, то подумайте, чи підходить вам це місце. Обдурити інтерв'юерів не вдасться, і це буде втратою часу для всіх. Зрештою, навіщо намагатися витрачати дорогоцінні роки свого життя на те, що вас не цікавить?
Ви повинні вміти говорити про себе. В ідеалі ви повинні бути готові розповісти про свою освіту, прагненнях, ключових моментах у вашій кар'єрі, а також про сильні та слабкі сторони характеру. Не менш корисним було б підготувати список питань про компанію і про команду, з якою доведеться працювати.
День співбесіди
Кандидатів попросили взяти з собою паспорти і підійти на 10 хвилин раніше призначеного часу, щоб зареєструватися і підписати угоду про нерозголошення. Потім один з працівників проводив мене в кімнату, де і повинні були проходити мої співбесіди.
Все було чотири співбесіди за 50 хвилин з 10-хвилинними перервами між ними і додатковими 15 хвилинами перед останнім. Кожне співбесіду складалося із 40 хвилин для вирішення завдань і 10 хвилин для поведінкових питань.
На першій співбесіді мене попросили спроектувати об'єктно-орієнтовану систему. Треба було побудувати інтерфейс, який би використовувався іншими розробниками для створення бібліотек на її основі. Все було просто спочатку, але по ходу справи интервьер ускладнював завдання новими вимогами. Закінчилося співбесіду обговоренням ситуації, де я не впорався із завданням в поставлений термін.
найважливіше на даному етапі: не приступайте до виконання завдань до тих пір, поки не буде повного розуміння, що від вас очікується. Ведіть себе на цих співбесідах як на мозкових штурмах: спілкуйтеся з інтерв'юером, задавайте питання, обговорюйте рішення, і коли всім буде ясно, що треба робити, беріть в руки маркер і робіть.
Не менш важливий рада: якщо ви десь застрягли, не соромтеся і просіть про допомогу. Найгірше, що кандидат може зробити в такій ситуації, — це мовчки дивитися на дошку без поняття, що робити далі.
На другому співбесіді була технічна задача в рамках продукту. Треба було знайти правильний підхід до вирішення, визначити відповідні структури даних і алгоритми і розписати рішення на дошці. В останні 10 хвилин ми говорили про те, як я повів себе в конфліктній ситуації з колегою.
На третьому співбесіді я проектував системи для різних користувальницьких сценаріїв. Малював компоненти на дошці, пояснюючи при цьому, який з них за що відповідає, і як відбувається спілкування між ними. В кінці мене попросили розповісти про ситуації, де я вирішив працювати над чимось без згоди свого керівника.
Остання задача була цілком про алгоритми. Найпростіше рішення було очевидним, так що я почав з питання, чи варто мені витрачати час на нього або сфокусуватися на більш оптимальному. Він попросив все ж почати з найпростішого, після якого, звичайно ж, пішов ряд ітерацій по оптимізації до тих пір, поки у нас не закінчився час. Після він запитав мене, чи брав я рішення, про яке шкодував пізніше. І якщо так, як би я вчинив у такій ситуації сьогодні.
Після співбесіди присутній неприємний осад, ніби все завалив, так як ні на одне рішення до завдань не відреагували: "Супер! Ось це ідеальне рішення!". Не поспішайте засмучуватися — це нормально! Ніхто і не чекає, що ви знайдете це "ідеальне рішення". Завдання на співбесіди готують саме так, що немає можливості повноцінно їх вирішити за 40 хвилин. Все, на що інтерв'юери звертають увагу, — як далеко і з яким ходом думок ви можете зайти.
16 червня: Оффер
Amazon знадобилося вісім днів, щоб прийняти рішення. У п'ятницю рекрутер з берлінського офісу написав, що вони вибрали мене на посаду. Ми обговорили подробиці по телефону в понеділок, і через три дні, 16 червня, я отримав оффер з усіма цифрами.
На наступний день ми роз'яснили деякі питання, які я підготувала, а також декілька додаткових, потрібних мені для звільнення з поточної компанії. І в кінці того ж дня я відправив офіційне ТА в Amazon.
Посилання
Подяки
Антон Попов виступав наставником в процесі найму і обговорював чорновий варіант цієї статті разом з Шерзодом Абдуджабборовым і Умедом Худойбердыевым.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.