Как пройти техсобеседование в финтех-компанию: рассказывает разработчик Точки
Техническое собеседование (или интервью) — это один из этапов отбора разработчиков в IT-компании. Обычно здесь работодатель оценивает скиллы потенциального сотрудника и смотрит, какие задачи он сможет взять на себя в компании. О том, что важно на техсобеседовании и как его успешно пройти — рассказывает один из лидеров разработчиков в Точке Святослав Посохин.
Прежде чем попасть на техинтервью, кандидат отправляет свои резюме и портфолио в компанию. Затем с ним связывается HR-специалист и договаривается на онлайн-собеседование — оно нужно, чтобы понять, насколько кандидат разделяет ценности компании, в которую хочет попасть.
Техническое интервью — это финальный этап, который проводит «специально обученная» группа людей. Их задача не только оценить скиллы кандидата, но и понять, впишется ли новый человек в сообщество разработчиков Точки. А в какую команду он попадёт — покажет уже Карусель.
Карусель — это механизм адаптации кандидата и выбора команды, в которой он будет работать. Разработчик проходит через 3-4 команды, поработав в каждой по две недели. После этого он выбирает, где хочет остаться.
Конечно, бывает, что ищем разработчика для конкретной команды. Тогда кандидат уже на первом этапе знакомится с коллективом и решает задачи, актуальные для неё.
В отличие от стандартного собеседования, на котором кандидат рассказывает, кем видит себя через 5/10/15 лет, на техническом он, как правило, решает задачи, связанные с его профилем.
Я провожу технические собеседования для разработчиков, которые работают на Python, поэтому оцениваю знание именно этого стека.
Первые полчаса собеседования мы смотрим, как кандидат умеет писать код. Это нужно, чтобы проверить, насколько он владеет языком, как описывает и реализует алгоритм решения. Задачи мы выбираем исходя из личных предпочтений, резюме и опыта специалиста. Обычно кандидат решает по две задачки: одна простая «на разминку», а вторая — посложнее, например:
— Развернуть массив (list) in-place (нужно развернуть тот же самый list, а не создать новый);
— Проверить, сможет ли гостиница вместить всех постояльцев (в идеале за O(n log n));
— Реализовать класс «Банкомат»;
— Реализовать декоратор (здесь много вариантов: логирующий, кеширующий, с TTL и без, и тд).
Если с этим этапом он не справляется, то, скорее всего, мы не общаемся дальше, потому что вторая часть технического интервью — это разбор принятых решений и бэкграунда соискателя.
Кстати, «проваленный» первый этап — не всегда означает отказ, бывают и исключения. Например, однажды к нам на собеседование пришёл разработчик, который совершенно завалил первый этап. Но нам понравилось его логическое мышление и мы решили не отказывать ему, а дать шанс раскрыться. Теперь у нас отличный сеньор-разработчик и один из активнейших членов Python-коммьюнити.
Разумеется, для разных грейдов — разные задания на собеседовании. Чем выше грейд, тем выше ожидания.
Например, джун-разработчик — новичок в профессии, у которого может и не быть за плечами реального опыта работы. Им может быть вчерашний студент, у которого хорошая теоретическая база, но нет рабочих кейсов. Поэтому мы делаем упор на знании языков программирования.
Важный момент — отличие джуна от стажёра. Второй тоже знает язык, но плохо владеет предметной областью. А джун — это всё-таки полноценный разработчик, у которого есть понимание, как всё работает.
Мидл — это специалист, который уже может самостоятельно решить какую-то задачу. Например, разобраться, почему перестал работать какой-то сервис и как это можно исправить.
Сеньор-разработчик способен брать на себя самые сложные кейсы. Он знает, как с нуля сделать сервис, чтобы он работал без багов. Другой важный аспект — сеньор умеет из ТЗ «сделай хорошо» сделать именно то, что нужно заказчику.
Если сравнить разработку со строительством, то получается такая иерархия задач:
— Сеньор может самостоятельно построить многоквартирный дом, провести к нему коммуникации и провести облицовку фасада;
— Мидл способен построить этаж ;
— Джуну же можно доверить отделку квартиры — это тоже серьезный процесс, но даже если здесь допустить ошибку, то глобально ничего не изменится: дом продолжит стоять.
Основное, на что мы смотрим перед интервью — портфолио кандидата. Это первый источник информации для нас, с него мы начинаем знакомство с претендентом. Портфолио помогает понять потенциал человека и определить темы, на которые будем с ним общаться на собеседовании.
Данные из резюме используются с разрешения Руслана Уса, который уже полгода работает в нашей команде
Если же перед нами начинающий разработчик без реального опыта, то для нас важно, чтобы у него было желание учиться и разбираться с разными задачами, релевантными его скиллам. Мы вдвойне ценим, если джун, у которого еще не было опыта, сам придумывал для себя задачи, связанные с написанием кода.
Первую задачу — парсинг сайта с картинками, — я придумал себе сам, когда мне было 13 лет. Мне просто хотелось, чтобы на рабочем столе компьютера автоматически менялись изображения. И я написал программу, которая скачивала разные визуал и автоматически их меняла.
Это была элементарная программа, но я до сих пор помню свои эмоции, когда у меня получилось правильно написать код и всё заработало. Этот пример — доказательство того, что если новичок хочет освоить профессию разработчика, то всегда можно самому придумать себе задачи и так сформировать портфолио.
Как провести техническое интервью: план действий для начинающих
Провести техническое интервью — задача сама по себе непростая. А если вам нужно сделать это впервые, она усложняется вдвойне. Как готовиться к собеседованию? Какие вопросы задавать кандидату во время интервью? Как вести себя в нестандартных ситуациях? Как оценивать уровень соискателей и принимать решение?
Все эти вопросы мы задали техническому интервьюеру из EPAM Ахрору Рустамову. Он собеседует JavaScript-разработчиков в компанию. Несмотря на то, что за спиной Ахрора больше сотни интервью, он до сих пор очень тщательно готовится к каждому собеседованию.
Что делать перед собеседованием
За несколько дней до интервью стоит внимательно изучить резюме соискателя, составить примерный список вопросов и освежить собственные знания.
Изучите резюме кандидата
Я всегда читаю анкету кандидата с карандашом: отмечаю, сколько лет он занимается разработкой, на каких проектах работал, какие технологии использовал и в какой области считает себя экспертом.
Затем, после общего исследования резюме, я фокусируюсь на деталях и начинаю делать заметки в блокноте. Например, если человеку 30-35 лет и он всё время писал только на jQuery, фиксирую этот момент. Если вижу, что синьор-разработчик не работал два года по специальности, отмечаю и это.
Подготовьте список вопросов
Опросник для кандидата на должность JS-разработчика я обычно делю на четыре части: вопросы о карьере, технические вопросы, вопросы на проверку уровня soft skills и практические задания.
— Вопросы о карьере
Это вопросы из серии «расскажите о себе»: где учились, кем работали. Сюда же включаю вопросы, связанные с моментами, которые я выписал во время анализа резюме. Например, если человек раз в полгода менял работу, я обязательно спрошу, почему приходилось так часто искать новое место.
— Вопросы на проверку уровня технических знаний
В первую очередь мне нужно понять, насколько хорошо кандидат знает базовые вещи: основы JavaScript, HTML/CSS, React/Redux и основные фреймворки.
Формулировка вопроса тоже играет большую роль. Если задавать общие вопросы, можно долго проговорить с кандидатом и при этом не сдвинуться с места. Я обычно спрашиваю конкретные вещи – так легче оценить уровень знаний человека.

