Как пройти собеседование в ИТ-компании

Составляем резюме, проходим архитектурную секцию и блистаем софт-скиллами

11
Как пройти собеседование в ИТ-компании
Аватар автора

Андрей Зенков

бэкенд-разработчик в Тинькофф

Страница автора
Аватар автора

Анастасия Преснякова

разработчик текста

Страница автора

Я бэкендер в центре разработки Тинькофф в Челябинске — и год провожу собеседования с бэкендерами, фронтендерами и SRE.

За это время провел примерно 60 интервью. Я отвечаю за проверку технических навыков кандидатов, даю задачи на знание алгоритмов уже после того, как соискателя отобрал рекрутер.

Тинькофф — не первое место, где я работаю: первая вакансия нашла меня сама, потом я проходил много собеседований в больших ИТ-компаниях. И практически везде процесс отбора был одинаковым.

Опираясь на свои знания и опыт, расскажу, как новичку или джуну эффективнее подготовиться к интервью в ИТ-сфере. Что-то из материала пригодится и мидл-разработчику.

ЭТАП № 1

Составляем резюме

Чтобы попасть даже на начальное собеседование с рекрутером, нужно выделиться из потока кандидатов. Для этого понадобится хорошее резюме. В Тинькофф Журнале есть материал о том, как составить резюме, я же выделю пару важных моментов исходя из своего опыта. На мой взгляд, качественное резюме прежде всего хорошо структурировано и правдиво.

Четкая структура. Постарайтесь сделать резюме читабельным, включите в него действительно важную информацию: победа на олимпиаде по информатике в восьмом классе, вероятно, будущего работодателя не заинтересует. Также никому не интересно, сколько багов вы пофиксили: важно, что нового и полезного создали для компании.

Чтобы найти самое ценное, попробуйте конкретизировать свои достижения: на прошлых работах, стажировках, учебе. Уточнить поможет такой прием: выделите крупную задачу вроде разработки функциональности сервиса, вспомните, за что конкретно отвечали, как выполняли работу, и — главное — сформулируйте конечный результат. Так рекрутер быстро увидит ценность сделанного и с большей вероятностью выцепит кандидата из потока.

Правдивость. Пишите правду, только правду и ничего кроме правды. Указывайте технологии, языки, библиотеки и базы данных, с которыми взаимодействовали и работали. Компании часто ищут людей с определенным набором навыков — сэкономьте время себе и рекрутерам, не притворяйтесь тем, кем не являетесь.

В конечном счете такой поступок все равно себя не оправдает, ведь на собеседовании я могу зацепиться за любую строчку и начать спрашивать в глубину. Вообще, когда задают глубокие вопросы — это хорошо, потому что правильные ответы поднимают оценку кандидата на собеседовании. Если же он теряется, когда спрашивают что-то связанное с резюме, появляется повод задуматься, не соврал ли потенциальный сотрудник.

Рассылка о том, как жить и богатеть
Лучшая статья недели — в вашей почте каждую среду. Бесплатно
ЭТАП № 2

Проходим начальное собеседование с рекрутером

Собеседование с рекрутером во многом строится на базе того, что он увидел во время скрининга. Скрининг — это процесс отбора резюме из потока других. Так что на собеседовании нужно подготовиться к более общим вопросам о вас как о человеке и профессионале. Проверка базовых софт-скиллов начинается уже здесь, ведь рекрутер не только смотрит, соответствуют ли знания кандидата тому, что указано в резюме, но и оценивает коммуникативные навыки.

Здесь совет один: не бояться и идти на контакт.

Рекрутер — такой же человек, в его задачи не входит напугать кандидата и вогнать его в жуткий стресс. Конечно, люди бывают разные, но в большинстве случаев нанимающий просто хочет пообщаться — профессионально и дружелюбно, в рамках интересов бизнеса. Также помните, что разговор с рекрутером — возможность рассказать, чем именно хочется заниматься в компании, обозначить свои амбиции, направления и проекты, над которыми было бы интересно поработать.

Дополнительные технические вопросы тоже возможны, но сильно не переживайте: самое страшное — с алгоритмами и кодом — впереди. Иногда на этапе скрининга предлагают небольшое техническое тестирование с вопросами базового уровня сложности, так отсеиваются совсем неготовые кандидаты. Главное — не оказаться среди них.

