2021-03-12 20:44:51
[Внезапно] - Apple Interview - Offer ( Translation to English will be published a bit later )
Привет, давно не виделись
Cейчас занимаюсь активным закрытием задач на текущей работе и оформлением документов, про эту волокиту расскажу позже. Время не было потрачено даром, со мной связались из
Apple, и предложили пройти интервью на позицию
Web Developer в Лондон. Я уже проходил интервью с ними в Канаду, но из-за ковида меня задинамили
Рекрутер предложил заново провести
phone-call, но волшебные слова у меня оффер из
FAANG перевели наш разговор на стадию сразу
on-site через
3 дня. К этому интервью я не стал готовиться, так как уже нахожусь на финальном этапе релокации в Лондон. Этим постом, я хочу подробно рассказать об опыте интервью, надеюсь это тебе поможет
Round 1 - Algo - 45 min
Я не ожидал алго задач на интервью, но они были. Все на деревья. Эти задачи я очень хорошо знал, так что мне повезло и их получилось решить
1. https://leetcode.com/problems/binary-tree-right-side-view/
2. https://leetcode.com/problems/binary-tree-maximum-path-sum/
Round 2 - Front-End - 45 min
1. Реализовать **Promise **
Follow up: Promise.race, Promise.all
https://bigfrontend.dev/problem/implement-Promise-race
2. Валидация большой формы.
Дана форма, около 20 инпутов разного типа. Нужно
сделать валидация на submit с кастомными сообщениями, интервьювер сделал акцент, что валидация должна использовать нативный tooltip.
Форма заняла у меня большую часть времени, так как я совершенно забыл API для кастомных сообщений. В общем, задание на знание нативной клиентской валидации через HTML + JS. Было несколько подсказок от интервьювера, но в целом, получилось справится с задачей.
На MDN неплохая статейка: https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation
Round 3 - Front-End - 45 min
1. Зарефакторить
callback-hell
Дали простыню кода, около 200 строк вложенных колбеков с заданной сигнатурой. Нужно красиво это зерефакторить, не используя Promise. Очень похоже по методу решения, на задачу ниже:
https://bigfrontend.dev/problem/flatten-Thunk
2. Service Worker
Дано клиентское приложение, со статическими ресурсами, которые никогда не меняются. Вопрос от интервьювера - Как сделать, чтобы приложение работало в
offline режиме без сети и отображало статус соединения.
По-сути меня попросили написать -
Service Worker, который записывает в
Application Cache, ресурсы с сервера статики. Я не помнил API для воркеров, поэтому использовал псевдо-код “по-памяти”, интервьювера это устроило, я также объяснил разницу между
Web-Worker и
Service-Worker
Для меня хорошим референсом был вот этот курс:
https://frontendmasters.com/courses/service-workers/
Round 4 - Design Star Widget - 60 min
Любимый вопрос, в амазоне. Нужно заимлементить Star Widget. Исполнение кода есть, нужно показать рабочий результат.
https://codepen.io/RayEuji/pen/qBbqaad
Во фронт доке имлементация почти такая же, можно посмотреть
Round 5 - Design Apple Store- 60 min
Задачка по систем дизайну, которая мне не встречалась, решал по схеме, которую использовал для своих видео, но вместо Infinite Scroll, сделал упор на
- Интернационализация
- Оптимизация изображение и гифок, ленивая подгрузка
- Доступность
- Paralax + Lazy Content appearence
Рисовал в draw.io. Формат интервью - активная дискуссия. Куча вопросов от интервьювера. Совместная проработка решения. То есть, здесь мы не драйвим интервью, а работаем с интервьювером, как со своим коллегой.
Round 6 - Talk with a manager - 30 min
Очень приятное общение с менеджером, обсуждение опыта, не заметил прямых “бехейв” вопросов, фокус был на выполенные проекты и как ты видишь себя в Apple.
Итог - offer Через неделю получил письмо с оффером, фидбека не дали. Заматчили мой оффер от FB + накинули стоков на ~20% больше, чем мне дал ФБ. К сожалению, так как оффер пришел очень поздно и поторговаться с ФБ уже никак, я решил отказаться от оффера. Но интервью получилось реально классным и очень практическим Надеюсь мой опыт поможет тебе #interview
Всем теплой весны Скоро увидимся
1.3K viewsEvgenii Ray, edited 17:44