От базовых вопросов по JS я перехожу к более специализированным. И вновь обращаюсь к своим записям и заметкам. Вижу, например, что в резюме человек указал, что изучал Webpack. Значит обязательно спрошу, чем Webpack 3 отличается от Webpack 4.
Я могу пропустить блок базовых вопросов, если соискатель претендует на позицию senior-разработчика и выше.
Если кандидат отметил, что хорошо разбирается в какой-то одной технологии, я все равно задам вопросы про смежные технологии и языки программирования. Так я проверяю, насколько у человека широкий кругозор, нравится ли ему учиться новому.
— Вопросы на проверку уровня soft skills
Несмотря на то что моя главная задача – оценить технические знания кандидата, я обязательно задаю вопросы, связанные с soft skills. На наших проектах мы работаем в командах, а быть командным игроком без навыков межличностного общения (умения задавать вопросы, слушать и слышать другого, аргументированно высказывать своё мнение) очень сложно.
Вот что я обычно спрашиваю:
- Работал(a) ли по Agile, Scrum?
- Был ли опыт управления, менторинга, интересно ли это?
- Как расставить приоритеты в работе, если у вас есть несколько надвигающихся дедлайнов?
- Вы считаете, что ваш коллега или менеджер в чем-то не прав. Что вы сделаете?
— Практическое задание
Я всегда готовлю для кандидата несколько задач, которые можно решить за 10-15 минут. Если собеседую junior-разработчика, могу дать ему несколько подсказок. Инженерам уровня middle и выше обычно не подсказываю.
Обычно я делаю скидку на волнение – меня не сильно смутит, если кандидат решит задачу неверно. Мне важнее увидеть, как человек мыслит, и примерно оценить качество его кода.
Освежите собственные знания
Если в резюме кандидат отметил отличные знания в области, в которой лично я ориентируюсь плохо, стараюсь подтянуть эту тему – перед интервью читаю статьи, смотрю ролики.
Помню, на подготовку к своему первому собеседованию в качестве интервьюера я потратил целый день. Несколько часов провел на learn.javascript.ru, просмотрел серию книг «You don’t know JS» и освежил знания HTML и CSS.
Что делать во время интервью
Собеседование — дело волнительное, особенно для кандидата. Поэтому интервьюеру с самых первых секунд нужно создать атмосферу, в которой человеку станет комфортно. Будьте дружелюбными и приветливыми, задайте пару общих вопросов, чтобы разрядить обстановку. Если планируете записывать разговор, обязательно спросите разрешения.
Обычно я всегда озвучиваю кандидату наш план действий. Я делю собеседование на три этапа:
- короткий рассказ кандидата о себе;
- мои вопросы: о карьере, технический блок, вопросы про soft skills и практические задачи;
- вопросы от кандидата.
Этап первый: послушать рассказ кандидата о себе
Это возможность кандидата презентовать себя. В этой части интервью инициатива полностью на стороне соискателя. Я очень внимательно слушаю его рассказ и отмечаю какие-то вещи, которые человек не указал в резюме: потом обязательно спрошу о них.
Этап второй: задать свои вопросы
Это самая обширная часть интервью. Тут я задаю все вопросы, которые подготовил, а также те, которые возникают у меня по ходу разговора.
Бывает, человек начинают отвечать не на тот вопрос. Я задаю ему теоретический вопрос на знание технологии, а он переключается на свой опыт работы с ней. В таких ситуациях я прошу вернуться к вопросу и предлагаю обсудить его опыт в конце встречи.
Интересно наблюдать, как кандидат реагирует на вопросы, в которых плохо владеет материалом. По поведению можно понять, как он будет действовать в схожей ситуации на проекте.
Иногда кандидат ведет себя очень скованно и боится ошибиться. Тогда я стараюсь успокоить его, поддерживаю и говорю, что я такой же разработчик, что он не на экзамене. Я прекрасно понимаю, что никто не сможет ответить на все вопросы идеально. Моя задача не «утопить» человека, а оценить его как специалиста и понять, в какой точке он находится сегодня.
Этап третий: дать возможность кандидату задать вопросы
Теперь очередь соискателя задавать вам вопросы. Обычно люди спрашивают о будущих задачах, возможностях роста и развития, а также о бенефитах, которые предоставляет компания.
На все вопросы я советую отвечать максимально честно. Не давайте кандидату несбыточных обещаний: любой обман раскроется очень быстро, и со временм человек разочаруется в вашей компании, напишет плохой отзыв и больше никогда не придет к вам на собеседование.
Вот мой личный список того, чего ещё нельзя делать на собеседовании:
- Говорить кандидату, что тот отвечает неверно. Человек может впасть в ступор и ему будет тяжело собраться и ответить на остальные вопросы.
- Обращаться к кандидату на «ты» без разрешения. Если собеседнику комфортнее перейти на «ты», он сам об этом скажет.
- Использовать повелительный тон в общении. Если человек делает что-то не так, сообщите об этом максимально вежливо.
- Затягивать собеседование. Старайтесь уложиться в час, максимум – в полтора. Не забывайте, что кандидат может испытывать стресс: не нужно держать его в этом состоянии чересчур долго.
Как вести себя в нестандартных ситуациях на интервью
Интервьюеру нужно быть готовым к тому, что кандидат может повести себя на собеседовании совершенно неординарно. Если соискатель может позволить себе странное поведение, то интервьюер — нет.
Рассказываю, что делать в нестандартных ситуациях.
Ситуация: кандидат растерялся и на все вопросы отвечает «я не знаю»
Начните заходить со стороны и задавать дополнительные, уточняющие вопросы. Похвалите человека, если он смог сказать что-то по теме. Похвала поможет кандидату почувствовать себя более уверенно. У меня был случай, когда соискатель думал, что не знает ответ на вопрос. Я успокоил его, подбодрил. После этого он расслабился и стал спокойно отвечать. Многие хорошие специалисты довольно самокритичны — думают, что недостаточно хорошо знают тему. В большинстве случаев это не так.
Ситуация: кандидат занял агрессивную позицию — пассивную или активную
Если все шло гладко, а потом человек резко поменял свое поведение, попытайтесь аккуратно выяснить, в чем дело. Возможно, после вашего вопроса он вспомнил какой-то свой негативный опыт или его элементарно начал раздражать шумящий в переговорке кондиционер.
Были у меня и такие соискатели, которые с самого начала казались мне резковатыми или немного странными. Конечно, я никак не показывал этого своим видом, и вел интервью в своей обычной манере. Я всегда держу в голове, что оцениваю человека как специалиста, и никогда не перехожу на личностные оценки.
Что делать после собеседования
После собеседования я советую заполнить небольшую анкету, выписать рекомендации для кандидата и прийти к выводу — подходит специалист вашей компании или нет. Сделать все это желательно в течение нескольких дней — пока в вашей памяти не стерлись впечатления об интервью.
Заполните анкету по итогам интервью
У меня есть небольшая заготовка анкеты, которую я использую прямо во время интервью. Она представляет собой список тем, напротив которых я ставлю «+» или «–» в зависимости от того, верно или неверно человек ответил на вопрос по этой теме. Я также вписываю туда свои наблюдения прямо во время разговора. Мне остается только все проанализировать и сделать вывод. Обычно на это уходит не больше 15 минут.

