Собеседование с Amazon

В Январе 2020 года я прошёл собеседование с Amazon на позицию iOS разработчика.
Контакт с рекрутером.
В Ноябре 2019 года я получил сообщение в LinkedIn от рекрутера: “Ты крутой… мы крутые… Идём работать в Audible…”.
Audible — сервис аудиокниг, дочерняя компания Amazon.

Сообщение от рекрутера.
Поговорив с рекрутером, мы назначили дату собеседования.
Подготовка к собеседованию
Я решил изучить темы, которые плохо знал: BFS, обход лабиринтов, структуры данных.
BFS (Breadth First Search) — алгоритм обхода графа в ширину.
Для этого я посмотрел видео уроки на YouTube по решению задач связанных с BFS и лабиринтами, а затем практиковал знания на LeetCode.
Самым понятным оказалось это видео:
Видео урок по решению задачи обхода лабиринта.
Также я прочел статьи на Interview Cake про основные структуры данных:
- Статичный и динамичный массивы;
- Связный список;
- Хэш таблица;
- Стек;
- Граф;
- Бинарное дерево.
День собеседования.
Телефонное интервью.
Интервью прошло по телефону (phone interview) и длилось один час.
Phone interview/screening — первый этап устройства на работу. Технический специалист и кандидат общаются по телефону. При этом оба работают на общем документе схожим с блокнотом: LeetCode, Google Docs, CoderPad. В этих инструментах нет фич современных IDE: автозаполнение, подсветка синтаксиса, подсказка ошибок.
Устные вопросы.
- Вы знаете Swift, Objective–C? Подсказка: это нормально не знать один из этих языков.
- Как работает управление памятью на Swift? Подсказка: ARC.
- Как работает многопоточность на Swift? Какие технологии существуют? Подсказка: GCD, NSOperationQueue.
Письменный вопрос.
- Напишите класс NotificationCenter в iOS с нуля. Подсказка: паттерн Наблюдатель (Observer).

Диаграмма паттерна Наблюдатель (Observer). “Head First Design Patterns”, Э. Фримен, Э. Робсон и другие.
Эта часть прошла на платформе Amazon — livecode, схожую на LeetCode. Во время интервью я чувствовал, что пишу код в блокноте, но с подсветкой синтаксиса.
Во время написания кода, я и мой собеседник задавали друг другу вопросы:
- Какие функции должны быть в классе?
- Как регистрировать подписчиков? В какой структуре хранить их список?
- Как сделать код читабельней?
Amazon livecode — платформа для проведения интервью.
Что дальше?
Результат собеседования пришёл на следующий день — отказ. После отказа, я запросил отзыв у рекрутера и с тех пор тишина…
Сейчас продолжаю подготовку: спрашиваю советы у техлида на работе, обучаюсь через LeetCode, Interview Cake, YouTube. Дай бог, в дальнейшем подам на работу в Microsoft и Google.
Техлид — технический глава команды разработчиков. Обычно он/она самый сильный инженер в определённой технологии: iOS, Android, Backend и т.д.
Конец.
Новые посты публикуются на канале @TenxEngineer.
О чем написать следующий пост?
Пишите вопросы и предложения @darhonbek!


