Собеседование для разработчика — это не просто беседа об опыте и навыках, а многоступенчатая проверка теоретической базы, практических умений и коммуникативных способностей.
Как подготовиться к таким мероприятиям? Мы прочитали много историй, поговорили с коллегами-разработчиками о том, как проходили их интервью, и решили составить небольшой гайд на эту тему.
Он поможет новичкам, которые только планируют устроиться на первую работу, а также тем, кто хочет сменить компанию или сферу.
Этап 1. Беседа о навыках и опыте
Чтобы познакомиться с кандидатом, ему задают стандартные вопросы: про образование, опыт и прошлые места работы, успешные рабочие и личные проекты, ожидания, пожелания и др. Да, эту же информацию могут уточнять и на предыдущем этапе (беседа с HR-специалистом), но будьте готовы повторить.
Что могут спрашивать
- Расскажите о себе.
- Где вы учились? Проходили ли курсы по специальности?
- Где вы раньше работали и почему ушли?
- Почему вы выбрали эту профессию? Что вам в ней нравится?
- Как вы видите ваше идеальное место работы?
- Что вас мотивирует?
- Есть ли у вас опыт работы с требуемыми технологиями/языками/сервисами?
- Каковы ваши ожидания по зарплате?
- Какой режим работы вас интересует?
Как отвечать
Доброжелательно, честно и кратко. Не стоит подробно описывать все детали своей прошлой работы, личную жизнь и хобби. Изложите факты, относящиеся к профессии, сделав акцент на достижениях и реализованных проектах. Чтобы этот этап прошёл успешно, мы рекомендуем заранее узнать больше о компании, её продуктах, технологиях и продумать свои ответы.
Этап 2. Техническое собеседование — проверка хард-скилов
Если первый этап прошёл успешно, разработчика приглашают на техническое собеседование для проверки базовых знаний. Скажем честно, это один из самых сложных этапов. Перед беседой лучше освежить в памяти теорию по своей специальности.
Ниже мы собрали небольшую шпаргалку о том, чего могут касаться вопросы для нескольких востребованных IT-специальностей, а также дали ссылки на дополнительные полезные материалы.
Frontend-разработчик
Здесь могут встречаться самые разные вопросы по HTML, CSS, JavaScript, тестированию, сетям и другим темам.
Например:
- Назовите самые популярные способы ускорения загрузки страницы.
- Как можно оптимизировать загрузку внешних ресурсов на странице?
- Какие преимущества и недостатки у анимаций на CSS и JavaScript?
- Что такое doctype?
- Чем отличаются cookie, sessionStorage и localStorage?
- Что такое прогрессивная отрисовка?
- Что такое floats-элементы?
- В чём разница между отзывчивым сайтом и mobile-first-сайтом?
- В чём разница между attribute и property?
- Что такое event loop?
- Какие основные различия между var, let и const в JavaScript?
Ещё больше вопросов для подготовки можно найти здесь.
Backend-разработчик
Вопросы для этой позиции могут касаться архитектуры, принципов разработки и жизненного цикла ПО, баз данных, различных языков программирования, NoSQL, GIT и других моментов.
Вот несколько примеров:
- Назовите 3 главных преимущества и недостатка вашего любимого языка программирования.
- Расскажите о совместимости следующих языков: *два языка*.
- Чем объектно-ориентированное программирование отличается от функционального?
- Назовите преимущества и недостатки монолита и микросервисов.
- Как вы перенесёте приложение из базы *название* в базу *название*?
- Как NoSQL решает проблемы масштабируемости?
- Какие бывают типы NoSQL СУБД?
- Чем tag отличается от branch в GIT?
- Какими командами в GIT вы выполните следующие действия: *названия действий*?
Вот хорошая большая подборка вопросов, которые потенциальный работодатель может задать кандидату на позицию backend-разработчика.
Java-разработчик
Вопросы здесь могут касаться как объектно-ориентированного программирования в целом, так и более частных моментов: коллекций, методов, классов, исключений Java, SQL, особенностей Java 8-9-11 и др.
Вот несколько примеров реальных вопросов:
- Что такое ООП и каковы его принципы? В чём преимущества и недостатки ООП?
- Что такое класс, объект и интерфейс?
- Как работает сборщик мусора в Java?
- Почему char[] предпочтительнее String для хранения пароля?
- Какие нововведения появились в Java 8?
- Для чего нужны функциональные интерфейсы?
- Как вы понимаете понятия «сериализация» и «многопоточность»?
- Расскажите про java.util.collection.
Здесь вы найдёте много примеров вопросов для собеседований по разным темам в области Java-разработки.
Python-разработчик
Интервью на эту позицию предполагает главным образом вопросы на знание языка (последовательностей, множеств, функций, классов, объектов, многопоточности и т. д.), баз данных, алгоритмов.
Несколько примеров:
- Что такое класс, итератор, генератор?
- Чем модуль в Python отличается от пакета?
- Что такое lambda-функции?
- Что такое Async Python и как он работает?
- Какие методы работы с SQL-базой данных в Python вы знаете?
- Как можно оптимизировать SQL-запросы?
- Какие уровни изоляции транзакций вы можете назвать?
- Что такое архитектура веб-сервисов?
Ещё больше вопросов вы можете найти здесь.
Android-разработчик
Кандидата на эту позицию могут спрашивать про языки Android-разработки Java, Kotlin (и здесь становятся актуальны все вопросы, которые мы описывали выше для Java-разработчика), про работу с сетью, Android SDK, базы данных в Android-приложениях, тестирование и архитектуру.
Несколько примеров:
- Что такое Null safety в Kotlin?
- Почему классы Kotlin по умолчанию final?
- Почему у Kotlin нет checked exceptions?
- Что такое Extensions? Пользовались ли вы ими в проектах?
- Что такое объект Unit и Any в Kotlin?
- Какими способами можно хранить данные в Android?
- Какие компоненты входят в библиотеку Room?
- Какие Android-компоненты вы знаете?
- Что такое Fragment? Зачем он нужен? Чем отличается от Activity?
- Что такое изменение конфигурации?
Вот интересная и довольно большая подборка вопросов для собеседования с Android-разработчиком.
Тестировщик и QA-инженер
Обычно вопросы для этих позиций касаются теории и техники тестирования, методологий разработки ПО и его жизненного цикла, тестовой документации. Кроме того, работодатели могут спрашивать и о дополнительных языках или технологиях: JavaScript, HTML, CSS, jQuery и др.
Примеры:
- Что представляет собой процесс тестирования? Какова его цель? Из каких этапов он состоит?
- Что такое ошибка, дефект и сбой?
- Чем отличаются QA, QC и Testing?
- Какие виды тестирования вы знаете?
- Что вы знаете о жизненном цикле ПО?
- Расскажите, как создать тест-план.
- Какие виды тестовой документации вы знаете? Какие документы оформляет тестировщик?
По этой ссылке вы найдёте подборку, наверное, всех возможных вопросов для QA.
DevOps-инженер
Вопросы на эту позицию могут касаться как теории DevOps, так и Linux, работы с сетями, базами данных, CI/CD, GIT, Docker, Ansible и других технологий и сервисов, которые используются специалистами в работе.
Вот несколько примеров вопросов:
- Зачем нужен DevOps?
- Какие практики DevOps вы знаете и применяете?
- Что такое Scrum и Kanban?
- Что такое GitOps, GitFlow?
- Что такое LA?
- Что такое TCP/IP? Чем UDP отличается от TCP?
- Какие стандартные коды ответов веб-серверов вы знаете?
- Что такое требования ACID в контексте баз данных?
Ещё больше примеров вопросов вы можете найти по этой ссылке, а также здесь.
ML-специалист
Ему могут задавать вопросы по теории ML, проектированию ML-систем, Python и/или С++, CS, NLP, специальным библиотекам или фреймворкам.
Вот несколько примерных вопросов:
- Что такое машинное обучение с учителем и без?
- Что такое корреляция и ковариация?
- Что такое матрица смещения?
- Что такое алгоритм SVM?
- Что такое Random Forest?
- Чем отличаются друг от друга L1- и L2-регуляризация?
- Что такое ансамблевые модели?
- Как строить деревья решений?
Этап 3. Проверка софт-скилов
Умение общаться, работать в команде, задавать вопросы, критически мыслить, принимать решения в сложных ситуациях и другие «неспециализированные» скилы тоже очень важны для разработчика. Поэтому на третьем этапе можно ждать как простых, так и каверзных вопросов на отвлечённые темы.
Что могут спрашивать
- Почему вы решили стать *название специальности*?
- Как вы считаете, какие личные качества важны для *название специальности*?
- Какие у вас слабые и сильные стороны?
- Опишите ваше самое большое достижение и провал на работе.
- С каким самым серьёзным конфликтом в команде вы сталкивались? Как его разрешали?
- Расскажите о ситуации, когда вы не смогли выполнить задачу в срок. Как вы поступили?
- Что бы вы сделали в следующей ситуации? *Описание ситуации*
Как отвечать
Лучше отвечать кратко, без долгих раздумий и с улыбкой. Для многих HR-специалистов важнее не что вы ответите на этом этапе, а как. Рассказывая о реальных ситуациях, делайте акцент на конкретных фактах и своих заслугах.
На вопросы, связанные с вашими проектами, очень удобно отвечать по шаблону PARLA, чтобы не увязнуть в ненужных деталях:
Этап 4. Финал — практические задания
Здесь тоже можно ожидать разного. Например, нам рассказывали про собеседования на позицию тестировщика, на которых нужно было протестировать какой-либо предмет, находящийся в комнате: блокнот, стул, карандаш и т. д.
К счастью, большинство компаний всё же дают задачи, напрямую связанные с будущей работой и проектами.
Как отвечать
Не теряйтесь под действием необычных формулировок задания. Цель этого этапа — проверить, насколько хорошо вы умеете читать ТЗ, знаете алгоритм решения задачи и умеете пользоваться конкретными инструментами для её выполнения. Старайтесь не зацикливаться на лишних деталях. Можно уделить им время после, если основное задание уже выполнено.
Что ещё?
Работодатели могут придумывать и другие вопросы и задания, чтобы проверить кандидатов (разумеется, в рамках тайминга встречи). Не теряйтесь, если получите вопрос о незнакомом сервисе или технологии. Правильным ответом в этом случае будет рассказать всё, что вы о них знаете, и честно резюмировать, что у вас пока не было опыта работы с ними, но вы готовы научиться.
Заранее не угадаешь, какие вопросы попадутся именно вам, но можно подготовиться:
- Внимательно изучите список требований к вашей вакансии на сайте компании, hh.ru или ином агрегаторе. Например, все актуальные вакансии МТС собраны здесь, для каждой чётко прописан список того, что нужно знать и уметь.
- Если какой-то из пунктов требований вам незнаком, не ленитесь изучить тему за время, оставшееся до собеседования. Лучше знать ответ на трудные вопросы хотя бы в общих чертах, чем промолчать. Ваши честность, открытость и готовность идти на диалог многое скажут работодателю о вас.
Ищете работу по одной из этих специальностей? Приходите в МТС
Если сейчас вы в поиске нового места работы, возможно, нам с вами по пути. В МТС открыты самые разные вакансии для разработчиков, а также смежных специалистов IT-сферы — маркетологов, менеджеров проектов, перформанс-менеджеров и др.
В описании каждой из них мы подробно рассказываем:
— с каким продуктом или проектом МТС нужно будет работать;
— что конкретно нужно будет делать;
— что должен знать и уметь кандидат.
Благодаря этому вы сможете качественно подготовиться к собеседованию и не нервничать.
Читать первым в Telegram-канале «Код Дурова»