Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Подготовка к интервью Трудоустройство для разработчиков

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

В этом уроке мы разберем, к чему программисту готовиться на собеседовании.

Ключевые темы

Ключевые темы на собеседовании на программиста:

  • О себе. Прошлый опыт
  • Прикладные знания
  • Задачи

Разберем каждую тему подробнее.

О себе. Прошлый опыт

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

На этом этапе будьте готовы ответить на следующие вопросы:

  • Чем вы больше всего гордитесь как программист?
  • Какая самая сложная и интересная задача, которую вы решали в прошлом проекте или в учебном проекте?
  • Как вы тестировали работоспособность кода? Умеете ли вы писать автоматические тесты?
  • Как был построен процесс разработки на прошлом месте?
  • Какую последнюю книгу по программированию вы прочитали?

Чтобы быть готовым к подобным вопросам, создайте заранее несколько проектов на Github, ответьте для себя на вопросы, описанные выше, и познакомьтесь с идеями экстремального программирования. Полезные ссылки:

Прикладные знания

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

К общим знаниям относятся:

  • Базы данных, SQL. Могут попросить составить запрос. Чаще всего интересует знание соединений (joins)
  • ООП. На базовом уровне имеется ввиду умение создавать классы и умение моделировать
  • Веб-разработчиков могут спросить про DOM Api

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

  • java
  • frontend
  • python
  • javascript

Задачи

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

Алгоритмы и структуры данных

На этом этапе могут попросить реализовать переворот односвязного списка или выполнить сортировку пузырьком. Более сложные вещи писать не просят, их могут спросить устно. Например:

  • Как найти пропущенное число в отсортированном массиве, который содержит значения от 1 до 100?
  • Чем отличается O(1) от O(n)?
  • Какая алгоритмическая сложность у бинарного поиска?
  • Как определить наличие цикла в односвязном списке?
  • Как эффективно объединить два отсортированных массива?

Этого раздела не стоит пугаться, никто не требует от вас глубокого знания алгоритмов и всего прочитанного Кнута. Достаточно прочитать одну книгу и немного попрактиковаться. Этот опыт не будет лишним — правильно выбранная структура данных в коде сделает вашу жизнь значительно легче.

Рекомендации:

  • Вспомните логарифмы. Они нужны для оценки сложности. Это единственная обязательная математика для книг по алгоритмам
  • изучите основные алгоритмы
  • изучите основные структуры данных
  • напишите сортировку пузырьком
  • познакомьтесь с хеш-таблицами
  • научитесь выполнять бинарный поиск
  • изучите сбалансированные деревья
  • выучите нотацию Big O, научитесь определять сложность простых алгоритмов

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

  • Грокаем алгоритмы

Операционные системы и сети

Сюда входит огромный перечень тем, например: владение командной строкой, понимание tcp/ip, http, dns, event loop и многое другое. Как правило, эти вопросы не задают напрямую. В основном придумывают различные истории или ситуации. Примеры вопросов:

  • Может ли существовать такой ip адрес: 283.12.30.111?
  • Что происходит, когда пользователь вбивает в браузер адрес google.com?
  • Можно ли в HTTP запросы указывать одновременно query и post параметры?

Рекомендации:

  • прочитайте книгу по операционным системам
  • перейдите на Linux, например, Ubuntu
  • изучите сети на базовом уровне: tcp/ip, dns, http

Операции с числами

Популярные задачи на системы счисления и битовые операции:

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

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

Problem-Solving задачи

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

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

Фактически все задачи на работе — это Problem-Solving. Только в жизни мы можем тратить на это большую часть времени, оптимизировать решение, долго обдумывать. А на собеседовании на это дается намного меньше времени. Поэтому при решении таких задач важно не волноваться и сосредоточиться на проблеме, которую нужно решить.

Написание кода

Чем меньше у вас опыта, тем выше вероятность того, что вас попросят написать код. Обычно просят написать его на листочке или в среде подобной repl.it. На задачу дают 10-20 минут. Примеры:

  • напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти, — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz»
  • напишите программу, которая переворачивает строку. Предложите несколько способов
  • напишите программу, которая проверяет сбалансированность скобок в строке
  • реализуйте программу, которая удаляет директорию со всеми вложенными файлами и директориями — задача на рекурсию

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

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

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

Рекомендации:

  • потренируйтесь писать код на листочке
  • попробуйте рассуждать вслух во время решения алгоритмических задач
  • найдите удобную платформу и оттачивайте мастерство

Вывод

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


Дополнительные материалы

  1. Искусство проведения интервью (Джоэль Спольски)
  2. Что руководители и опытные программисты ожидают от джуниора
  3. Что требуют от джуниоров работодатели: анализ вакансий
  4. Что нужно знать программисту перед собеседованием и как успешно его пройти
  5. 15 Вопросов на собеседовании в Google, из-за которых вы можете почувствовать себя глупым
  6. Логические задачи
  7. Гайд по системам счисления
  8. FizzBuzz, или почему программисты не умеют программировать

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»