25 классических вопросов, которые HR-ы задают программистам на собеседованиях

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

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

Категория общих вопросов

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

  • Что такое высокоуровневый и низкоуровневый язык программирования?
  • Что такое полнота языка по Тьюрингу?
  • Какие есть операторы цикла в вашем языке и методы организации цикла без операторов?
  • Что такое компилятор и интерпретатор?
  • Какие бывают типы констант?
  • Дайте определение императивным, функциональным и процедурным языкам программирования. Приведите по 2-3 примера каждого.
  • Что такое методология программирования? Что представляет из себя Agile.
  • Жизненный цикл программы – опишите или изобразите его.
  • Что такое модульное программирование, в чём его плюсы и минусы.
  • Когда вышла последняя версия вашего языка, какие основные изменения и нововведения?

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

Методы сортировки

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

  • Изобразите алгоритм сортировки методом пузырька.
  • Изобразите алгоритм быстрой сортировки.
  • Изобразите алгоритм сортировки методом вставки.
  • Изобразите алгоритм сортировки методом слияния.
  • Изобразите алгоритм поразрядной сортировки.

Алгоритмы поиска и замены

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

  • Напишите программу поиска минимума и максимума в массиве из 100 чисел.
  • Напишите программу поиска пропущенного значения в массиве целых чисел от 1 до 100. Текущий размер массива – 99 чисел, рассмотрите варианты, когда он уже отсортирован или ещё нет.
  • Напишите программу поиска повторяющихся значений в массиве целых чисел от 1 до 100. Текущий размер массива – 101 число, рассмотрите варианты, когда он уже отсортирован или ещё нет.
  • Напишите программу «разворота» массива целых чисел. То есть первое и последнее меняются местами, второе – с предпоследним и так далее. Без использования специальных библиотек.
  • Напишите программу вставки пропущенного или удаления дублированного значения в массиве целых чисел от 1 до 100 без использования специальных библиотек.

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

Работа со строками

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

  • Напишите программу, проверяющую являются ли две строки анаграммами друг друга.
  • Напишите программу проверки строки на проверку наличия только символов или только цифр.
  • Напишите программу, подсчитывающую количество гласных и согласных в строке.
  • Напишите программу, которая вытаскивает из резюме основные данные (ФИО, профессия, город, возраст, стаж работы) и передаёт их в соответствующие массивы для дальнейшей работы. Подсказка: необходимо не только разбить текст, но и удалить недопустимые символы, лишние пробелы, присвоить нужный тип.
  • Покажите несколько методов конкатенации строк и объясните различия в исполнении кода.

Также популярностью пользуются вопросы, аналогичные «массивным»: про поиск дублированных символов, в частности, пробелов, задачки на переворот символов без использования библиотек

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

0
56 комментариев
Написать комментарий...
Denis Zykov
Какие бывают типы констант?

Постоянные и такие "ну я вся такая постоянная"

Дайте определение императивным, функциональным и процедурным языкам

Это языки выражаемые через императивы, функции и процедурки
программирования.

Приведите по 2-3 примера каждого.

Садись!
Садиться это сгибать колени прижопливая зад к горизонтальной поверхности....
Посадка это сгибания колен, прижопливание зада.

Что такое методология программирования?

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

Что представляет из себя Agile.

Гибкий хаос.

Жизненный цикл программы – опишите или изобразите его.

Съедается бабло. Оно попадает внутрь компании-организма. Бабло переваривается с помощью фермента времени. А потом тугая колбаса продукта выталкивается из билд сервера компании обрубаясь сжимающимся кольцом дедлайна.

Что такое модульное программирование, в чём его плюсы и минусы.

Это когда компания вместо офиса покупает контейнер-бытовку, набивает туда 10 программистов и заставляет их работать за еду. Это модуль. Из плюсов - бизнес маштабируется добавлением контейнеров. Из минусов, стопку больше 5ти в высоту ставить нельзя, нижние заминаются.

Когда вышла последняя версия вашего языка, какие основные изменения и нововведения?

в 2016 вышел хотфикс моего языка. У слова "кофе" появился средний род, а "йОгурт" стал "йогУртом".

Ответить
Развернуть ветку
Vitaly Markov
А потом тугая колбаса продукта выталкивается из билд сервера компании обрубаясь сжимающимся кольцом дедлайна.

Гениально.

Ответить
Развернуть ветку
Роман Тютюнов

Прижопить

Ответить
Развернуть ветку
Зеленый и громкий

До чего же потешная метафора про сфинктер дедлайна, ставлю леголаса этому комменту. Статью не читал.

Ответить
Развернуть ветку
Make Luv

Сжимающееся кольцо дедлайна - это прекрасно. Очень точно объясняет качество софта последних лет.

