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

Содержание

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

{“id”:13707,”url”:”\/distributions\/13707\/click?bit=1&hash=b015f48d31e4852c6977425cbd88c7520b4af7c0a8a74b762df0a601c283328e”,”title”:”\u0427\u0442\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u0435\u0435: \u0432\u0430\u043c\u043f\u0438\u0440\u0441\u043a\u0438\u0435 \u043a\u043b\u044b\u043a\u0438 \u0438\u043b\u0438 \u0441\u0447\u0451\u0442 \u0432 \u0441\u0442\u043e\u043c\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0438?”,”buttonText”:”\u0418 \u0447\u0442\u043e \u0436\u0435?”,”imageUuid”:”a41fa5a9-82cc-5752-9b21-9c0da177839e”,”isPaidAndBannersEnabled”:false}

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

58 294 просмотров

Классическое собеседование состоит из предварительного разговора 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. Какова идеальная рабочая среда?

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

Таха Суфиян

Аналитик-исследователь

Таха — аналитик-исследователь в Simplilearn. Он увлечен созданием отличных пользовательских интерфейсов и всегда в курсе мира искусственного интеллекта. Таха также увлекается играми и фотографией.

Popular from Taha Sufiyan

Видеоруководство

50+ лучших вопросов и ответов на собеседованиях по Node.js

Вот список общих вопросов по Node.js, которые часто возникают на собеседованиях.

Автор:

Taha SufiyanПоследнее обновление

28 октября 2022 г.

Видеоурок

Как проверить адрес электронной почты в JavaScript?

Проверка электронной почты в JavaScript — важная часть пользовательского интерфейса веб-приложения. Читать дальше!

Автор:

Taha SufiyanПоследнее обновление

28 октября 2022 г.

Видеоруководство

Состояние ReactJS: SetState, реквизиты и объяснение состояния

В этой статье описывается функция «состояния» в ReactJs со следующими примерами и программами.

Автор:

Таха СуфиянПоследнее обновление

21 июля 2022 г. .

Автор:

Taha SufiyanПоследнее обновление

31 марта 2022 г.

Видеоурок

Ключевое слово «это» в JavaScript и как его реализовать

В этой статье мы рассмотрим все основы, которые вам нужно знать о JavaScript ключевое слово “это”.

Автор:

Taha SufiyanПоследнее обновление

30 августа 2022 г.

Видеоурок

Начало работы с NodeJs MongoDB

Этот учебник Node.js MongoDB поможет вам научиться подключать сервер к веб-базе данных.

Автор:

Taha SufiyanПоследнее обновление

16 сентября 2021 г.

Видеоурок

Введение в JavaScript: вот все, что вам нужно знать

Вы узнаете все о JavaScript, основе веб-разработки.

Автор:

Taha SufiyanПоследнее обновление

28 октября 2021 г.

Видеоруководство

Объекты JavaScript: свойства, методы и средства доступа

В этом руководстве рассматривается реализация объектов в веб-приложении JavaScript.

Автор:

Taha SufiyanПоследнее обновление

15 февраля 2022 г.

Видеоруководство

Javascript Projects: The Best Guide

Изучите практическое применение JavaScript в реальных веб-приложениях.

Автор:

Taha SufiyanПоследнее обновление

15 февраля 2022 г.

Видеоруководство

Все о состоянии представления в ASP.NET

Платформа страниц ASP.NET предоставляет различные функции управления состоянием для сохранения управляющих значений.

Автор:

Taha SufiyanПоследнее обновление

14 декабря 2021 г.

Статья

Что такое HTML (язык гипертекстовой разметки)?

Цель этой статьи — познакомить вас с самым популярным в мире языком веб-разработки.

Автор:

Taha SufiyanПоследнее обновление

28 октября 2021 г.

Статья

Как реализовать раскрывающийся список HTML? Лучшее руководство

В этой статье основное внимание уделяется раскрывающемуся списку HTML и его реализации.

By

Taha SufiyanПоследнее обновление

18 сентября 2021 г.

Статья

Что такое Node.js: основы, варианты использования и последние тенденции

Эта статья дает вам четкое представление о том, почему Node.js, потребность в Node.js, части Node.

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