Как проходит собеседование при приеме на работу программиста
О чем надо знать программисту перед собеседованием.
Прохождение собеседования программистом
Приглашая вас на собеседование перед приемом на работу, представители компании хотят:
- Определить объективные границы ваших знаний.
- Выяснить, чем вы можете быть полезны компании сейчас и в ближайшем будущем.
- Определить, сможете ли вы влиться в команду.
Исходя из этого, следует ожидать вопросов трех видов — об имеющемся опыте работы, о технических знаниях и умениях, об управленческих и коммуникативных навыках.
Вопросы об опыте
- Расскажите о проекте, который вызывает у вас гордость. Какова ваша роль в его реализации? Этим вопросом наниматель пытается выяснить ваши амбиции — что является для вас мерилом успеха, говорите ли вы только о себе или упоминаете других членов команды.
- Был ли у вас проект, в котором вы сейчас хотели бы что-то улучшить? Работодателю важно понять, что вы умеете анализировать свою работу, чтобы избегать ошибок в будущем.
- Что считаете сложным для себя в программировании? Это вопрос на понимание своих слабых сторон.
- Как относитесь к тестированию? Хороший разработчик должен уделять достаточно времени тестированию качества, добиваясь минимума ошибок в коде и багов в работающем приложении.
- Как вы повышаете уровень своей компетентности? Хорошим ответом будет перечисление источников актуальных знаний (очные либо онлайн-курсы, книги, сайты, подкасты, статьи).
- Какими еще языками (или методологиями) интересуетесь? В какой среде предпочитаете работать? Ответ на эти вопросы покажет, умеете ли вы адаптироваться при необходимости под разные технологии. Расскажите о своем опыте работы с юнит-тестированием, системами контроля версий, с различными фреймворками.
Вопросы об управленческих и коммуникативных навыках
Следующая группа вопросов, которые могут задавать на собеседовании, раскрывает вас как командного игрока и возможного руководителя проекта, способного организовать работу команды.
- Какие свои качества считаете наиболее полезными в работе? Ответ на этот вопрос зависит от требований компании к вакансии, на которую вы претендуете. Можете упомянуть, что любите учиться, умеете вести переговоры и быстро решаете возникшие проблемы.
- Какие проблемы, не связанные с программированием, вам приходилось решать? Не важно, что именно вы сделали. Ответ на этот вопрос должен показать вашу способность быстро и эффективно находить решения возникших проблем и умение взаимодействовать с людьми.
- Как бы вас описали бывшие коллеги и руководители проектов? Ответ показывает вашу самооценку и роль в команде.
- Как вы поступаете, когда не можете самостоятельно решить проблему из области программирования? Ответ характеризует ваш путь преодоления трудностей. Попытаетесь ли найти ответ с помощью интернет-ресурсов или обратитесь к коллегам.
- Ваше отношение к парному программированию? Нанимателю интересно понять, готовы ли вы будете вместе с коллегой разбираться в написанном им коде.
- Есть ли опыт непосредственного взаимодействия с заказчиком? Как вы к этому относитесь? Ответ покажет ваше отношение к возможной критике со стороны коллег и пользователей, насколько болезненно вы реагируете на мнение других людей о вашей работе.
Вопросы о технических навыках
Эта группа вопросов может отличаться в зависимости от того, претендуете ли вы на должность junior-программиста, или вы уже не новичок и хотите занять должность middle или senior-разработчика. Во втором случае вопросы могут быть узкоспециализированными, направленными на выяснение ваших знаний и навыков в конкретной области программирования, которой вам предстоит заниматься.
Наибольший интерес для нас представляют вопросы для новичков.
Что должен знать junior-разработчик
- разбираться в принципах объектно-ориентированного программирования;
- уметь самостоятельно писать код;
- уверенно знать хотя бы один язык и фреймворк;
- знать различные алгоритмы сортировки, написать код, используя быструю сортировку;
- иметь представление о работе с различными технологиями;
- ориентироваться в работе хотя бы с одной интегрированной средой разработки, уметь подключать библиотеку к проекту;
- иметь опыт работы с базами данных, уметь к ним обращаться;
- разбираться в методологиях, знать принципы Agile;
- разбираться в системе контроля версий;
- уметь работать с веб-сервисами.
Помимо этого, претендента на должность junior-программиста могут спросить:
- Почему он выбрал именно этот язык. Здесь следует рассказать о его сильных и слабых сторонах, где его предпочтительнее использовать.
- Где он проходил обучение и в каких проектах принимал участие.
- Какой проект он разрабатывал самостоятельно (для себя или на курсах), в чем состояла задача, как он их решал возникшие проблемы.
- Готов ли он все время учиться новому, в том числе за счет личного времени и средств.
- Насколько развиты его soft skills, коммуникативные навыки.
- Каков уровень знания английского языка (желательно не ниже intermediate). Это необходимо для работы с иностранными коллегами и заказчиками.
- Как он будет решать возникшую проблему. Желательно сначала самому найти несколько вариантов решения, и только потом обращаться за советом к более опытному коллеге.
- Может ли он оценить срок выполнения поставленной задачи.
С будущим младшим программистом могут провести тестирование. Обычно оно состоит из трех частей:
- логическая часть — позволяет оценить умение кандидата делать выводы из поступившей информации и выполнить обобщение;
- проверка внимания памяти, качества усвоения информации — необходимо проанализировать задачу из пяти-шести пунктов, описать пути решения и сделать выводы;
- проверка скорости мышления, речевых навыков, способности работать в команде, основанная на решении «поведенческих» задач.
Как подготовиться, тактика поведения
Как вести себя на интервью
- Не надо надевать костюм и галстук, если вы не носите их достаточно часто. Оденьте то, в чем вы чувствуете себя уверенно и комфортно. Главное, чтобы одежда была опрятной, а ваш внешний вид производил впечатление аккуратного человека.
- Узнайте побольше о компании, в которую хотите устроиться. Чем она занимается, какие вопросы будут в вашей компетенции. Поищите информацию в разных источниках, включая сайт, соцсети, блог. Поинтересуйтесь отзывами. Особое внимание уделите тому, что вас в ней привлекает — не забудьте упомянуть это на собеседовании.
- Продемонстрируйте свое желание влиться в культуру компании. Все, что для этого требуется — проявить искреннюю заинтересованность к тому, чем компания занимается. Если вы действительно хотите работать в этой компании, вряд ли ваш энтузиазм будет наигранным.
- Изучите заранее часто задаваемые вопросы и подготовьте ответы на них. Лучше всего их отрепетировать в спокойной обстановке. При подготовке к техническим вопросам используйте разные источники. Важно не вызубрить готовый ответ, а научиться понимать поставленную проблему, анализировать ее и видеть пути решения.
- Вас могут попросить найти несколько способов решения предложенной задачи. Будьте готовы к этому, не паникуйте, если не можете что-то вспомнить. Просто начните рассуждать вслух, показывая ход ваших мыслей.
- Подготовьтесь к рассказу о своих достижениях. Лучше всего, если это будут уже реализованные проекты, которые активно используются и показывают реальные результаты. Достижениями могут быть не только проекты, но и выступления на конференциях, успешные переговоры с заказчиком.
- Не лгите о своих заслугах, обман вскроется очень быстро. Указывайте в резюме только тот опыт, который действительно имеется — вам могут задать вопросы, чтобы понять глубину ваших знаний в этой области.
- Набирайтесь опыта, проходя интервью в разных компаниях. Если вы заинтересовались сразу несколькими вакансиями, проходите собеседование сначала в менее важных для вас. На следующее интервью вы уже придете более подготовленным и уверенным в себе.
- Не забудьте задать интересующие вас вопросы о размере заработной платы, о будущем рабочем месте (желательно его посмотреть). Спросите о рабочих проектах, о размерах команд и вашей роли в них. Попросите познакомить вас с вашим будущим начальником.
Как правильно отвечать на каверзные вопросы
- Рассматриваете ли вы вакансии в других компаниях? Этот вопрос является проверкой на честность. Резюме рассылаются соискателями сразу в несколько компаний. Честно назовите несколько из них. А если вам уже сделали предложение о работе в другой компании — не скрывайте это от HR-менеджера. Этот факт повысит вашу ценность.
- Почему вы ушли с прежнего места работы? Не стоит рассказывать об имевшихся конфликтах. Лучше дайте понять, что работа в новой компании более привлекательна. Возможно, на прежнем месте у вас не было возможности полностью реализовать свой потенциал.
- Какие у вас достоинства и недостатки? В качестве достоинств стоит перечислить качества, близкие к указанным требованиям в вакансии. В качестве недостатков — то, что не имеет отношения к работе.
- Чем вас привлекла работа в нашей компании? Это проверка на то, действительно ли вы заинтересованы работать у них, или вам важен лишь размер заработной платы. Заинтересованный кандидат постарается узнать о компании как можно больше перед собеседованием.
- Расскажите о ситуации, когда вы не смогли справиться с поставленной задачей. Ответ продумать стоит заранее. Выберите такой случай, в котором вы сделали все от вас зависящее, чтобы задача была выполнена.
Какие вопросы HR-ры задают программистам на собеседованиях
Категория общих вопросов
К этой категории относятся вопросы на проверку знания базовых основ программирования. С их помощью выявляют общую эрудицию программиста, его интерес к деталям, новым трендам в мире кодинга. Среди часто задаваемых вопросов:
- рассказать о «своем» языке — год выхода последней версии, изменения и нововведения;
- перечислить операторы цикла этого языка, какие есть методы организации циклов без использования операторов;
- модульное программирование — что это, плюсы и минусы;
- описать (изобразить) жизненный цикл программы;
- рассказать о методологиях программирования, что вы знаете об agile и waterfall;
- привести несколько примеров и дать определение каждому из типов языков программирования — процедурным, функциональным, императивным;
- перечислить типы констант;
- дать определение компилятору и интерпретатору, в чем сходство и отличие;
- что означает полнота языка по Тьюрингу;
- рассказать о высокоуровневых и низкоуровневых языках программирования.
Методы сортировки
Существует несколько методов сортировки. Зная их все, можно выбрать, какой будет наиболее эффективен при обработке данных в конкретной ситуации. Зачастую программисты пользуются только одним из них. Поэтому на собеседовании HR-менеджер может попросить вас изобразить различные алгоритмы:
- поразрядной сортировки;
- сортировки подсчетом;
- блочной сортировки;
- сортировки методом слияния;
- сортировки методом вставки;
- быстрой сортировки;
- сортировки методом пузырька.
Алгоритмы поиска и замены
Большинство программных продуктов нацелено на обработку огромного числа данных. Программистам приходится работать с массивами чисел и символов, поэтому им необходимо знать различные алгоритмы поиска и замены данных. На собеседовании могут попросить продемонстрировать свои знания в этой области:
- Не используя специальных библиотек, написать программу удаления дублированных или вставки пропущенных значений в массиве, содержащим целые числа от 0 до 100.
- Без использования библиотек написать программу, переворачивающую массив целых чисел (первое значение меняется местами с последним, предпоследнее встает на место второго и т.д.).
- Для отсортированного и не отсортированного массива целых чисел от 1 до 100, написать программу по поиску повторяющихся значений. Текущий массив содержит 101 число.
- Для отсортированного и не отсортированного массива целых чисел от 1 до 100, написать программу по поиску пропущенного значения. Текущий массив содержит 99 чисел.
- Для массива из 100 чисел написать программу поиска максимального и минимального значений.
У большинства программистов эти задания не вызовут затруднений. Но проводящий собеседование специалист может попросить обосновать выбор способа решения и предложить поискать другие варианты.
Работа со строками
Для опытных программистов работа со строками не представляет сложности. Но новички из-за недостаточно хорошего знания основ нередко путаются с совместимостью типов, производят некорректное сравнение значения со ссылкой, неправильно отсчитывают номера символов. Чтобы понять, насколько хорошо программист разбирается в этой области, на собеседовании претендентам предлагают:
- показать различные методы конкатенации строк и пояснить различия в исполнении кода в каждом из них;
- написать программу, которая выискивает в заданном источнике информации основные данные (например, анкетные данные из резюме) и передает их для дальнейшего использования в соответствующие массивы;
- написать программу, подсчитывающую количество символов в строке по определенному критерию (например, гласные и согласные буквы);
- написать программу проверки наличия в строке только цифр или только символов;
- написать программу для проверки двух строк, не являются ли они анаграммами (состоят из одних и тех же символов, переставленных местами);
- написать программу для проверки строки, не является ли она палиндромом (одинаково читается в обоих направлениях).
Для наилучшей подготовки изучите источники с готовыми ответами на всевозможные вопросы. В книге Гейл Лакман Макдауэлл «Карьера программиста» можно найти около 190 вопросов с ответами для прохождения собеседования. А квалифицированные специалисты сервиса Феникс.Хелп, помогут вам справиться с академическими задолженностями, выполнив любой вид учебных работ качественно и в срок.
Понравилась статья?
Подпишитесь на наш блог и получайте наши статьи первым!
Или подписывайтесь на нас в соцсетях:
Заметили ошибку? Выделите текст и нажмите одновременно клавиши «Ctrl» и «Enter»
Нашли ошибку?
Текст с ошибкой:
Расскажите, что не так
Бесплатно отвечаем на ваши вопросы. Задайте свой вопрос и получите ответ от профессионального преподавателя. Выберите лучший ответ.
Вопросы могут задавать только авторизованные пользователи. Войти