Так что перед собеседованием на всякий случай повторите, что такое, к примеру, многопоточность, и вспомните самые популярные структуры данных.

Процесс отбора резюме — взгляд рекрутера

Аватар автора

Мария Чернядьева

рекрутер в банке

Ваше резюме должно быть подробным и структурированным, но в то же время достаточно кратким и емким. Рекрутер не будет читать CV на три страницы, у него их миллион. Подсвечивайте свои самые сильные стороны и навыки, они не должны пропасть в море менее важной информации: указывайте опыт, релевантный для ИТ-среды, а про то, как вы работали официантом, можно не писать.

Можете просто создать резюме на «Хедхантере» и скачать его оттуда, у них приятная и понятная структура, привычная глазу рекрутера. А еще всегда оставляйте свой телеграм — сейчас это самое популярное средство быстрой связи с людьми.

Напомню о том, что кажется очевидным, но, как показывает практика, не для всех: не нужно ставить в резюме фотографию, где вы лежите на пляже. Не обязателен и строгий официальный портрет, как на паспорт, можете приложить какую-то лайфстайл-фотографию, где хорошо видно ваше лицо: это очень располагает к себе.

Рекрутер не только проводит скрининг, но и назначает все технические секции, организует финальное интервью с командами, а также занимается некоторыми вопросами трудоустройства. Он принимает решение, вести кандидата дальше или нет, анализирует его результаты по всем секциям и сопровождает вплоть до момента трудоустройства.

Если рекрутер прислал вам материалы и попросил подготовиться по ним, то, конечно, это необходимо сделать. Если вы подключаетесь к интервью и сразу показываете, что не открывали ни одну ссылку, присланную рекрутером, — это большой минус. Готовьтесь ко всему, что касается ваших навыков, специализации и позиции, на которую вы хотите попасть.

Важно задавать рекрутеру все вопросы, которые вас интересуют, и выяснять все нюансы. Не бойтесь рассказывать, что вы ищете в плане работы и вакансии, на каком проекте действительно хотели бы работать и чем заниматься в компании.

Если вы в другой стране и вас интересует порядок получения зарплаты или конкретный вид трудоустройства — не стесняйтесь, честно обсудите это с рекрутером с самого начала. Не говорите то, что, как вам кажется, от вас ожидают услышать, иначе рекрутер может подобрать совсем не ту позицию, о какой вы на самом деле мечтаете, а потом будет долго грустить из-за вашего отказа от оффера или увольнения спустя две недели после выхода на работу.

Будьте открыты, честны и доброжелательны при общении: мы, рекрутеры, такие же люди. Из-за потока кандидатов мы привыкаем держать тон на «вы», но совсем не против, когда кандидат сам предлагает перейти на «ты», если это уместно: такое обращение в целом распространено в ИТ-среде и делает атмосферу во время собеседования более непринужденной. Почему бы и нет, особенно если между вами и рекрутером нет большой возрастной разницы и есть обоюдный дружелюбный настрой.

Главное — показать, что вы искренне заинтересованы в работе, на которую собеседуетесь. Поверьте, если вы с ходу заявляете, что пробуетесь на какую-то позицию в компании, просто чтобы оценить свои навыки, дальше вы не пройдете. Как минимум это огромное неуважение к людям, которые вас собеседуют.

Не надейтесь на собственную уверенность или какие-то высшие силы, не думайте, что все априори пройдет легко, если вы просто придете на интервью: это одна из крайностей многих кандидатов. Даже если вы великолепны, потратьте время на подготовку. Если же вы честно подготовились, но чего-то не знаете и сомневаетесь в ответе на вопрос рекрутера — скажите об этом. А если вы знаете ответ, старайтесь излагать свои мысли подробно, объемно и глубоко.

ЭТАП № 3

Пробираемся через техническую секцию

Ура, после интервью и легкого теста рекрутер пригласил вас на следующий этап. Теперь придется немного попотеть. Секция программирования обычно состоит из двух-трех подсекций:

  1. Языковой секции, где проверяется знание языка, который был указан в качестве рабочего.
  2. Секции алгоритмов с написанием кода, где проверяют способность решать с помощью программирования базовые задачи — рабочие или не очень.
  3. При собеседовании на позицию сеньора или тимлида будет еще и архитектурная секция.