Ответить
Развернуть ветку
Санан Фатуллазаде

Классная статья и обалденный комент😄

Ответить
Развернуть ветку
Vladimir Rozhkov

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

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

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

В общем какие-то глупости.

Ответить
Развернуть ветку
Остап Ибрагимович
Ответить
Развернуть ветку
Санан Фатуллазаде

Отлично описывает большинство hr))

Ответить
Развернуть ветку
Georgy Naumov

Мне кажется, или заголовок статьи слабо связан с её содержанием?

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
2 комментария
Кроко

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

Ответить
Развернуть ветку
Максим Караваев

А зачем в шиномонтажке вообще разбираться в двигателях?

Ответить
Развернуть ветку
1 комментарий
Sam Beckett

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

Ответить
Развернуть ветку
Artyom Palvelev

Что за бред? Как хр могут задавать вопросы, ответов на которые они сами не знают?

Ответить
Развернуть ветку
Кохоне

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Max Pashkov

"Подобного рода вопросы направлены на выявление не только хорошо обученных программистов, но и тех, кто живёт темой кодинга, интересуется деталями и трендами."
Т.е. знание agile или тьюринговой полноты делает меня хорошо обученным программистом? Вот из таких пассажей и проистекает определенное отношение к гуманитариям в плохом смысле слова (ничего не имею против гуманитарных специальностей, только против некомпетентности).

"Знание разных методов сортировки и их применяемости позволяет разработчику эффективнее обрабатывать данные."
Вполне хватит и кружки кофе.

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

Ответить
Развернуть ветку
Kelerius

Напишите пожалуйста алгоритм, который изобрели до вас 50 лет назад и который реализован в десятках библиотек..

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

Ответить
Развернуть ветку
1 комментарий
Alexey Rusanov

Экхм, а с каких пор техническое собеседование проводит hr?

Ответить
Развернуть ветку
Bucky Bucks

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

Ответить
Развернуть ветку
Bulat Ziganshin

то что речь о языко-незавитсимых впросах = в заголовке написано

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

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

Ответить
Развернуть ветку
7 комментариев
Nikita Kriuchkov

Мда, ну и вопросы. C - это высокоуровневый или низкоуровневый язык программирования? Очень хотелось бы услышать ответ HR на это :D

Ответить
Развернуть ветку
Bulat Ziganshin
Изобразите алгоритм поразрядной сортировки.

для начала станцуйте ваш оффер

собеседовался в янлекс. помимо задач на алгоритмы и дизайн, спрашивали
- расскажите про meltdown
- какие контейнеры есть в C++ и сложность основных операций над ними
- что мне не нравится в C++
- и ещё была дискуссия о выборе инструментов для реализации многопотоночтис в C++

разговоры с HR были в стиле "похвали себя". ну и минимум одна из них имела прогерское в/о

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Вы в федеральном розыске

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

Ответить
Развернуть ветку
Санан Фатуллазаде

Мне тут понравилось не то, что кто эти вопросы должен задавать, а сами вопросы. Это такой список вопросов, ответы на которые должен знать хороший кодер, на мой взгляд - опытный мидл / пресиньер.

Ответить
Развернуть ветку
Max Pashkov

А я бы сказал что джуниор. Либо именно кодер. Это явно не вопросы мидл+ уровня для инженера.

Ответить
Развернуть ветку
2 комментария
Вы в федеральном розыске

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

Ответить
Развернуть ветку
5 комментариев

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Юрий Татаркин

wfdsfsd

Ответить
Развернуть ветку
Юрий Татаркин

sdafsadf

Ответить
Развернуть ветку
Максим Герасимов

Вообще бред, такое только могут спрашивать у нас в Рашке, уровень дна. Лучше бы спросили про знание библиотек то что используется на практике)

Ответить
Развернуть ветку
Сергей Тарасенко

наркомания

Ответить
Развернуть ветку
Kelerius

Ответ на все вопросы: npm install ?

Ответить
Развернуть ветку
Bulat Ziganshin

работать так же будете?

Ответить
Развернуть ветку
2 комментария
AndreyDanilin

пора вводить новый вопрос на собеседовании:
Русская сортировка половинами

Ответить
Развернуть ветку
Алексей Мануйленко
Жизненный цикл программы – опишите или изобразите его.

1 стадия – Отрицание (человек отказывается принимать то, что с ним случилось);
2 стадия – Гнев (на этом этапе проявляется агрессия ко всему окружающему миру);
3 стадия – Торг (появляются мысли о том, чтобы договориться о более лучшей участи);
4 стадия – Депрессия (на данном этапе человек может круглые сутки находится в депрессивном состоянии);
5 стадия – Принятие (согласие с неизбежной участью).

Ответить
Развернуть ветку
53 комментария
Раскрывать всегда