Напишите рекомендации для кандидата
У нас в компании после собеседования принято давать кандидату обратную связь. Каждый специалист получает от меня довольно подробный фидбек – что было хорошо, а что стоит подтянуть. Я также делюсь с человеком списком полезных материалов.
Примите решение
Обычно мы берем людей на определенные проекты, поэтому я представляю, какими навыками и знаниями должен обладать кандидат. Я просто сопоставляю все данные из анкеты с нашими требованиями и понимаю, подходит человек или нет.
Анкеты всех кандидатов, которым мы отказали, хранятся в базе. Уже через три месяца человек вновь может прийти на собеседование. На этом интервью я не буду задавать тех вопросов, по которым специалист получил хорошую оценку. Начну сразу с тех, на которых он провалился: так я смогу оценить, улучшил ли он свои знания.
И ещё…
Перед тем как проводить своё первое собеседование, сначала посетите несколько интервью в качестве слушателя. Ещё можно порепетировать и разыграть интервью вместе с коллегой. Если у вас есть возможность взять опытного коллегу на первое интервью, воспользуйтесь такой возможностью.
Что такое техническое интервью
Построить карьеру в IT — очень соблазнительный жизненный трек. Индустрия находится на взлете, компании предлагают отличные условия и высокую заработную плату, каждый день появляются новые и еще более амбициозные задачи, а на рынке труда идет настоящая охота за головами.
Но почему не у всех получается стать частью этого интересного мира и добраться до вершин? Какие препятствия могут встать на пути у начинающих, да и уже опытных, специалистов?
Ответ лежит на поверхности. Любая компания хочет нанять самого талантливого и умелого сотрудника. Из-за этого соискателям приходится проходить целые серии собеседований: в интернациональных компаниях-гигантах процесс собеседования может порой состоять из нескольких этапов и занимать месяцы.
Любое собеседование — путешествие в один конец. Совершишь ошибку — и двери компании мечты для тебя закрыты.
Один из самых распространенных и, в то же время, «опасных» этапов — техническое собеседование. Именно во время этого интервью отсеиваются многие кандидаты, которые до того момента показывали хорошие результаты.
Как проходит техническое интервью?
Перед тем, как разбирать ошибки, необходимо понять — а как вообще проходят технические собеседования?
Для начала давайте определимся с форматом. В основном технические интервью проводят онлайн (например, по Скайпу), а с учетом постковидной реальности это стало еще актуальней.
На техническом интервью кандидату задают вопросы технического характера, напрямую связанные с его специальностью. Однако интервьюер часто намеренно отходит в сторону, чтобы прощупать реальный уровень знаний кандидата и его общую подготовленность.
Например, если вы проходите собеседование на позицию BI-аналитика, то вас преимущественно будут спрашивать про BI-системы (Power BI, Tableau, Qlik) или про датавиз (data visualization). Но могут также погонять по знанию SQL или даже R или Python. В этом ничего удивительного нет — компании нужен специалист широкого профиля. Если вы умеете строить графики в Power BI, но не можете подключиться к базе данных и написать простенький запрос — вы будете мало интересны серьезному работодателю.
С помощью технического интервью работодатель решает сразу несколько важных задач:
- Оценка общей подготовленности кандидата к вакансии. На предыдущих этапах собеседования у соискателя есть возможность смухлевать — он пользуется интернетом или вообще кто-то может пройти тест за него. Здесь же кандидат остается один на один с интервьюером и своими знаниями.
- Оценка коммуникативных навыков. Помимо знаний и умений важным фактором является способность человека общаться с коллегами. Работодатель имеет возможность вживую наблюдать, как кандидат реагирует на стрессовые ситуации, на успех, на неправильные ответы и даже на давление со стороны интервьюера.
- Оценка профессионального бэкграунда. Именно на этом этапе кандидат имеет возможность подробно рассказать о том, что не влезло в резюме: в каком проекте и как он использовал ту или иную технологию, с каким стеком работал и так далее.
Мы определились, что нас ждет на техническом интервью. Перейдем к следующему вопросу — какие ошибки совершают кандидаты и почему они ведут к провалу.
Типичные ошибки на техническом интервью
1. Недостаток профильных знаний
Первая, самая банальная и самая фатальная ошибка — просто недостаток знаний по своему основному предмету. Как ни странно, большинство терпит неудачу именно из-за этого. Странно идти на интервью полностью неподготовленным и надеяться на удачу: вы же не считаете, что потенциальный работодатель настолько глуп?
Замечание. Стоит отметить, что техническое интервью — не самый сложный (с точки зрения профессиональных знаний) этап. Здесь вопросы могут быть самыми разными, но они не подразумевают глубокую степень погружения. Это не Code Interview, тут никто не требует идеально выверенных ответов. Скорее стройных рассуждений и хотя бы поверхностных знаний.
Пример. Вы устраиваетесь на Data Science позицию. Интервьюер вас просит: «Коротко опишите математический аппарат логистической регрессии». А вы знаете только линейную регрессию. Или модель в Python строить умеете, а математику процесса не изучили. Скорее всего, в следующий этап собеседования вы не пройдете.
2. Игра в Незнайку
Вторая распространенная ошибка — отвечать «Я не знаю» на любой вопрос. Причем такой ответ можно услышать даже когда кандидат ответ знает, но не уверен на 100%.
Пример. Во время собеседования на позицию старшего аналитика задают вопрос: «Какую БД вы считаете самой подходящей для хранения информации о клиентах?». Кандидат отвечает: «PostgreSQL». На что интервьюер задает логичный вопрос: «А почему именно PostgreSQL, а не MySQL, например?». После этого следует фирменный ответ: «Не знаю, может, и MySQL». Интервьюеру остается только грустно ухмыльнуться.
3. Отстаивание своей правоты
Еще одна ошибка, которая даже хуже, чем игра в Незнайку — неистовое доказывание своей правоты. Иногда встречаются кандидаты, которые искренне пытаются «объяснить» потенциальному работодателю, как надо жить. Причем прямо на собеседовании.
Спору нет — вы можете быть правы, но подобные дискуссии никак не вписываются в образ коммуникабельного человека. Лучше все же сначала пройти все этапы собеседования, устроиться на работу и только потом на деле показывать, как делать нужно и почему вы правы.
Пример. Идет собеседование на Deep Learning Engineer. Интервьюер вводит кейс: «Перед нами стоит задача создать сверточную нейронную сеть для распознавания лиц с помощью фреймворка Pytorch…». На этом моменте кандидат перебивает и начинает объяснять, что «вообще-то Pytorch уже давно не в моде, в реальном продакшене все используют Tensorflow». Обычно на этом моменте разговор можно закончить.
Замечание. Иногда высказывать свою позицию или свое отношение к какой-то технологии или процессу даже нужно. Если вы делаете это тактично, спокойно и аргументированно, то это может еще больше поднять ваш профессиональный уровень в глазах работодателя. Но нужно быть аккуратнее и не перегибать палку.
4. Узкий профессиональный кругозор
Последняя ошибка, которую нужно выделить в отдельный блок, — отсутствие смежных знаний. Вы можете быть очень крутым специалистом в узкой области, но в мире все больше растет спрос на профессионалов широкого профиля. Не нужно владеть всем, но иметь хотя бы общее представление и небольшой опыт в смежных направлениях — крайне желательно.
Пример. Собеседование на Python-разработчика. При вопросе про библиотеки Python для работы с БД MySQL и PostgreSQL кандидат теряется и не знает, что сказать. Причина проста — он просто никогда не подключался к базе с помощью Python (что вообще является довольно распространенной задачей).
Как готовиться к техническому интервью
Мы с вами рассмотрели 4 самые распространенные причины провала на техническом собеседовании. Но можно их избежать, если подготовиться заранее и придерживаться простых рекомендаций.
-
Самое важное — укрепите свои профильные знания. Никакие рекомендации вам не помогут, если вы не владеете темой. Нарешивайте задачи и кейсы, будьте готовы отвечать на теоретические вопросы.
Например, подпишитесь в Твиттере на Хэдли Уикхема, если вы увлекаетесь статистикой или языком R.
Эпилог
Мы разобрали основные причины провала на технических собеседованиях и способы этого провала избежать. Примените эти рекомендации в своей жизни, не пожалейте время на подготовку — и результат не заставит себя долго ждать, вы начнете щелкать технические интервью, как орешки.
Техническое интервью в Опен Медиа: как проходит, где подготовиться и что обо всём этом думает СТО