Практически все собеседования в ИТ сегодня проходят удаленно: вы открываете «Зум» и, сидя в любимом кресле, в режиме реального времени показываете работу над кодом в каком-нибудь редакторе для кодинга. Писать алгоритм ручкой на бумаге, как это было принято раньше, может, и не заставят, но не исключено, что попросят нарисовать пару схем, объяснить и визуализировать ход мысли.

Я, готовясь к собеседованиям, часами решал задачи на LeetCode и повторял курс по алгоритмам из университета: знал, что из них состоит отдельная секция. Занятия придали мне уверенности в себе, ведь я понимал, какие могут попасться задачи, как их классифицировать и найти решение.

Как всегда, не забудьте про софт-скиллы: собеседование проводит живой человек, который будет подробно спрашивать о том, что вы делаете на экране своего компьютера.

Скриншоты из редактора CodeInterview, в нем часто проводят секцию программирования
Скриншоты из редактора CodeInterview, в нем часто проводят секцию программирования
Фильтр языков в CodeInterview
Фильтр языков в CodeInterview

Секция языка. В ней кандидат разбирается с языками и платформами, на которых ведется разработка. Необходимо знать и понимать их особенности, уметь о них рассказать.

Здесь могут задать теоретические вопросы, показать код и попросить объяснить, что он делает, как его улучшить и какие есть проблемы. Или предложат написать код, который не только будет работать, но и подсветит особенности языка, на котором вы пишете. Вот о чем чаще всего спрашивают в теоретической части:

  • о примитивах языков;
  • о многопоточности;
  • об известных фреймворках;
  • о реализации типовых задач;
  • о моделях памяти.

Стратегия подготовки здесь одна: читать, смотреть, изучать то, что кажется полезным и применимым.

В отличие от секции алгоритмов, секцию по языку в Тинькофф я прошел не лучшим образом. Было две задачи, в обеих были затронуты достаточно важные аспекты C++ — на теорию и на понимание кода: нужно было указать на проблемы, если они есть, и предложить решение. Также мне нужно было что-то запрограммировать на этом языке. Здесь я потратил много времени на несколько не самых сложных аспектов, поэтому на части посложнее его не хватило.

Но в конечном счете все оказалось в порядке: заминки были не такими серьезными, чтобы помешать мне пройти дальше.

Как я уже говорил, сейчас код во время собеседований пишут в онлайн-редакторах, а формат «написать код на листочке» уходит в прошлое. Хотя почему бы и нет: если ты каждый день пишешь код на компьютере, то можешь вспомнить, где поставить скобку, где точку с запятой и так далее.

Для подготовки к языковой секции я читал статьи о том, что спрашивают на собеседованиях, смотрел курс по C++ на «Ютубе». Когда проходил собеседования, старался запоминать вопросы, понять, на что я ответил, а на что нет. Потом изучал то, с чем не справился, чтобы на следующих собеседованиях быть лучше.

Секция алгоритмов. Задача здесь — за определенное время придумать решение, объяснить его интервьюеру и написать работающий и более-менее оптимизированный код. Чаще дают небольшое задание, которое может встретиться на работе. Вряд ли спросят что-то совсем специфичное вроде конкретного алгоритма поиска кратчайших путей в графе.

Во время прохождения алгоритмической секции лучше проговаривать все решения, которые приходят в голову. Даже если они максимально простые и неэффективные, дайте понять, что вы знаете: задачу можно решить и так. И если собеседующий говорит, что нужен более эффективный способ, начинайте смотреть по сторонам.

Бывает, что кандидат придумал решение, но держит его в голове, поскольку оно не оптимальное. А на самом деле оно достаточно хорошее — и интервьюер разрешил бы пойти с ним дальше.

На собеседовании в Тинькофф я хорошо прошел секцию алгоритмов, это помогло вытянуть себя после не самой блестящей языковой секции. Сыграло роль также то, что интервьюер вел себя профессионально: это повлияло на мое решение не только принять оффер от компании, но и самому начать проводить собеседования. Человек, который меня собеседовал, вскоре написал: «Ты хорошо прошел секцию алгоритмов, после испытательного срока можешь начинать проводить собеседования сам».

