Всем привет! Эта статья написана по мотивам треда о моем собеседовании в банке и вопросах, которые мне задавали на техническом интервью.
Звонок из банка
В одну из пятниц мне позвонил HR одного известного банка, сказал, что нашел мое резюме на НН, ему оно понравилось и они хотели бы провести со мной тех-чек.
HR скинул вакансию в телеграм, им нужен был человек на React. Каких-то более конкретных технологий указано не было. Но было написано, что главное, чтобы кандидат был хорошим человеком и имел широкий кругозор, а во всем остальном команда прокачает)
Я довольно сильно обрадовался, так как мне не каждый день звонят из крупных банков и предлагают пройти интервью, да и само описание вакансии не предвещало беды. Все было довольно позитивно, не упоминалось каких-то технологий, с которыми я уж совсем не имел дела.
Кстати, вот мое резюме. Можете сравнить свой опыт с моим.
Естественно, я согласился. Договорились на созвон в Zoom в понедельник в середине дня.
Подготовка к интервью
Как уже сказал выше, это был пятничный день, и до собеседования у меня было еще примерно три дня. Если от меня ожидали широкого кругозора, то я готов его был обеспечить) Вернувшись домой с работы, я засел за теорию на Хекслете. За три дня перелопатил практически все курсы по профессии «Фронтенд-разработчик», пересмотрел свои решения и решения учителя в испытаниях после курсов, пересмотрел свой код из проектов, потом перешел на профессию «Верстальщик» и также перечитал большинство теории из курсов по этой профессии.
А вот ссылка на мой профиль на Хекслете. Также можете сравнить свой опыт с моим.
К середине понедельника я был готов поговорить о: массивах, сортировке массивов, о стеке, big o, деструктуризации массивов, использовании rest и spread в массивах, командной строке (перемещении внутри файловой системы, создании файлов/директорий, grep, потоках, pipeline, пакетном менеджере), git, npm, линтингe, о ссылочных типах данных, чистых функциях, объектах первого рода, функциях высшего порядка, map, filter, reduce, об ООП, HTTP, DNS, асинхронности (колбеки, промисы, async/await), о DOM, событиях, Event Loop, перехвате/всплытии, react, redux, webpack, babel, github actions, о моем коде на github.
В тот момент я считал, что уж еще шире кругозора и быть не может)
Собеседование
Пришло время созвона. Мы подключились к zoom. Минут 10 поговорили об общих темах. Я рассказал о себе, о том, как решил заняться разработкой, о том, чем занимаюсь вне работы и мы перешли к технической части.
Составьте свое первое резюме: Вы можете бесплатно опубликовать свое резюме в нашем сервисе «Хекслет-CV» и получить советы по его улучшению от разработчиков и HR-менеджеров
Техническая часть моего интервью заняла 28 минут и состояла из 6 вопросов, на большинство которых я не ответил или ответил не так, как хотелось бы моему собеседующему. По окончании 6 вопроса было принято решение прекратить интервью, так как в команду требовался более опытный сотрудник на данный момент. Мне пожелали удачи, сказали, что у меня все обязательно получится и на этом мы расстались.
Все 6 вопросов приводить здесь не буду, с ними можно ознакомиться в треде по ссылке выше, там же есть и ответы на эти вопросы более опытных участников. Приведу лишь первые два вопроса, которые ввели меня в полнейший ступор и в последующем послужили поводом для написания треда и этой статьи.
- Знаю ли я, что такое IIFE? Некоторое время я сидел в раздумье, но так ничего и не смог сказать по поводу IIFE. Мы перешли ко второму вопросу.
- Дана переменная
var a = 10
иfunction b ()
. Как можно запретить использование переменной внутри функцииb
?
var a = 10;
function b () {...}
b();
Во втором вопросе я тоже не знал ответа. Пытался что-то предположить, но все мои догадки были далеки от истины. Интервьюер сказал, что эту задачу можно решить несколькими способами, например, с помощью статического метода defineProperty.
Далее было еще 4 вопроса, после которых интервью было приостановлено.
Возгорание
Мы попрощались с интервьюером. Я отключился от zoom. Во мне постепенно начала закипать ярость) Я пошел в интернет гуглить ответы на вопросы.
Загуглил, что такое IIFE, метод defineProperty. Мне эти вещи показались настолько специфичными, настолько ненужными (хотя я в итоге встречал IIFE в каком-то из курсов Хекслет, просто там это было описано другими словами), учитывая, что я ожидал вопросов про event loop, вопросов про написание fizzBuzz или пузырьковой сортировки, про жизненный цикл компонента в React.
С этим чувством я ходил целый день и под вечер мне пришла мысль рассказать эту историю в сообществе Хекслета, получить мнение со стороны, что это вообще значило, адекватно ли это вообще? Честно говоря, в ответ я хотел получить подтверждение своему настроению, что это неправильные пчелы и они делают неправильный мед. Написал текст, отправил в сообщество и ушел спать.
Просветление
На следующий день зашел в комьюнити. В треде накопилось около 20 ответов. Кто-то предлагал свои ответы на вопросы, кто-то пытался вспомнить случаи из практики, когда эти вещи действительно были нужны и приводил такие случаи.
Александр Усков, за что ему огромная благодарность, дал несколько развернутых комментариев, почему вопросы с интервью на самом деле хорошие и почему мои интервьюеры молодцы.
Благодаря его комментариям для меня стало более очевидно, что:
Широкий кругозор бывает разный. Бывает широкий кругозор в теоретических знаниях, а бывает широкий кругозор в решении прикладных задач.
Широкий кругозор в теоретических знаниях — это неплохо, но надо его превращать в широкий кругозор решения прикладных задач. Знать много всяких понятий не так круто, как умение применять концепции из этих понятий в решении задач прямо на собеседовании.
У разных команд разработчиков разные требования к кандидатам, потому что разные команды занимаются разными задачами.
Если ты что-то не понимаешь из задаваемых тебе вопросов — это не обязательно какие-то не такие вопросы. Просто пока твоего уровня недостаточно для осознания проблем, которые могут решить задаваемые вопросы.
Так же понял, что очень круто иметь рядом сообщество крутых ребят, которые смогут приоткрыть завесу непонимания в случае чего.
Кстати, далее, в этот же день случился смешной момент. Я наткнулся на статью на Хабре «35 вопросов с собеседования JavaScript-разработчика». Первым вопросом шел вопрос о смысле использования функции IIFE. А еще чуть позже узнал, что Webpack оборачивает все модули в IIFE.
Принятие
В целом мне понравилось, что я поучаствовал в этом интервью.
Благодарен, что HR сам нашел меня. Сам позвал. А технический специалист выделил время на задавание мне этих прекрасных вопросов)
Мне понравилось, что я не поленился и излил свою боль и непонимание в комьюнити. Я Благодарен сообществу Хекслета, которое показало мне, как можно посмотреть на интервью с другой стороны. Со стороны компании.
Всем спасибо. Ушел превращать широкий теоретический кругозор в широкий кругозор решения прикладных задач.
Увидимся на интервью :)