Собеседования для бэкендеров: как готовиться, тренироваться и не облажаться

e19b592702616b6da2ec3cde8aae08ea.png

Привет, Хабр! Меня зовут Гриша Скобелев, я бэкенд-разработчик, у меня есть гитара, кошка и скейтборд. Я так сильно люблю Spring Framework, что назвал кошку в честь него — Веснуша. Возглавляю программный комитет Podlodka Java Crew, где мы делаем классные конференции. Еще я организовал книжный клуб для бэкенд-разработчиков { между скобок }. Хочу поделиться своим опытом развития бэкендера — от собеседования до наработки разных навыков для роста. Тут будет много ссылок, практических советов и инструкций, которые я наработал за время своей карьеры, общения с другими бэкендерами и проведения конференций и консультаций.

Подготовка к собеседованию: тренировки и полезные ссылки

Тренировка

Лучшая подготовка — это тренировка, то есть ненастоящее собеседование. Некоторые для этого ходят на филлерные интервью — выбирают условно не очень интересные компании и просто приходят пособеседоваться.

Лично я считаю такую практику не очень хорошей. Это часто оборачивается пустой тратой времени, не дает нужной обратной связи и не помогает потренироваться по-настоящему.

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

Кроме Pramp можно воспользоваться сервисами менторов, например, GetMentor или Solvery. Там тоже можно договориться с ментором на mock-собеседование.

Еще один интересный сайт — interview.io (заходить с VPN). На нем публикуют публичные mock-собеседования — можно просто посмотреть и изучить для себя, выписать вопросы, которые не знаешь, чтобы их потренировать. Мы то же самое делаем в рамках подкаста { между скобок } на Ютуб-канале. Там можно выбрать что-то под нужный язык или технологию.

Задачи и навыки

Алгоритмические задачки встречаются часто, особенно в крупных компаниях. Готовиться к ним проще всего на сайте LeetCode. Еще есть разные каналы на Ютубе про алгоритмические задачи — можно поискать и поизучать разборы самых популярных. К этому стоит отнестись просто как к подготовке к экзамену — изучить, потренироваться, выучить, сдать.

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

Общая подготовка

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

Еще есть огромный документ FAANG interview, в котором разработчики собрали заметки по подготовке к собеседованиям в крупные компании: Facebook, Amazon и другие. Он будет полезен и для интервью в компаниях поменьше, так как многие сейчас стараются перенимать практики FAANG.

Как сделать, чтобы твое резюме увидели, прочитали и оценили по достоинству

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

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

Теперь вернемся к самому резюме. Я считаю, что его стоит писать на английском — независимо от того, собеседуешься ты за рубеж или внутри страны. HR-ы на российском рынке знают английский, да и держать в актуальном состоянии одно резюме будет гораздо проще.

Дальше рассмотрим важное про само резюме.

Красные флаги

По моему мнению, есть вещи, с которыми в резюме стоит быть поаккуратнее:

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

  • Ссылки на соцсети. Показать хороший канал в Телеграме — идея интересная. А вот какой-нибудь Твиттер, в котором вы постите все подряд, — нет. Есть риск, что какой-нибудь пост чем-нибудь HR-у не понравится, и вас никуда не позовут.

Облако тегов

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

Вот эти навыки:

  • Cloud-технологии. Это особенно важно для зарубежных вакансий, где владение «облаками» — практически базовое требование. У нас в России ситуация сложнее, но знание облачных технологий все равно пригодится.

  • Docker, и лучше с Kubernetes.

  • Service Mesh, архитектурные паттерны, System Design.

Полезные «мелочи»

  • Фотография — сразу привлекает внимание.

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

  • Краткость. Чем резюме короче — тем лучше.

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

Как вести себя уже на интервью

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

  • Computer Science: структуры данных, внутреннее устройство процессов в программировании и т. п.

  • Продуктовые вещи: метрики, решение конфликтов и т. п. Это уже больше относится к собеседованиям для сеньоров и техлидов.

  • Истории из практики: их лучше заготовить заранее.

  • Процессы в команде и CI/CD: чаще всего спрашивают у сеньоров, к этому лучше подготовиться заранее.

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

Если вам будут задавать вопросы о ваших конкретных решениях, на них очень здорово отвечать по методу STAR — «Situation, Task, Action и Result». Суть в том, что нужно описать:

  • Situation — что именно произошло, в какой ситуации ты оказался.

  • Task — какую конкретную задачу в этой ситуации тебе нужно было решить.

  • Action — какие действия ты предпринял.

  • Result — какой именно результат получил, желательно с цифрами.

Разберем на примере:

  • Situation: У нас в команде было тестирование, но с данными все было непросто.

  • Task: Чтобы облегчить задачу, понадобилось написать генератор данных.

  • Action: Я написал генератор на таком-то языке, с помощью таких-то технологий.

  • Result: Теперь задачи по интеграционному тестированию стоят не три сторипоинта, а один.

Данные по зарплатам от getmatch

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

У ребят в getmatch куча вакансий, и они собирают статистику зарплат, которые там предлагают.

По Java в России медианные цифры вот такие:

  • Джун — 100,000 ₽.

  • Мидл — 200,000 ₽.

  • Сеньор — 300,000 ₽.

  • Тимлид — 350,000 ₽.

По Node.js — такие:

  • Джун — 85,000 ₽.

  • Мидл — 190,000 ₽.

  • Сеньор — 326,000 ₽.

  • Тимлид — 450,000 ₽.

В целом на эти цифры можно ориентироваться, сопоставляя свои ожидания с реальностью.

Полезные ссылки

© Habrahabr.ru