Ресурсы для подготовки к собеседованию на позицию бэкенд-разработчика

Курсы по алгоритмам:

Сайты, где можно потренироваться в решении алгоритмических задач:

  • LeetCode — платформа с задачами;
  • Codewars — тоже для кодинга и задач, но с возможностью посоревноваться с другими пользователями;
  • HackerRank — сервис, помогающий кодить в рамках подготовки к интервью;
  • Codeforces — сайт соревнований и конкурсов по кодингу.

Литература:

Часто соискатели невнимательно читают условия задачи, а это важнейший момент, потому что там кроются подсказки и ключевые детали. Недавно был такой случай: дан отсортированный массив, нужно проделать с ним определенные манипуляции. И кандидат пытался придумать, как отсортировать массив, хотя в условии было сказано, что он и так отсортирован.

Порой важно задавать уточняющие вопросы, ведь задача может быть сформулирована так: дан набор чисел, сделайте с ним то-то и то-то. Но из условия непонятно, набор каких чисел: отрицательных, вещественных? Это небольшая проверка внимательности и софт-скиллов, такие ситуации предполагают коммуникацию и взаимодействие.

Общие советы для языковой и алгоритмической секций

По максимуму ознакомьтесь с тем, чего компания хочет от кандидата. Наверняка рекрутер пришлет полезные ссылки для подготовки. Часто у крупных компаний есть заготовки заданий, чтобы соискатель заранее узнал, как все проходит. Не игнорируйте их, обязательно посмотрите и изучите все, на что предлагают обратить внимание: это в ваших интересах. И лучше делать это не вечером перед собеседованием, а заранее. У некоторых компаний, например у Тинькофф, вся информация есть в открытом доступе.

Потратьте время на подготовку. Если у вас есть материал, присланный рекрутером, выделите все, чего не знаете или не понимаете. Попробуйте проработать эти аспекты, исключить ситуацию «меня спросили именно о том, чего я не знал, вот неудача».

Если материала нет, попробуйте определить свои слабые стороны, пробелы в знаниях. В этом помогут краткие технические тесты наподобие тех, что иногда дают рекрутеры на первом этапе. Попробуйте нагуглить что-то вроде «какие вопросы задают на собеседованиях по C++, Python, Golang» и ответьте хотя бы на парочку из них.

Дайте себе день отдыха перед собеседованием и постарайтесь снизить общий уровень стресса. Пригодится, чтобы сконцентрироваться на том, что действительно требуется. Планируйте время и постарайтесь сделать так, чтобы до собеседования оставалась пара свободных часов. Заварите чай, пролистайте методичку от рекрутера еще разок, подышите, лениво и расслабленно потянитесь в кресле.

Не прибегайте на собеседование запыхавшись, в попытке срочно переключиться с одного на другое и с постоянными мыслями о том, как сильно у вас вспотела спина. У меня был такой опыт: однажды я прибежал за минуту до начала, голова была не на месте — результат оказался плачевным, я многое завалил.

Будьте вежливы. Если прийти на секцию программирования со словами «что я эти алгоритмы решать буду, они все равно на работе никогда не встретятся», хорошо она не закончится. Не начинайте так взаимодействие с тем, кто вас интервьюирует. Лучше познакомьтесь, поймите, кто перед вами, попытайтесь выстроить начальный диалог. Задайте пару вопросов. Любые попытки разрядить атмосферу встретят с взаимностью.

Выбирайте для работы и собеседования язык, на котором вы хорошо умеете писать. Кажется очевидным, но в реальности не все следуют этому правилу. В Тинькофф мы не ограничиваем людей в языках программирования: можно писать на C++, на Python, на JavaScript и на многих других языках. Главное, чтобы решение соискателя было верным.

Кроме того, на собеседовании мы просим не приступать к коду, пока кандидат не объяснит решение на словах. Он должен представлять, как будет выглядеть решение, перед тем как его писать. По сути, вся наша работа состоит из этого: сначала придумываешь, потом начинаешь делать.

Не бойтесь спрашивать, рассуждать и предлагать. Собеседующий разработчик не заинтересован в том, чтобы кандидат просто показал готовое сухое решение, поэтому продемонстрируйте ход мыслей, умение рассуждать и искать разные варианты. Важны не только знания, но и то, как ими пользуются, применяют на практике. Именно это и делает из вас профессионального разработчика.

