Технические задания могут касаться структур данных и алгоритмов или конкретных технологий, языков и систем, используемых в компании, куда вы устраиваетесь. Примеры реальных интервью с разработчиками, которые могут быть полезны. Если вы хотите сменить стек технологий или устроиться в крупную компанию, подготовка потребуется. При подготовке к интервью следует отталкиваться в первую очередь от сферы деятельности. Так, Frontend, Backend, Fullstack и CMS Developer будут отвечать на вопросы в кругу своих компетенций и получат разные тестовые задания.
В статье расскажем, какие бывают вопросы на собеседовании разработчика, чтобы вы могли качественно подготовиться к интервью и добиться оффера. Зачастую писать код на собеседовании для кандидатов является большим стрессом. Но по статистике в реальной жизни разработчик большую часть рабочего времени не пишет свой собственный код, а читает и разбирается в чужом.
Классическое собеседование в IT-компаниях включает в себя разговор с рекрутером по видеосвязи, выполнение тестового задания, а также очную встречу с HR-менеджером и техлидом. Цель последнего — выявить сильные и слабые стороны в навыках соискателя. Больная тема в найме, особенно с большим потоком кандидатов. Наверное, после ~70% собеседований я не получил нормальную обратную связь. Встречал или “решили продолжить с другим кандидатом”, или “вы не подходите на позицию \ грейд по итогам собеседования”.
Вы будете использовать новую платформу под названием Leetcode. На странице «Руководства по техническому собеседованию» также содержится обзор каждой структуры данных или вопросы на собеседовании ios senior алгоритма на случай, если вам понадобятся подсказки. Прочитайте его, прежде чем пытаться выполнить задание по кодированию. А значит вы уже должны быть знакомы с такими платформами, как Hackerrank, Learneroo и Leetcode, изучить структуры данных и алгоритмы.
Тут выручит насмотренность ваша и рекрутера — когда человек не знает, о чем говорит, то сложно отвечать уверенно, даже если ответ надиктовывают. От таких историй не застрахован никто, но, к счастью, их процент на текущий момент можно считать пренебрежительно малым. Кстати, если у человека есть примеры его кода в открытом доступе (обычно это только джуны, у мидлов и выше уже NDA https://deveducation.com/ и пет-проектов нет) — это хорошо. Он покажет, ориентируется ли специалист при выборе технологий на проект или же на собственный опыт. Теоретические вопросы для каждого разработчика будут индивидуальны в зависимости от уровня и стека. Помимо теоретических и базовых вопросов, используйте универсальные открытые — они также помогут в оценке мотивов и подойдут для всех типов разработчиков.
В стрессовых ситуациях большинство людей решает их плохо, что вполне закономерно. Да и не особо показательна для программиста способность быстро решать такие вещи. Стресс-тестирования, при которых нужно сделать что-то за минуту, выдержать напор резких высказываний, придумывать разные варианты ответов на один и тот же вопрос, мы не практикуем. Не вижу в таком подходе смысла, ведь в большинстве случаев человек будет работать в спокойной обстановке.
Однажды я попал на собеседование на позицию Senior Go разработчика к Ивану. Собеседование было в два звонка по часу и состояло из 5 логически разделенных блоков. Моя специализация — это Full-Stack разработка на Go (раньше Java). За последние four года я провёл ~150 собеседований и закрыл 12 позиций. В основном Center / Senior backend разработчики и несколько фронтендеров (React, NextJS). Присутствовал при найме PMов, сотрудников поддержки, тестировщиков.
На собеседованиях часто важно определить, как разработчик справился с критическими ситуациями в прошлом. Здесь важно узнать, как они чувствовали себя, когда столкнулись с неожиданными трудностями в процессе работы. Это дает возможность оценить их уровень опыта и способность работать под давлением.
По итогу я решал всё же взять кандидата, и сотрудники отлично справлялись и вливались в коллектив. Поэтому прислушивайтесь к себе – если вы верите в человека, то дайте ему шанс и возможно это будет лучшим выбором. Также важно помнить, что даже если по всем формальным параметрам кандидат вам показался подходящим, но в общении с ним вы почувствовали дискомфорт или какую-то тяжесть, то вот такого кандидата брать не стоит. Вместе вы сможете сделать много великих дел, только если вам комфортно общаться друг с другом. Ведь какими бы профессионалами мы не были, всё же мы в первую очередь люди.
Даже в процессе поиска работы продолжайте ежедневно практиковаться с Leetcode (подробнее об этом позже). Будущее проекты могут предложить такие же или схожие вызовы, и опыт, который разработчик уже имеет, может вполне подготовить его к тому, чтобы справиться с новыми задачами на новом рабочем месте. Самым правильным способом подготовки к такому собеседованию является работа со своим опытом. Нужно вспомнить, какие у вас были конфликты и как они были решены. Вспомнить, как происходило общение внутри команды и между соседними, каких соглашений удалось достичь и какое влияние они оказали на вас. Это обязательно для senior уровней, но также может встретиться и на middle роль.
Без деталей и конкретных рекомендаций, что именно улучшать. Юзабилити-тестирование Если есть задачи на лайвкодинг — подготовлена вкладка и код. Причём обязательно 2 сайта с редакторами на случай, если первый не заработает у кандидата из-за VPN / локации. Опять же, со временем я понял, что наличие умных аббревиатур вообще не влияет на поток кандидатов. Обычно на них никто не обращает внимание, потому что примерно похожие аббревиатуры есть в ~80% вакансий.