Вопросы собеседование программист: какие задают, что спрашивают, подготовка

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

{“id”:13909,”url”:”\/distributions\/13909\/click?bit=1&hash=e87ff16fe9acc4ab6e679657dfee7e208034bd6c51a6e340940f747a06ee3261″,”title”:”\u041d\u0430 \u0447\u044c\u0438 \u0434\u0435\u043d\u044c\u0433\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0433\u0440\u043e\u0431\u0438\u0437\u043d\u0435\u0441? “,”buttonText”:”\u0412\u044b\u0431\u0440\u0430\u0442\u044c”,”imageUuid”:”c3fda453-6636-56e5-a878-3a65822266e4″,”isPaidAndBannersEnabled”:false}

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

61 717 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Какие вопросы задавать программистам на собеседовании

Управление — это битва теории с человеческим фактором.

Search for:

Часто, при собеседовании кандидатов на позиции программистов, сосредотачиваются на технических вопросах, типа «Зачем нужен виртуальный деструктор?», предлагают разобрать какую-нибудь кусочек кода с хитрым синтаксисом, который редко встречается в реальной жизни, или просто дают тестовое задание.

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

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

Список моих вопросов при собеседовании программистов ниже:

  1. Попросить рассказать о разрабатываемом ранее продукте, зачем он и для чего/кого. Если человек реально работал над проектом, то он должен хорошо понимать зачем он, кто его пользователи и т. п.
  2. Что сделал на прошлых местах работы? В резюме часто просто пишут про проект целиком. Возможно, соискатель разрабатывал его архитектура и писал ядро, а может просто нарисовал
    About диалог.
  3. Какая была роль в команде? Чем занимались другие люди? Интересно узнать, как человек видит себя в проекте и команде.
  4. Какие были процессы разработки? Общий вопрос для начала, чтобы понять направление дальнейшего диалога.
  5. Были ли требования к продукту? Откуда они брались? Были ли аналитики, product manager и т.п.? Оценка умения работать по требованиям, а не городить отсебятину по принципу «я лучше знаю».
  6. Кто осуществлял декомпозицию больших задач на подзадачи? Сразу понятно, какая роль была на прошлой работе.
  7. Кто оценивал трудозатраты по задачам? Часто ли ошибались? Выясняем опыт разработчика в оценке задач, если такого опыта нет, то это не очень хорошо.
  8. Использовались ли Unit Tests? На мой взгляд это полезная практика, уменьшающая число багов. Хорошо, если кандидат ее использовал. К сожалению, часто приходится слышать на собеседовании ответ: «Да я хотел использовать, но времени на написание тестов никогда не выделяли.»
  9. Были ли ночные билды, ночные прогоны автотестов? Показывает, что разработка была не совсем коленочная. Скорее всего, есть привычка не ломать сборку своими коммитами.
  10. Мнение о той или иной процедуре в процессе разработки. Интересно послушать мнение о процессах. Если ответ в стиле: «Начальство самодуры, только мешают работать со своими кодревью», то имеет смысл задуматься 🙂
  11. Были ли процедуры code review? Приходилось ли быть ревьювером? Если ревьювером быть не приходилось, это показатель не самого высокого уровня.
  12. Использовалась ли система контроля версий? Была ли разработка отдельных фичей в отдельных ветках? Если не использовали совсем, то какой-то совсем анахронизм. Если все делали в одной ветке, то можно предположить проблемы с мержами в будущем и боязнь использования веток.
  13. Что такое TDD? Не все такой подход одобряют, но можно задать кандидату вопрос: «Почему это хорошо это или плохо?»
  14. Были ли процедуры типа Gated check-in, проверка собираемости или тестов при коммитах? Дает понять насколько зрелый процесс разработки был на прошлом месте работы соискателя.
  15. На собеседовании имеет смысл спросить соискателя про отношение к «шаблонам по Александреску» и подобным стили программирования. Принцип KISS никто не отменял 🙂
  16. Что сам кандидат спросит про работу и процесс в конторе? Показывает заинтересованность в работе, что реально интересует кандидата в новой работе. Некоторым важен процесс разработки, некоторым продукт, некоторым график работы, а есть такие, которым на все пофиг, лишь бы взяли.

Все новости сайта в телеграм канале: @pmlife_ru

Общие вопросы для собеседований для программистов

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

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

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

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

Общие вопросы для программистов на собеседовании

