25 классических вопросов, которые HR-ы задают программистам на собеседованиях
Образовательный портал GeekBrains подготовил подборку вопросов, не зависящих от языка программирования и вашего опыта.
Классическое собеседование состоит из предварительного разговора HR и соискателя, выполнения тестового задания, личного диалога с менеджером по подбору персонала и далее – с техническим специалистом. Во время предварительного разговора вас спросят об опыте работы, попросят прислать портфолио, узнают про ваши амбиции, цели, возможность переехать в другой город. Далее, если вы должным образом отнесётесь к выполнению тестового задания, а ваше резюме устроит менеджеров, вы приедете в офис компании и почти наверняка услышите многое из следующих вопросов.
Категория общих вопросов
В прошлом десятилетии вы могли прийти на собеседование и услышать вопрос: «Что такое программирование?» Трудно представить человека, который в этот момент не растеряется, а многие ещё и разочаруются в будущем работодателе. Однако сегодня подобного непрофессионализма среди HR мало, но пространных вопросов по-прежнему хватает. О них речи не пойдёт, сразу перейдём к тем, которые имеют очевидные ответы:
- Что такое высокоуровневый и низкоуровневый язык программирования?
- Что такое полнота языка по Тьюрингу?
- Какие есть операторы цикла в вашем языке и методы организации цикла без операторов?
- Что такое компилятор и интерпретатор?
- Какие бывают типы констант?
- Дайте определение императивным, функциональным и процедурным языкам программирования. Приведите по 2-3 примера каждого.
- Что такое методология программирования? Что представляет из себя Agile.
- Жизненный цикл программы – опишите или изобразите его.
- Что такое модульное программирование, в чём его плюсы и минусы.
- Когда вышла последняя версия вашего языка, какие основные изменения и нововведения?
Подобного рода вопросы направлены на выявление не только хорошо обученных программистов, но и тех, кто живёт темой кодинга, интересуется деталями и трендами.
Методы сортировки
Знание разных методов сортировки и их применяемости позволяет разработчику эффективнее обрабатывать данные. HR-менеджеры, в свою очередь, любят эти вопросы просто потому, что очень многие новички в мире программирования знают лишь пузырьковый метод, да и то теряются, когда слышат это название. А ведь есть ещё несколько подходов. Взгляните, сможете ли вы ответить на все эти вопросы:
- Изобразите алгоритм сортировки методом пузырька.
- Изобразите алгоритм быстрой сортировки.
- Изобразите алгоритм сортировки методом вставки.
- Изобразите алгоритм сортировки методом слияния.
- Изобразите алгоритм поразрядной сортировки.
Алгоритмы поиска и замены
Так как в современном мире огромный акцент делается на работу с большим числом данных, то современный разработчик просто обязан знать несколько алгоритмов поиска и замены в массивах чисел и символов. Многие из них перекликаются с вопросами сортировки, но неплохо бы иметь решения и без её использования. Вот что вам могут спросить по этой теме:
- Напишите программу поиска минимума и максимума в массиве из 100 чисел.
- Напишите программу поиска пропущенного значения в массиве целых чисел от 1 до 100. Текущий размер массива – 99 чисел, рассмотрите варианты, когда он уже отсортирован или ещё нет.
- Напишите программу поиска повторяющихся значений в массиве целых чисел от 1 до 100. Текущий размер массива – 101 число, рассмотрите варианты, когда он уже отсортирован или ещё нет.
- Напишите программу «разворота» массива целых чисел. То есть первое и последнее меняются местами, второе – с предпоследним и так далее. Без использования специальных библиотек.
- Напишите программу вставки пропущенного или удаления дублированного значения в массиве целых чисел от 1 до 100 без использования специальных библиотек.
Сами по себе описанные задания для написания программ далеки от понятия «сложные». Однако подготовленный HR или технический специалист может попросить вас всё подробно объяснить и поискать несколько способов решения. Часто – тот, который нравится собеседующему больше всего. Надо быть к этому готовым, и, если что-то не вспомнили, не паниковать, а спокойно начать рассуждать вслух, показав ход мысли.
Работа со строками
Несмотря на простоту, новички часто допускают ошибки именно в работе со строками: то неправильно отсчитают номер символа из-за незнания основ, то сравнят значение со ссылкой, то вообще запутаются с совместимостью типов. Добавим сюда немного алгоритмов и получим следующие вопросы:
- Напишите программу, проверяющую являются ли две строки анаграммами друг друга.
- Напишите программу проверки строки на проверку наличия только символов или только цифр.
- Напишите программу, подсчитывающую количество гласных и согласных в строке.
- Напишите программу, которая вытаскивает из резюме основные данные (ФИО, профессия, город, возраст, стаж работы) и передаёт их в соответствующие массивы для дальнейшей работы. Подсказка: необходимо не только разбить текст, но и удалить недопустимые символы, лишние пробелы, присвоить нужный тип.
- Покажите несколько методов конкатенации строк и объясните различия в исполнении кода.
Также популярностью пользуются вопросы, аналогичные «массивным»: про поиск дублированных символов, в частности, пробелов, задачки на переворот символов без использования библиотек
В данной статье мы целенаправленно не стали писать ответы на вопросы (на некоторые это и невозможно). Во-первых, чтобы не растягивать текст на 5 частей для повышения читабельности. Во-вторых, чтобы при подготовке к собеседованию вы ориентировались на несколько источников и, как следствие, куда больше бы понимали, чем зубрили. Ведь в конце концов именно это, а не знание ответов на все базовые вопросы, является отличием готового разработчика от того, кто только хочет им стать.
Постоянные и такие "ну я вся такая постоянная"
Дайте определение императивным, функциональным и процедурным языкамЭто языки выражаемые через императивы, функции и процедурки
Приведите по 2-3 примера каждого.программирования.
Садись!
Что такое методология программирования?Садиться это сгибать колени прижопливая зад к горизонтальной поверхности....
Посадка это сгибания колен, прижопливание зада.
Это когда пацаны решают что хаос разработки надо обсуздать и придумывают много маленьких под-хаосов.
Что представляет из себя Agile.Гибкий хаос.
Жизненный цикл программы – опишите или изобразите его.Съедается бабло. Оно попадает внутрь компании-организма. Бабло переваривается с помощью фермента времени. А потом тугая колбаса продукта выталкивается из билд сервера компании обрубаясь сжимающимся кольцом дедлайна.
Что такое модульное программирование, в чём его плюсы и минусы.Это когда компания вместо офиса покупает контейнер-бытовку, набивает туда 10 программистов и заставляет их работать за еду. Это модуль. Из плюсов - бизнес маштабируется добавлением контейнеров. Из минусов, стопку больше 5ти в высоту ставить нельзя, нижние заминаются.
Когда вышла последняя версия вашего языка, какие основные изменения и нововведения?в 2016 вышел хотфикс моего языка. У слова "кофе" появился средний род, а "йОгурт" стал "йогУртом".
Гениально.
Прижопить
До чего же потешная метафора про сфинктер дедлайна, ставлю леголаса этому комменту. Статью не читал.
Сжимающееся кольцо дедлайна - это прекрасно. Очень точно объясняет качество софта последних лет.
Классная статья и обалденный комент😄
HRы такого нигде не спрашивают, разве что HRом является бывший разработчик.
Но и дурацкие вопросы про Тьюринг-полноту и сортировку вставкой на технических интервью сейчас нечасто встретишь, в основном потому что сами интервьюеры их не знают.
Современный разработчик никогда не будет писать кода для вставки и замены буков и слов в тексте, для этого уже написаны тысячи библиотек.
В общем какие-то глупости.
Отлично описывает большинство hr))
Мне кажется, или заголовок статьи слабо связан с её содержанием?
Комментарий удален модератором
Некоторым шиномонтажкам пора прекращать спрашивать у автослесарей, что такое цикл Карно и чем отличается бензиновый от дизельного двигателя. А то ты такой вдохновленный вопросами про подвеску Мак-Ферсона приходишь на работу, а тебе ржавые гайки дают крутить.
А зачем в шиномонтажке вообще разбираться в двигателях?
Какую-то лютую дичь прочитал. Более того, если такую херню у меня бы начали спрашивать на собеседовании, я просто встал бы и ушёл. Особенно это касается вопросов из первого раздела.
Что за бред? Как хр могут задавать вопросы, ответов на которые они сами не знают?
У них обычно на листочках под вопросами есть правильный ответ, и им надо сопоставлять ответы кандидата с тем, что написано у них. Сам по телефону проходил такое пару раз.
Комментарий недоступен
"Подобного рода вопросы направлены на выявление не только хорошо обученных программистов, но и тех, кто живёт темой кодинга, интересуется деталями и трендами."
Т.е. знание agile или тьюринговой полноты делает меня хорошо обученным программистом? Вот из таких пассажей и проистекает определенное отношение к гуманитариям в плохом смысле слова (ничего не имею против гуманитарных специальностей, только против некомпетентности).
"Знание разных методов сортировки и их применяемости позволяет разработчику эффективнее обрабатывать данные."
Вполне хватит и кружки кофе.
Статья ради статьи. Напомнило написание дипломных работ, такое же послевкусие.
Напишите пожалуйста алгоритм, который изобрели до вас 50 лет назад и который реализован в десятках библиотек..
По мне так важнее знать алгоритмическую сложность данного алгоритма и границы его применения.
Экхм, а с каких пор техническое собеседование проводит hr?
Ну и это далеко от истины. Вопросы по алгоритмам и структурам данных слишком легкие, а вопросов касательно языков и фреймворков нет вообще. И в реальности HR спрашивает больше про прошлый опыт, проф интересы и тд, передает программистам, а они уже проводят собеседование касательно технологий теории и тд
то что речь о языко-незавитсимых впросах = в заголовке написано
по алгоритмам задачи лёгкие, вроде да. а теперь возьмите самую сложную из них для вас лично и запрограммируйте на бумаге. ппрям сейцчас. проверьте что точно нет ошибок. засеките время. если улодитесь в 20 минут, то по алгоритмической части вы в большиство компаний пройдёте. фишка в том что алгоритмы то понятны, но вот запрогить это всё, да волнуясь на интервью, да на бумаге и без ошибок, да уложиться в 20 минут - большинству не по силам. и вам скорей всего тоже
почему 20 минут? интервью час, отличный кандидат за это время должен решить две такие простые задачи или одну более сложную, плюс время на допразговоры - т.е. на сами задачи отводится минут 40
Мда, ну и вопросы. C - это высокоуровневый или низкоуровневый язык программирования? Очень хотелось бы услышать ответ HR на это :D
для начала станцуйте ваш оффер
собеседовался в янлекс. помимо задач на алгоритмы и дизайн, спрашивали
- расскажите про meltdown
- какие контейнеры есть в C++ и сложность основных операций над ними
- что мне не нравится в C++
- и ещё была дискуссия о выборе инструментов для реализации многопотоночтис в C++
разговоры с HR были в стиле "похвали себя". ну и минимум одна из них имела прогерское в/о
Комментарий недоступен
Это список вопросов от плохого эйчара. Хороший просто смотрит на адекватность человека, узнаёт про его опыт работы и что-нибудь о себе в общих чертах и затем, если человек устраивает, передаёт его технарям, которые уже и узнают, подходит ли по уровню человек для задач, которые придётся ему решать.
Всё.
Нахера здесь эта статья?
Мне тут понравилось не то, что кто эти вопросы должен задавать, а сами вопросы. Это такой список вопросов, ответы на которые должен знать хороший кодер, на мой взгляд - опытный мидл / пресиньер.
А я бы сказал что джуниор. Либо именно кодер. Это явно не вопросы мидл+ уровня для инженера.
Мидлу и сеньору задают вопросы касательно его языка программирования. Конкретные классы, интерфейсы, реализации, паттерны, библиотеки для работы с сетью, бд и прочее.
Комментарий удален модератором
Комментарий удален модератором
wfdsfsd
sdafsadf
Вообще бред, такое только могут спрашивать у нас в Рашке, уровень дна. Лучше бы спросили про знание библиотек то что используется на практике)
наркомания
Ответ на все вопросы: npm install ?
работать так же будете?
пора вводить новый вопрос на собеседовании:
Русская сортировка половинами
1 стадия – Отрицание (человек отказывается принимать то, что с ним случилось);
2 стадия – Гнев (на этом этапе проявляется агрессия ко всему окружающему миру);
3 стадия – Торг (появляются мысли о том, чтобы договориться о более лучшей участи);
4 стадия – Депрессия (на данном этапе человек может круглые сутки находится в депрессивном состоянии);
5 стадия – Принятие (согласие с неизбежной участью).