{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0
56 комментариев
Написать комментарий...
Bucky Bucks

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

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

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

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

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

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

Да я как бы занимаюсь подготовкой к интервью и до этого олимпиадным программированием занимался. Могу и BFS и Дейкстру и heapsort и КМП написать на листике. Да и многие могут. А вот HR это проверить не может тк о программировании знать вообще не должен. Об алгоритмах уж точно. И проверять вызубренный непосредственно алгоритм тоже смысла нет. Важнее проверить его знание прикладной задачей(нужно и понять какие алгоритмы нужны и уметь реализовать их на листике)

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

в этом плане они дичь написали, это список всего что на интервью проходит, а не того что порверяет сам HR

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

Поэтому я и написал комментарий. Хотя статья А) не соответствует действительности Б) не компетентна В) не подходит по тематике ресурса , а следовательно должна была бы быть люто заминусована, у неё положительный рейтинг. А значит каких то облей вводит в заблуждение и наносит вред. Какой нибудь джуниор в итоге заявится на собеседование с такими знаниями и ударится о действительность

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

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

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

и ксати, если готовитесь к алгоинтевью - идите на leetcode и его аналоги. ещё советую cracking the code interview. ну и затем к примеру http://blog.interviewing.io/exactly-what-to-say-when-recruiters-ask-you-to-name-the-first-number/ :)

по большому счёту у вас перебор знаний. у меня в бэкграунде хаскел/алгоритмы, поступил в яндекс.теч и то ничего сложнее medium level leetcode задач не было. важнее научиться быстро писать всё это на бумажке, чтобы даже волнение не помешало. и зазубрить стандартные приёмы - деление пополам, слияние списков и т.п. тут не столько думать приходилось, сколько аккуратно всё реализовывать. хотя я может слишком аккуратен был, меня после всего этого спорсили - а быстро работать когда надо ты готов? ))

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

Ну так я на leetcode и сижу) ещё topcoder и база школьных олимпиад(дэйкстру мы ещё там учились писать). А слишком или нет, ну мне вот кажется что далеко нет, друзья и знакомые работающие в big4 и крупных рос банках знают куда больше(кто то о ML, кто то о компиляторах и ассемблере, а кто то просто о очень сложной математике)

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

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

навыки для прохорждения интервью, а конкретно решения задачек за 20-40 минут на бумажке (включая порверку того как алгоритм работает) - это то, что вы естественным образом не получите, и поэтому этот скилл надо прокачать отдельно, лучше ближе к самим интервью. это вы и получите на литкодах. хотя и просто для решения алгозадачек он тоже полезеен, даже бех кодирования. есди вы будете придумывать алгоритм для большинство задач hard и порграммировать весь ответ для большинства medium за 40 минут - то что я проходил в яндексе, вы проскочите как нож масло. результат - буду работать в команде, которая программирует распределённое хранилище всех янлексовским данных

ну разумеется, само по себе умение реализовывать алгоритмы на интервью - это ещё не гарантия получения работы, скорее фильтр типа порверки IQ

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