Зарегистрируйтесь, чтобы продолжить обучение

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

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

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

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

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

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

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

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

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

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

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

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

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff