Многие собеседования в бигтех компании на СНГ рынке состоят исключительно из задач. И разве что только последней секции отдается время для обсуждения опыта кандидата. И то больше со стороны софт-скилов.
Я очень не люблю задачи на собесах! Ну прям ооочень. Потому что как минимум к ним нужно готовиться. И на подготовку уходит не 2-3 часа, а несколько дней!
Создадим образ обычного Васи Front-End разработчика, у которого реального опыта работы 2 года. На своем текущем месте он ответственно подходит к делу, все задачи закрывает в срок, с коллегами в хороших рабочих отношениях. Вася чувствует, что уперся в потолок (зарплатный, технический, не важно) на своей работе. И соответственно, он хочет ее сменить.
Вася слышал, что в бигтехах работать круто. Он прекрасно знает, что на собеседованиях в такие компании нужно решать задачи. А что решать? Не очень понятно конечно. Но ладно, он открывает leetcode, спрашивает своих знакомых, какие задачи попадаются в бигтехах. Берет себе недельку, чтобы подготовиться.
Решает-решает задачи. Приходит на собес и ему дают написать полифил Promise.allSettled, решить задачу на пересечение диапазонов в массиве, что-то сделать со связным списком, произвести обход дерева (объекта) без использования рекурсии, реализовать бинарный поиск... Аааааааа 🤯
Я хочу у вас спросить. Вы когда нибудь писали самостоятельно на коммерческом проекте бинарный поиск? Ну прям реально, брали и писали собственноручно helper под названием binarySearch, который реализует данный алгоритм? Вы когда-нибудь писали полифил allSettled на реальном проекте? Я лично за 4+ лет опыта ни разу не реализовывал чего-то подобного в коммерческой разработке, что обычно дают в задачах на собесах в бигтехи. Я делал что-то похожее в пет-проектах. Но пет-проект не коммерческий, это совсем другое.
Так вот вопрос: зачем все это? Разве не проще сделать одну теоретическую секцию интервью? Задать вопросы про реальный опыт кандидата? Спросить, как кандидат решил бы какие-то типовые проблемы, которые встречаются на проекте у компании-работодателя? Примеры:
1️⃣ Тебе нужно сделать tooltip. Как ты его будешь делать и какие ключевые проблемы сразу же заметишь при разработке данной компоненты?
2️⃣ У нас в проекте используется большая форма из 30+ филдов. Как бы ты ее релизовал? Какие инструменты использовал бы для решения поставленной задачи? Что думаешь по производительности этих инструментов?
3️⃣ Нам в проект необходимо интегрировать аналитику. Пока что она только одна, допустим google analytics. Но в ближайшем будущем мы возможно заменим ее на другую аналитику либо будем использовать две аналитики одновременно. Как ты реализуешь такой сервис аналитики в проекте?
Это примеры вопросов с моих реальных интервью. Такие вопросы и другие подобные хорошо раскрывают опыт кандидата. Во-первых, они показывают, решал ли человек похожие проблемы проекта работодателя в других компаниях. Во-вторых, такие вопросы отображают глубину знаний кандидата. На 2-й вопрос про 30 филдов формы нельзя просто ответить
ну я возьму Formik и бим-бим, бам-бам
Если у кандидата есть достаточно опыта в различных проектах, то он расскажет, какие в современном front-end есть библиотеки для работы с формами, спросит у интервьюера про то, нужна ли какая-то сложная валидация и логика для каждого филда, пояснит за производительность разных подходов при выборе конкретной библиотеки.
А что покажет решение задач на собесе? То как Вася задротил 1-2 недели leetcode? Да Вася забудет через те же 2 недели, как решать такие задачи... 😵
---------
В общем и целом, что вы думаете про решение задач на собеседованиях? Вам больше какой формат интервью нравится: только задачи, теоретический формат либо теория + 1-2 задачки?