Архитектурная секция, или дизайн распространенных систем, — сложный этап для сеньоров или тимлидов. Я пока не проходил и не собеседовал по ней, но наблюдаю за коллегами, за их опытом и понемногу готовлюсь сам. В этой секции нужно не просто решить какую-то задачу, а спроектировать сложную систему, задизайнить решение для комплексного проекта. Глубже и подробнее об этой секции рассказывал CTO Тинькофф Александр Поломодов.

По моим наблюдениям, это важная секция не столько в плане технических навыков, сколько с точки зрения софт-скиллов. Нужно задавать вопросы собеседующему: чем больше удастся узнать о системе, которую предстоит спроектировать, тем будет проще.

Я слышал об одном хорошем подходе. Например, на собеседовании вам ставят какую-то высокоуровневую задачу: спроектировать ленту публикаций, как в «Твиттере», или что-то в этом духе. Сначала нужно узнать функциональные требования, потом нефункциональные требования к системе. А потом уже по кусочкам, по частям собирать ее. При выборе каждого инструмента, каждой части системы стоит объяснить, почему выбираете именно его и чем он лучше остальных.

То же относится к выбору базы данных. Например, я хочу использовать реляционную базу. Но выясняется, что она по каким-то причинам не подходит. Значит, я должен выбрать другую и обосновать выбор в связи с особенностями и нуждами проекта.

Есть хорошая книжка, которая в народе называется «книжка с кабанчиком», — Designing Data-Intensive Applications Мартина Клеппмана. Она дает введение в высоконагруженные системы, в принципы их работы и взаимодействия. Также в интернете много статей, видео и платформ с типовыми задачами этой секции. Примеры можно поискать на Architectural Katas, а на System Design Primer есть базовые темы по дизайну систем, упражнения по объектно ориентированному анализу и проектированию.

Сама секция обычно проводится, например, в Sketchboard — это сервис для создания схем.

Тот самый кабанчик — стоит около 3000 ₽ на «Озоне»
Тот самый кабанчик — стоит около 3000 ₽ на «Озоне»
ЭТАП № 4

Собеседования с тимлидом или командой

Если техническая секция пройдена успешно, рекрутер назначает дату собеседования с тимлидом или с целой командой, куда хочется попасть. Это расхожая практика в больших компаниях: сначала команды выбирают кандидата, а потом кандидат выбирает команду.

У меня было три собеседования с командами, но знаю ребят, у которых выбора не было. Каждый новый сотрудник выбирает по-своему: кому-то хочется работать в драйвовой группе, а кто-то ищет спокойствия и умиротворения.

Если здесь что-то и проверяют, то исключительно софт-скиллы. Мучить никто не будет, все просто хотят познакомиться, узнать, кто вы такой, как с вами общаться и что вас интересует в профессиональной среде.

Советую не относиться к этому этапу с большим напряжением: расслабьтесь и получайте удовольствие от общения с потенциальными коллегами. Задавайте вопросы, чтобы узнать больше о работе, поинтересуйтесь спецификой процессов внутри компании и так далее. Помните, что это ваш шанс окончательно понять, хотите ли вы эту работу, и выбрать свою команду, если их несколько.

Если у команды не возникнет возражений, рекрутер пришлет официальный оффер — после того как вы сами захотите, чтобы вас приняли. А дальше — вперед и за работу.

Что делать, если собеседование не принесло результата

Предлагают грейд ниже. В больших компаниях есть критерии и грейды, по которым определяется успешность кандидата на собеседовании. И случается так, что кандидат заваливает архитектурную секцию, но все равно получает оффер — если хорошо прошел два предыдущих этапа. Например, соискатель целился на позицию сеньора, а ему предложили мидла. Возможно, он хорошо знает язык и решает определенные задачи, но ему негде было получить опыт по архитектуре.

Такое предложение спокойно можно принять. Во многих компаниях есть программы повышения квалификации и подготовки для будущих сеньоров и тимлидов, куда входят не только технические дисциплины, но и курсы по психологии и софт-скиллам. Там можно набраться опыта — и через некоторое время повысить грейд. Если же в такой ситуации кричать, что «в предыдущей компании я работал тимлидом», в отчете собеседующего точно появится строка о плачевном состоянии софт-скиллов.

