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:
Часто, при собеседовании кандидатов на позиции программистов, сосредотачиваются на технических вопросах, типа «Зачем нужен виртуальный деструктор?», предлагают разобрать какую-нибудь кусочек кода с хитрым синтаксисом, который редко встречается в реальной жизни, или просто дают тестовое задание.
Конечно, технические вопросы на собеседовании задавать нужно, но не менее полезно спросить об подходах к разработке, которые использовались на прошлых местах работы и поинтересоваться мнением кандидата о том, как правильно делать, а как нет. Человек, который работал в команде с хорошо поставленными процессами, вероятно избавлен от привычек выкладывать не собирающийся код, ломать тесты и заниматься излишнем рефакторингом.
Список моих вопросов при собеседовании программистов ниже:
- Попросить рассказать о разрабатываемом ранее продукте, зачем он и для чего/кого. Если человек реально работал над проектом, то он должен хорошо понимать зачем он, кто его пользователи и т.
п.
- Что сделал на прошлых местах работы? В резюме часто просто пишут про проект целиком. Возможно, соискатель разрабатывал его архитектура и писал ядро, а может просто нарисовал
- Какая была роль в команде? Чем занимались другие люди? Интересно узнать, как человек видит себя в проекте и команде.
- Какие были процессы разработки? Общий вопрос для начала, чтобы понять направление дальнейшего диалога.
- Были ли требования к продукту? Откуда они брались? Были ли аналитики, product manager и т.п.? Оценка умения работать по требованиям, а не городить отсебятину по принципу «я лучше знаю».
- Кто осуществлял декомпозицию больших задач на подзадачи? Сразу понятно, какая роль была на прошлой работе.
- Кто оценивал трудозатраты по задачам? Часто ли ошибались? Выясняем опыт разработчика в оценке задач, если такого опыта нет, то это не очень хорошо.
- Использовались ли Unit Tests? На мой взгляд это полезная практика, уменьшающая число багов.
Хорошо, если кандидат ее использовал. К сожалению, часто приходится слышать на собеседовании ответ: «Да я хотел использовать, но времени на написание тестов никогда не выделяли.»
- Были ли ночные билды, ночные прогоны автотестов? Показывает, что разработка была не совсем коленочная. Скорее всего, есть привычка не ломать сборку своими коммитами.
- Мнение о той или иной процедуре в процессе разработки. Интересно послушать мнение о процессах. Если ответ в стиле: «Начальство самодуры, только мешают работать со своими кодревью», то имеет смысл задуматься 🙂
- Были ли процедуры code review? Приходилось ли быть ревьювером? Если ревьювером быть не приходилось, это показатель не самого высокого уровня.
- Использовалась ли система контроля версий? Была ли разработка отдельных фичей в отдельных ветках? Если не использовали совсем, то какой-то совсем анахронизм. Если все делали в одной ветке, то можно предположить проблемы с мержами в будущем и боязнь использования веток.
- Что такое TDD? Не все такой подход одобряют, но можно задать кандидату вопрос: «Почему это хорошо это или плохо?»
- Были ли процедуры типа Gated check-in, проверка собираемости или тестов при коммитах? Дает понять насколько зрелый процесс разработки был на прошлом месте работы соискателя.
- На собеседовании имеет смысл спросить соискателя про отношение к «шаблонам по Александреску» и подобным стили программирования. Принцип KISS никто не отменял 🙂
- Что сам кандидат спросит про работу и процесс в конторе? Показывает заинтересованность в работе, что реально интересует кандидата в новой работе. Некоторым важен процесс разработки, некоторым продукт, некоторым график работы, а есть такие, которым на все пофиг, лишь бы взяли.
Все новости сайта в телеграм канале: @pmlife_ru
Общие вопросы для собеседований для программистов
Поскольку информатика и информационные технологии являются очень популярными предметами изучения в колледжах и техникумах, у работодателей есть широкий выбор кандидатов на должности программистов начального уровня. Помимо технических навыков и специальных сертификатов, к хорошему программисту предъявляется множество требований.
Хотя личностные качества, такие как настойчивость и творческий подход, ценятся на должности программиста намного выше, чем даже обычные рабочие навыки, такие как общение и уважение, всесторонне развитый программист, обладающий всеми этими качествами (и даже больше), является наиболее востребованным типом сотрудник.
Существует два основных подхода к вопросам собеседования на должность программиста: практический и личный. Практические вопросы могут включать решение проблемы потенциальным сотрудником во время собеседования. Этот метод может передать подход программиста к общению и решению проблем в стрессовой ситуации.
Другой метод опроса является более традиционным. Вместо прямого тестирования потенциальных программистов интервьюер просит их объяснить свои методы или рассказать историю о времени, когда они столкнулись с похожей проблемой или задачей. Вот пять примеров распространенных вопросов на собеседовании.
Общие вопросы для программистов на собеседовании
1. С какими языками программирования вы можете работать? Опишите свой опыт с ними.Этот вопрос акцентирует внимание на технических навыках, не заставляя респондентов демонстрировать свои способности. Таким образом, вместо того, чтобы писать строку кода на C#, интервьюируемый может описать пример простой игры, которую он или она создали с использованием языка программирования. Это показывает, что программист имеет представление о программировании в целом.
2. Как вы поступаете в стрессовых ситуациях, когда все идет не так? Приведите пример из своего опыта. В этом примерном вопросе респонденты имеют возможность рассказать об уровне своих навыков не только в программировании, но и в решении проблем. Программистов часто просят работать с жесткими временными рамками, которые включают в себя широкий спектр переменных и влияний, которые могут существенно повлиять на их работу.
Способность оценивать, расставлять приоритеты и планировать проект сильно влияет на успех программиста. Способность видеть весь проект от начала до конца и визуализировать, как выглядят промежуточные этапы, требует глубокого понимания программирования. Визуализация и практика необходимы для успеха.
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.