Лучшее — враг хорошего, или как я не получил оффер в BigTech (часть 1 из 2)
Хочу рассказать, как пару лет назад проходил многоэтапное собеседование в одну известную большую компанию. Это реальная история, тогда я не был в активном поиске, просто решил по привычке “осмотреться на рынке” — чем стараюсь заниматься раз в квартал.
Несмотря на то, что первую “лычку” senior я получил лет 8 назад — я до сих пор не люблю собеседования. Научился не расстраиваться, научился даже немного ловить фан, но удовольствия они мне до сих пор не приносят.
Особенно не люблю вот эти сухие многоэтапные собесы в BigTech. Сначала тебя встречает HR:
– Почему решили сменить работу?
– Чем занимаетесь сейчас?
– Чего ожидаете от новой компании?
Слава всем фронтовым богам, что ушли в прошлое вопросы типа “где вы видите себя через 5 лет” — а то у меня от них лицо перекошенное становилось, и приходилось обратно домкратом выравнивать.
На самом деле, я тогда просто “приглядывался” к рынку. Но HR-ам такое не нравится — им нужны только "активные кандидаты". Поэтому включил режим "социально одобряемый разработчик":
"Хочу развития",
"Проект уходит в поддержку",
"Ищу вызовы".
Дальше пошли технические вопросы. Где-то 15 штук.
Старался угадывать формулировки, потому что можно ответить по сути правильно, но получить “не засчитано”.
На пару не ответил — например, забыл про stopImmediatePropagation. Проверил после — ни в одном моем проекте за последние годы этого метода не было.
Следующий этап — техническое интервью по JS и React.
Начали с душных задач на this и область видимости, потом пошёл классический Event Loop:
– setTimeout(..., 0)
– Promise.resolve().then(...)
– console.log
И укажи порядок порядок.
💩 Лучей поноса — авторам задач с вложенными ловушками. Такие штуки проверяют не знания, а внимательность в стрессе. А в стрессовом режиме вы в проде не работаете — зачем это ждать от кандидата?
JS-блок прошёл. Но не благодаря опыту, а потому что я готовился. Потому что иначе — никак. Даже сеньорам приходится повторять основы перед собесом.
Дальше — React. Пример с вложенными компонентами. Есть onClick, который меняет state. Спрашивают:
— какие компоненты перерендерятся?
— как это оптимизировать?
Ну там понятно: useMemo, useCallback, memo.
Решил — решил. Но не на автомате, а потому что вспомнил перед собесом.
Хотя на практике я так не пишу. Я уже давно пилю микрофронты на React + MobX. А там observer и так всё мемоизирует. Стейт и методы и так отделены — никаких нужд в useCallback.
Но спрашивают всё равно. Даже если в вакансии написано MobX — спросят про “чистый” React. Спрашиваю в ответ:
— А у вас в проекте MobX и используется useCallback?
— Нет, но это база. 🤷♂️
Последнее задание — сделать input, который отправляет запрос в API.
Важно не забыть:
– обработку ошибок,
– isLoading и индикатор загрузки (да, он называется троббер, и почти никто не знает этого слова),
– и не отправлять запрос на каждый ввод символа → debounce.
Решил, получил хороший фидбек.
В большинстве компаний после этого дали бы оффер.
Но не в этот раз.
👉 В этой компании найм устроен по-другому. У них сильно прокачанный IT HR-бренд, поэтому они могут позволить себе ещё пару этапов.
И какой этап они добавляют чаще всего?
Алгоритмы.
Третий этап. Созвон. Интервьюер говорит:
– Будет 3 задачи максимум.
– Нужно решить хотя бы 1–2.
– Главное — объяснять свои мысли.
Звучит честно. Но я-то знаю, как бывает:
решишь две — получишь “мидл+”
А я ведь хочу “сеньор+” или "техлид”, если у них есть такой грейд отдельный.
Продолжение ниже 👇
Post #521
15K
- ❤ 58
- 👍 44
- 🔥 17
- 😁 3