1. С какими языками программирования вы можете работать? Опишите свой опыт с ними.

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

2. Как вы поступаете в стрессовых ситуациях, когда все идет не так? Приведите пример из своего опыта.

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

3. Что вы делаете в первую очередь, создавая что-то новое?

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

4. Как вы следите за современными тенденциями и достижениями в этой области?

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

5. Какова идеальная рабочая среда?

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

Руководство по вопросам собеседования программиста

Почему это важно:

Подобные вопросы о структуре данных могут быстро показать, обладает ли кандидат базовыми навыками, необходимыми для хорошего выполнения работы. Чтобы получить максимальную отдачу от этого вопроса, укажите язык программирования, от которого в значительной степени зависит роль, например Java, а затем попросите кандидата кратко объяснить, как он будет находить повторяющиеся символы в строке на этом языке.

На что обратить внимание:

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

Почему это важно:

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

На что обратить внимание:

  • Справочник по различным языкам программирования, таким как C++, PHP, Java, Swift и React
  • Ответы начинающих программистов, которые могут сосредоточиться на своем опыте, и ответы старших кандидаты уровня, которые могут более подробно рассказать о том, почему им нравится конкретный фреймворк

Почему это важно:

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

На что обращать внимание:

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

Почему это важно:

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

На что обратить внимание:

  • Отличные ответы, демонстрирующие способность кандидата визуализировать отдельные этапы проекта и эффективно расставлять приоритеты
  • четкое представление о том, какие шаги они предпримут

Почему это важно:

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

На что обратить внимание:

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

Почему это важно:

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

К чему прислушиваться:

  • Лучшие ответы, демонстрирующие, что кандидату комфортно работать независимо, но он также может быть командным игроком, когда этого требует роль
  • Признаки того, что кандидат пренебрегает достижениями других, указывая на то, не подходит для работы в команде

Почему это важно:

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

К чему прислушиваться:

  • Доказательства того, что кандидат будет процветать в рабочей среде вашей компании
  • Не кажется ли его стиль работы несогласованным — если да, сообщите им, как будет выглядеть их рабочее пространство, и взаимно оцените, смогут ли они приспособиться (например: носить наушники)

Почему это важно:

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

На что обратить внимание:

  • Идеальные ответы, которые показывают, что кандидату удобно разбивать сложные понятия, чтобы помочь непрофессионалу понять
  • Отличные ответы, которые демонстрируют, что кандидат является терпеливым и вдумчивым учителем

Почему это важно:

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

