Почему я не получил оффер в BigTech (часть 2 из 2)
Окей. Формат понятен. Онлайн-редактор открыт. Настроение — боевое. В голове уже заранее мысленно прогоняю шаблон:
👉 “уточняем входные данные, обозначаем граничные случаи, набрасываем варианты, сравниваем по памяти и скорости, выбираем лучшее, пишем код, рефакторим, profit”.
Задача 1.
Есть два отсортированных массива.
Нужно вернуть элементы первого, которых нет во втором.
Пример:
diff([1, 2, 3], [2, 4]) → [1, 3]
Предлагаю сначала вариант с Set, потом — с двумя указателями.
Обсуждаем плюсы/минусы, сложность, память.
Даже подискутировали, можно ли считать память O(1), если мы создаём результат. В общем — классический диалог по задачке. Пока знакомились, обсуждали регламент и решили первую задачу, на хронометре - 20 минут. Одна задача решена, ключевые навыки по лайвкодинг задачам продемонстрировал уже, дальше можно уже не повторяться в объяснении основ.
Задача 2.
Реализовать стек с методом getMin.
Это уже чуть интереснее. Обсуждаем:
— Два массива?
— А можно ли в один?
— Что, если удалить текущий минимум?
— Нужно ли возвращать null, если стек пуст?
Показываю решение, параллельно проговариваю все решения.
Мы не просто “пишем код” — мы строим диалог. Показываю, что в реальной жизни я так же обсуждаю архитектуру и решения с командой.
На часах — уже 40+ минут. Чувствую, что время начинает поджимать. Но я старался максимально подробно комментировать решение.
Задача 3.
Классика: “найти длину самой длинной подстроки без повторяющихся символов”.
Пример:
abcabcbb → abc → длина 3
Окей. Тут всё просто — условие знакомое.
Сначала озвучиваю наивное решение: два вложенных цикла, Set внутри. Да, будет O(n^2), но работает.
Потом — оптимальное решение, на “скользящем окне” (тогда я ещё не знал, что оно так называется — просто знал, как работает 😄).
Используем Map, два указателя, обновляем максимальную длину — всё чётко.
Смотрю на часы, с объяснением и решениями пришлось ускориться - время поджимает.
Даю комментарии вида “тут просто проверка, если символ уже был, двигаем левый указатель”,
Периодически спрашиваю интервьюера:
— “Всё понятно? Объяснять подробнее?”
Он отвечает:
— “Да, всё норм, продолжай.”
При этом он что-то печатает в фоне... может, чатится с коллегами, может, инцидент на проде. Кто знает. Я стараюсь не отвлекаться и довести до конца.
Финиш. Спрашиваю пару вещей про компанию, ответ — сухой:
“Проекты интересные. Мне нравится. Надо идти — у меня следующее интервью, уже третье”. Бывает.
Прошло 4 дня. Пишу сам HR:
— Когда следующий этап?
— “По итогам лайвкодинга не готовы продолжать.”
Прошу подробностей. Молчит. Через два дня — снова пишу.
И получаю ответ:
“Вы претендовали на высокий грейд. Эксперт остался недоволен вашими комментариями к последней задаче.”
Комментариями. Не решением.
И тут меня прям переклинило.
Вот список фактов о себе на момент этого собеса:
– занимаюсь программированием с 10 класса
– в IT с 2008 года
– в разработке — с 2011
– Техлид фронта в МТС, после - в Иннотех
– преподавал фронтенд на онлайн-курсе 150+ учеников
– вёл блог, на тот момент — маленький, сейчас — 2к+ подписчиков
– YouTube-канал, который потом вырастет в 5+ млн просмотров.
Я не идеальный кандидат. Я не написал популярный фреймворк.
Но я точно не ноунейм без опыта.
Но отказ — всё равно получил.
Зачем я это рассказываю?
❗️ Не всегда поторопиться и решить всё что дают - выигрышная стратегия.
❗️ Отказ может получить любой. И это не значит, что ты слабый разработчик.
Если было интересно — подписывайся. Я рассказываю про собесы, frontend, React, лайвкодинг, карьеру и реальность в IT:
👉 https://t.me/+hCtbmQOsVjQ0YTFi
Post #522
18.4K
- 👍 207
- ❤ 58
- 🔥 40
- 🤯 10
- 😁 3
- 💯 1