Рассказываем, как подготовиться к одному из важнейших этапов собеседований в IT-компанию — техническому интервью. Делимся опытом наших программистов, а также подсказываем, как проходит техническое собеседование в Open Media.
Как выглядит процесс отбора кандидата в IT-компанию
В зависимости от компании, процесс найма может быть абсолютно разным. Часто отбор кандидатов состоит из нескольких ступеней:
- Первичное собеседование с рекрутером.
- Техническое интервью: проходит с вашим будущим руководителем и одним или несколькими сотрудниками компании.
- Тестовое задание: этап до или после технического собеседования.
- Cultural fit интервью; есть не во всех компаниях. Помогает понять, сработаетесь ли вы с командой, а команда — с вами.
- Финальное интервью.
В Опен Медиа процесс собеседования кандидатов на технические должности обычно проходит в 2 этапа: первый этап — знакомство и техническое интервью, второй — тестовое задание (есть не всегда).
На собеседованиях на веб-позиции в Опен Медиа, мы стремимся свести к минимуму количество затрачиваемого времени и для кандидата, и для себя, поэтому стараемся уместить всё в одно собеседование. Бывают ситуации, когда трудно выбрать из нескольких приблизительно равных кандидатов, и тогда мы можем попросить дополнительно ответить кандидата на интересующие нас вопросы.
Антон, ведущий фронтенд-разработчик
В обязательном порядке до технического интервью мы даём тестовое задание для кандидатов на позиции джуниор. Традиционно кандидатов на неё очень много, и тестовое сразу помогает понять, насколько человек заинтересован в вакансии, оценить его навыки и предметно поговорить на собеседовании.
На С++ вакансии в зависимости от того, указаны ли личные репозитории в резюме кандидата, даём тестовое задание или сразу назначаем техническое интервью.
Кандидатам на C++ вакансии мы даём одинаковое тестовое задание всем уровням программистов: оно сформулировано таким образом, что его можно сделать и поверхностно, и очень проработанно. Мы намеренно не даём конкретных технических требований, чтобы посмотреть насколько глубоко кандидат захочет погрузиться в задачу и будет ли задавать вопросы: кроме hard skills проверяем ещё и soft skills.
Максим, ведущий С++ разработчик
В тексте этой статьи мы не будем останавливаться на тестовом задании, а поговорим лишь о техническом интервью.
Как проходят технические собеседования
Формат тех. интервью и вопросы могут отличаться от компании к компании в зависимости от процесса отбора, проекта, должности, а также уровня кандидата.
Обычно технические собеседования проходят так: вас спрашивают о предыдущем опыте, могут предложить решить задачу, написать программу или найти ошибку в коде, в это время проверяя, а иногда и комментируя ваши действия.
Технические собеседования бывают нескольких видов; они могут многое рассказать о порядках, существующих в компании, и том, каково будет там работать. Обычно технические интервью проходят в таких форматах:
- Whiteboard (перед вами кладут лист бумаги, ставят доску или попросту просят открыть Google-документ и написать программу).
- Теоретические вопросы из области разработки и алгоритмической базы.
- Задачи на ревью кода.
Вопросы, которые могут задать на техническом собеседовании
В зависимости от опыта, грейда и навыков кандидата вопросы на техническом интервью могут различаться. Джунам придётся повторить теорию, а более опытным специалистам — мидлам и сеньорам — будут задавать практические вопросы с упором на понимание технических задач.
Вопросы можно условно разделить на три категории: теория и технологии, вопросы на сообразительность и задачи на кодинг.
Вопросы на знание технологий. Ответы на эти вопросы сложно вывести логически или догадаться о них; тут вы либо знаете/помните о конкретной технологии, либо нет. Такие вопросы обычно включают в себя вопросы знания терминологии, библиотек, функций и алгоритмов.
Вопросы на сообразительность и задачи на логику — это разнообразные головоломки. Во многих компаниях таких вопросов не задают, но в Google, например, когда-то была загадка о мячиках для гольфа и автобусе или блендере.
Кодинг или код на ревью. Вас могут попросить написать программу и/или сделать ревью кода: сказать, что вам в нём не нравится, найти ошибки, прокомментировать архитектуру.
Как проходит техническое собеседование в Опен Медиа
В технических собеседованиях Open Media помимо HR обычно принимает участие разработчик с того же направления или проекта, на который открыта вакансия, а также СТО. На собеседование фронтендера, например, может быть также привлечён бэкенд-разработчик для случаев, когда в резюме соискателя указаны навыки фулстека.
Мы задаём общие вопросы из разных областей разработки, чтобы проверить базовые технические знания, знания алгоритмов, структур данных и оцениваем широту кругозора соискателя.
Что спросим у джуна
Джунам важно иметь общее представление об используемом технологическом стеке и знать теорию.
На веб-вакансии джунам задаются теоретические вопросы из той области разработки, на которую претендует кандидат, вопросы на знание используемого стека, а также вопросы из сопряжённых областей.
На С++ вакансии задаём технические вопросы без лайвкодинга или код-ревью.
Интерес к проектам компании, портфолио и софт-скилы также играют не последнюю роль.
Что спросим у мидла
У кандидатов на вакансии уровня middle будем оценивать практические навыки и понимание процессов; им необходимо не просто знать определения, но и показать, как применить теорию на практике. В качестве подготовки к техническому интервью советуем посмотреть используемые в вашем последнем проекте паттерны и технологии.
Для кандидатов уровней мидл и сеньор на веб-позиции мы предлагаем лайвкодинг в сочетании с код-ревью. Это отличный способ посмотреть на ход мысли и рассуждений человека, попутно обсудить предпочтения по кодстайлу и выбору технологий для решения задач.
На С++ вакансии мидлам и сеньорам задаём теоретические вопросы без лайвкодинга или код-ревью. Вопросы, как правило, для всех грейдов одинаковые, но с ведущими программистами мы успеваем пройти большее число вопросов, добираясь до более сложных.
Что спросим у сеньора
Помимо теоретических знаний и понимания практического применения технологий для кандидатов уровня senior добавляется умение решать архитектурные задачи и развитые софт-скилы. Сеньорам важно уметь разобраться в новом для себя вопросе, самостоятельно найти решение незнакомой задачи и понимать её важность для бизнеса.
Как подготовиться к техническому интервью
Некоторые разработчики придерживаются принципа «чем больше ходишь, тем лучше становишься готов», а кто-то ходит на собеседования для поддержания формы, не ища работу.
Вне зависмости от вашей цели воспользуйтесь этими практическими советами от наших программистов:
- Перед собеседованием соберите портфолио на GitHub с техническими проектами.
Build your own X — репозиторий с гайдами о том, как создать свой проект в различных областях: от AR и ботов до эмуляторов, баз данных и ОС.
- Не нервничайте и спокойно демонстрируйте свои знания, не боясь показать, что чего-то не знаете.
- Чётко и без воды отвечайте на вопросы.
- Заранее ознакомьтесь с продуктами компании.
- Ориентируйтесь на свой опыт и знания, приобретённые в процессе работы: не страшно, если вы чего-то не знаете; главное — ваше глубокое понимание того, чем вы уже пользуетесь, и способность найти решение за пределами своих знаний.
- Если не знаете ответа на вопрос, вслух размышляйте, где бы вы нашли решение или предложите альтернативное решение из вашего опыта. Интервьюер ожидает от вас мыслей и рассуждений.
- Предлагая альтернативное решение, порассуждайте, чем ваш подход лучше или хуже.
- Если не знаете с чего начать решение задачи, попросите у интервьюера намекнуть на решение, начните с самого очевидного решения или даже псевдокода, чтобы было от чего отталкиваться.
- Проговорите алгоритм решения устно: тогда, возможно, и кодить не придётся.
- Заранее настройте камеру и звук, если собеседование проводится удалённо.
Спокойствие и вдумчивость однозначно помогут вам успешно пройти техническое собеседование. Стремление рассмотреть любой вопрос с позиции логики также будет не лишним. Не нужно фокусироваться на волнении, а просто посидеть, покрутить задачку или вопрос, чтобы подключилось логическое мышление. Никто не будет унижать за неправильный ответ.
Антон, ведущий фронтенд-разработчик
Чего не нужно делать, если не знаете ответ на вопрос
Невозможно знать ответ на любой вопрос, даже после многолетней практики: при небольшом опыте многое ещё не встречалось, а сеньоры и тимлиды уже успели многое позабывать. Но чего точно не нужно делать, если в голове ни одного решения, так это долго молчать, оправдываться, что обычно вы всё помните, а сейчас вдруг забыли.
Лучше честно сказать, что вы не встречали этого в работе и поразмышлять над альтернативным решением или тем, как бы вы стали искать ответ на этот вопрос на практике.
Ресурсы для подготовки к техническому собеседованию с примерами вопросов и задач
Программисты Опен Медиа при подготовке к собеседованиям выписывают себе что-то из прочитанных книг и статей, вспоминают задачи, которые приходилось решать в работе, а также смотрят записи открытых интервью.
Мы собрали несколько ресурсов, которые могут помочь подготовиться к техническому собеседованию:
-
: справочник для технических собеседований со шпаргалками и практическими советами. : базовый курс с вопросами и планом изучения информатики; подходит тем, кто только начинает ходить на тех. интервью. : полезный репозиторий для тех, кто готовится к собеседованию по системному дизайну. : список вопросов по широкому кругу тем и языков: от C и C++ до .NET, CSS, различных технологий пользовательского интерфейса и баз данных. : сборник с ресурсами, которые помогут подготовиться к техническому собеседованию. : база с интервью по кодингу с типовыми вопросами, чтобы понять подход к настоящему собеседованию. с коллекцией вопросов, которые могут встретиться на техническом собеседовании, а также информацией для знакомства с процедурами, связанными с процессом найма. От резюме до интервью — здесь полный пакет. : книга, которую наряду с Codeforces, рекомендуют HR Гугла. : тренажёр от Google, который погоняет вас по всем популярным вопросам в направлениях IT support, Data Analytics, UX Design и других, проанализирует ваши ответы и даст рекомендации, что ещё нужно подтянуть. : статья на Хабре с примерами задач от интервьюера и кандидата в одном лице. : просто весёлая история расслабить нервы перед интервью
Техническое интервью глазами CTO
Что важно и показательно для интервьюеров во время собеседований? Не можем сказать однозначно, как в других компаниях, но вот что важно нашим программистам и техническому директору:
Помимо опыта и навыков общения, я отмечаю наличие своих проектов у кандидата; особенно у джунов и соискателей уровня мидл. Мне кажется, если у кандидата нет личных проектов, это говорит о том, что ему/ей не очень интересно программирование в целом, а интерес и желание работать — это самое главное. Во время интервью я также оцениваю уровень владения технической базой и знание алгоритмов.
Слава, директор
Обычно во время интервью я обращаю внимание на то, как кандидат формулирует мысли при ответе, делится ли опытом работы и личной позицией по конкретному вопросу. Мне интересно наблюдать за ходом мысли каждого кандидата. Всегда здорово найти человека, с которым можно будет обмениваться знаниями.
Антон, ведущий фронтенд-разработчик
Во время технических интервью я, кроме самих знаний, смотрю на то, как человек общается: оцениваю, впишется ли человек в команду. С точки зрения хард-скилов я смотрю на то, насколько кандидат дотошен, стремится ли он разобраться в вещах, с которыми работает, пытается ли он ответить на вопросы, на которые не знает ответа, и честно ли отвечает.
Максим, ведущий С++ разработчик
Теперь вы представляете, как проходят технические собеседования в целом, где можно подготовиться и чего ожидать.
На тех. интервью в Open Media ничего необычного и стрессового вас точно не ждёт. К тому же мы стараемся экономить ваше время, не приглашая на десятки созвонов, и сделать процесс собеседований максимально комфортным.