К чему прислушаться:

  • Свидетельство того, что кандидат искренне интересуется логикой, математикой и кодированием продукт
    ` ~ =”>
  • Имя — обязательное поле
  • Фамилияявляется обязательным полем
  • Компания является обязательным полем
  • Электронная почта является обязательным полем
  • Номер телефона – обязательное поле
  • Страна/Регион является обязательным полем

    –– Выберите одно ––АфганистанАландские островаАлбанияАлжирАмериканское СамоаАндорраАнголаАнгильяАнтарктидаАнтигуа и БарбудаАргентинаАрменияАрубаАвстралияАвстрияАзербайджанБагамы, БахрейнБангладешБарбадосБеларусьБозефанияБельгианаБеринБермуда Остров БувеБразилияБританская территория в Индийском океанеБруней-ДаруссаламБолгарияБуркина-ФасоБурундиКамбоджаКамерунКанадаКабо-ВердеКаймановы островаЦентральноафриканская РеспубликаЧадЧилиКитайОстров РождестваКокосовые острова (Килинг)КолумбияКоморские островаКонгоКонго, Демократическая Республика Острова КукаКоста-РикаКот D ИвуарХорватияКипрЧехияДанияДжибутиДоминикаДоминиканская РеспубликаЭквадорЕгипетСальвадорЭкваториальная ГвинеяЭритреяЭстонияЭфиопияФолклендские (Мальвинские) островаФарерские островаФиджиФинляндияФранцияФранцузская ГвианаФранцузская ПолинезияФранцузские Южные ТерриторииГабонГамбия, Грузия, РеспубликаГерманияГанаГибралтарГуренадаГуренадаГрецияГреция ГвинеяГвинея-БиссауГайанаГаитиОстров Херд и острова МакдональдСвятой Престол (город-государство Ватикан)ГондурасГонконгВенгрияИсландияИндияИндонезияИракИрландияОстров МэнИзраильИталияЯмайкаЯпонияДжерсиИорданияКазахстанКенияКирибатиКорея,Республика КувейтКыргызстанЛаосская Народно-Демократическая РеспубликаЛитвияЛиберанияЛиберияЛесотоЛесото gМакаоМакедония, Бывшая Югославская РеспубликаМадагаскарМалавиМалайзияМальдивыМалиМальтаМаршалл ОстроваМартиникаМавританияМаврикийМайоттаМексикаМикронезия, Федеративные Штаты Молдовы, Республика МонакоМонголияЧерногорияМонтсерратМароккоМозамбикМьянмаНамибияНауруНепалНидерландыНидерландские Антильские островаНовая КаледонияНовая ЗеландияНикарагуаНигерНигерияНиуэ Остров НорфолкСеверные Марианские островаНорвегияОманПакистанПуаратияНовые Палестинские Территории хилиппиныПиткэрнПольшаПортугалияПуэрто-РикоКатарРеюньонРумынияРоссийская ФедерацияРуандаСен-БартельмиСент-ХеленаСент-Китс и НевисСент-ЛюсияСен-МартинСент-Пьер и МикелонСент-Винсент и ГренадиныСамоаСан-МариноСао-Томе и ПринсипиСаудовская АравияСенегалСербияСейшельские островаСьерра-ЛеонеСингапурЮжнаяСловакияСэнди Южная АфрикаСловенияСловенияСоломоновы острова Ри-ЛанкаСуданСуринамШпицберген и Ян МайенСвазилендШвецияШвейцарияТайваньТаджикистанТанзания, Объединенная Республика ТаиландТимор-ЛештиТогоТокелауТонгаТринидад и ТобагоТунисТурцияТуркменистанОстрова Теркс и КайкосТувалуУгандаУкраинаОбъединенные Арабские ЭмиратыСоединенное КоролевствоСоединенные ШтатыОтдаленные Малые острова Соединенных ШтатовУругвайУзбекистанВануатуВенесуэлаВьетнам и Фунт. Западная СахараЙеменЗамбияЗимбабве

  • Штат/Провинция — обязательное поле Нью-ГэмпширНью-ДжерсиНью-МексикоНью-ЙоркСеверная КаролинаСеверная ДакотаОгайоОклахомаОрегонПенсильванияРод-АйлендЮжная КаролинаЮжная ДакотаТеннессиТехасЮтаВермонтВирджинияВашингтонЗападная ВирджинияВисконсинВайомингАльбертаБританская КолумбияМанитобаНью-БрансуикНьюфаундлендНовая ШотландияОнтариоОстров Принца ЭдуардаКвебекСаскачеванЮжная Территория АвстралияНьюенсАвстралийская Столичная Территория манияВикторияЗападная АвстралияПекинШанхайТяньцзиньЧунцинГуандунЦзянсуЧжэцзянАньхойФуцзяньГаньсуГуансиГуйчжоуХайнаньХэбэйХэйлунцзянХэнаньХубэйХунанЦзянсиЦзилиньЛяонинВнутренняя Монголия (Нэймэнгу)НинсяЦинхайШаньдунШаньсиШэньсиСычуаньТибет ( Сизанг)СиньцзянЮньнаньАндаман и НикобарАндра-ПрадешАруначал-ПрадешАссамБихарЧандигархЧхаттисгархДадра и Нагар ХавелиДаман и ДиуДелиГоаГуджаратХарьянаХимачал-ПрадешДжамму и КашмирДжаркхандКарнатакаКералаЛакшадвипМадхья-ПрадешМахараштраСуджабтанМанипурМегхалаяМизорам иккимТамил НадуТеланганаТрипураУттар-ПрадешУттаракхандЗападная Бенгалия

  • Ваша роль является обязательным полем

    –– Выберите одно ––Владелец/РуководительРуководитель отдела – HR/TalentHead of Department – OtherDirector – HR/TalentDirector – OtherManager – HR/TalentManager – OtherSocial Media ManagerРекрутер/SourcerСтудент/Стажер СоискательOther

Отправляя эту форму, вы соглашаетесь с тем, что мы можем использовать предоставленные вами данные, чтобы связаться с вами для предоставления информации, связанной с вашим запросом/представлением, а также с продуктами и услугами LinkedIn.

Оставить комментарий