Мне скандальные соискатели ни разу не встречались: в основном люди понимают, что их ждет, на что они способны и на что могут рассчитывать. Зато попадались слишком уверенные в себе кандидаты, которые не могли подтвердить квалификацию из резюме. В конце концов это сказывалось на технической части итогового грейда.

Не взяли на работу. Если вы не прошли секцию программирования или вас не взяли дальше по какой-то другой причине, не расстраивайтесь — хотя, конечно, говорить такое всегда просто. Если вы не подошли одной компании, это не значит, что не подходите всем остальным. А если это была компания мечты, через некоторое время можно попробовать еще раз: в Тинькофф иногда делают повторные предложения о работе спустя полгода после собеседования.

Не переживайте, что здесь и сейчас вы не смогли что-то сделать. Возможно, просто был не ваш день. Попробуйте подать резюме в другие компании или получше подготовиться к форматам, с которыми не удалось справиться: попросите у рекрутера советы и развернутую обратную связь. Можно решать те же задачи по алгоритмам, читать о том, что спрашивают на секции по языку. У каждого свой подход к развитию, я бы продолжил готовиться.

Жизнь не кончается.

Новости из мира образования, советы по карьере и учебе, вдохновляющие истории — в нашем телеграм-канале: @t_obrazovanie.

Анастасия ПресняковаА у вас были неудачные собеседования?
  • Аглая ВороноваКуда ж без них…3
  • d1mmmkНи разу не встречал никаких "программ повышения квалификации" в живую, только на словах. На самом деле все просто: - проси как можно больше, индексировать никто никогда не будет. - меняй работу как можно чаще, в твоем росте никто кроме тебя не заинтересован; Задержался дольше 2-3 лет — теряешь навыки и в доходе. Новые навыки и рост можно получить только в новом месте.33
  • LentenА еще всегда оставляйте свой телеграм — сейчас это самое популярное средство быстрой связи с людьми. вопрос от деда: а по номеру телефона, который есть в резюме, нельзя разве в телеге найти человека?5
  • Алёна ИгоревнаLenten, емнип там есть возможность скрыть номер настройками приватности: у нас в рабочем чате несколько человек висит, у которых в профиле только ник через @ отображается, но сам номер не показывает.4
  • LentenАлёна, т.е. я такие профили не смогу найти по номеру телефона?0
  • Алёна ИгоревнаLenten, по идее вот эта настройка такую возможность скрывает:2
  • LentenАлёна, ага. нашел. Если поставить Никто, то можно выбрать можно ли тебя найти по номеру телефона0
  • Алексей Ореховd1mmmk, Ну почему же. Приносишь оффер из другой компании и тебе индексируют зп. Обычная практика.0
  • Иван Капустинd1mmmk, сбалансирую ваш комментарий ) — предпоследняя компания, геймдев, 500-1000 сотрудников. Каждый месяц можно выдвинуть человека на повышение и моей команде обычно их согласовывали, обучение для лидов и менеджеров, без проблем проспонсируют прохождение курсов или приобретение обучающих материалов. — текущая компания, геймдев, 3000-5000 сотрудников. Индексация и повышения два раза в год, с обучением так же, но сверху еще куча купленных ранее или просто внутренних материалов5
  • RipleyКнижка с кабанчиком: плюсую. Вообще всё, что от издательства O'Reilly достойно своих денег. Но лучше скачать электронную версию на ЛитРес, выйдет в 4 раза дешевле: https://www.litres.ru/martin-kleppman-1733/vysokonagruzhennye-prilozheniya-programmirov-39100996/ Ещё вне задания часто задают лирические или ситуационные вопросы из популярных статей, например. на Медиуме или TestGorilla. https://medium.com/javarevisited/25-software-design-interview-questions-to-crack-any-programming-and-technical-interviews-4b8237942db0 https://www.testgorilla.com/blog/57-web-developer-interview-questions-to-hire-an-expert/ Иногда прям один в один, как написано в статье. Ну а что заморачиваться :) Однажды разработчик даже так и спросил в ответ: "А это вы случайно не на TopTal вопросы умные прочитали?". Хорошо, что у всех присутствующих на интервью было чувство юмора. Посмеялись и дальше поехали.2

Сообщество