Иэн Дид, инженер-программист | Pangea.ai

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

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

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

Успешное собеседование, как для интервьюера, так и для интервьюируемого, выявит лучшие качества всех кандидатов. Это означает постановку сложных задач для проверки дальности их набора навыков. Это дает сильным кандидатам возможность показать, на что они способны, и выделиться среди остальных. Если вам нужна помощь в выборе подходящих разработчиков, расскажите нам, что вам нужно. Мы можем сделать эту работу за вас и в течение 72 часов свяжем вас с 5 компаниями, которые соответствуют вашим потребностям, - и все это бесплатно.

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

Что можно и чего нельзя делать при собеседовании с разработчиком JavaScript

Do

  • Решите, кого вы ищете: Ищете ли вы нового выпускника или опытного специалиста по JavaScript, обязательно масштабируйте уровень собеседования и тестируйте соответственно. Нет смысла тратить время кандидата, и вы ожидаете, что он будет опираться на многолетний опыт, которого у них просто еще нет.
  • Заинтересуйтесь кандидатом: потратьте некоторое время на то, чтобы узнать, кто придет, прежде чем они пойдут на собеседование. Github, StackOverflow и связанные с ними онлайн-профили дают вам возможность увидеть часть кода кандидата в открытом доступе. Возможность задавать вопросы о реальных проектах и ​​опыте с такой высокой степенью детализации слишком хороша, чтобы упускать ее.
  • Проведите практические тесты: чем ближе собеседование к реальной жизни, тем лучше. Попросить кандидата реализовать небольшую функцию, посмотреть на существующий код, чтобы найти ошибки и улучшения или обсудить некоторые варианты дизайна - лучший показатель, который вы получите об их успехе в будущем.
  • Обеспечьте техническое домашнее задание. Хотя требовать от кандидата слишком много времени - плохая практика, короткий технический тест перед собеседованием может предоставить много дополнительных материалов, которые можно обсудить и развить в процессе. Это дает подходящему кандидату возможность продемонстрировать свои навыки за пределами отведенных 90 минут.

Не

  • Собеседование исключительно на программном жаргоне: Приятно знать, что кандидат знает, что означает SOLID или GRASP и что включает в себя Agile, но сами по себе термины не позволяют построить хорошее программное обеспечение.
  • Проведите онлайн-анкетирование с несколькими вариантами ответов: Написание хорошего кода - сложная тема, которая включает в себя области дизайна, технического понимания и разработки. Анкета с несколькими вариантами ответов, хотя ее легко оценить, не оценивает ни один из соответствующих навыков и просто расстраивает хороших кандидатов.
  • Сделайте процесс собеседования многодневным: Хорошо проведенное телефонное собеседование и личная оценка должны дать вам достаточно информации, чтобы принять решение о приеме на работу. Наличие кандидатов на собеседовании из трех, четырех или пяти этапов свидетельствует о пренебрежении к их времени и к вашему собственному.

Как спланировать хорошее собеседование по JavaScript

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

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

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

  • 5–10 минут на обсуждение соответствующего опыта и предыдущих ролей
  • 10–15 минут на вопросы собеседования по программированию на JavaScript и особенностям языка.
  • 40–50-минутное упражнение по кодированию, включая время для обсуждения решения
  • 20 минут для ответа на вопросы кандидата и обсуждения роли

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

Кодирование под давлением

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

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

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

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

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

Преодоление ограничений технического собеседования

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

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

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

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

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

Если вам нужна помощь в поиске сильного кандидата, расскажите, что вам нужно. Мы можем сделать эту работу за вас и в течение 72 часов свяжем вас с 5 компаниями, которые соответствуют вашим потребностям, - и все это бесплатно.

Вопросы, на которые следует ответить на успешном техническом собеседовании по JavaScript

По окончании 90-минутного собеседования вы должны составить представление о том, какой кандидат находится перед вами. С профессиональной точки зрения этого времени достаточно, чтобы произвести первое впечатление. Некоторые из вопросов, на которые вы должны уметь ответить, должны включать:

  • Смогут ли они написать хороший чистый код, если присоединятся к команде?
  • Могут ли они обсуждать свой код, включая преимущества и недостатки любого конкретного решения, и активно участвовать в нем?
  • Интересно ли им, чем занимается компания?
  • Есть ли у них интерес и способность к постоянному профессиональному развитию?
  • Соответствуют ли они установленным здесь методам работы?
  • С ними нам было бы приятно работать?

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

Вопросы на собеседовании

Общие вопросы собеседования

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

  • Почему вы уходите с нынешней должности?
  • Какие задачи вы хотите решить в будущем?
  • Какие приложения вы хотели бы создавать в будущем?
  • Какую роль вы бы хотели получить через пять или десять лет?

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

Отраслевой опыт

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

Расскажите, как вы стали разработчиком JavaScript

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

Расскажите мне о приложениях JavaScript, которые вы разрабатывали в прошлом

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

Расскажите мне о случае, когда вы разработали функцию для пользователя, но после ее реализации это оказалось не тем, что им нужно. Что вы узнали из этого опыта?

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

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

Вопросы для собеседования по JavaScript

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

Основные вопросы на собеседовании и примеры ответов

Цель: определить, знает ли кандидат основы.

Интервьюеры могут пропустить их для кандидатов с большим подтвержденным опытом или реальными примерами кода.

Что такое JavaScript?

  • JavaScript - это легкий интерпретируемый язык программирования с объектно-ориентированными возможностями.
  • Его использование широко распространено в Интернете для создания интерактивности на статичных HTML-страницах.
  • Он очень популярен среди разработчиков и используется в большом количестве фреймворков, которые также облегчают кроссплатформенную мобильную разработку.

Каковы преимущества веб-страниц на JavaScript?

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

Опишите некоторые особенности JavaScript?

Ответы могут включать:

  • Это легкий интерпретируемый язык программирования.
  • Он предназначен для создания сетевых приложений.
  • Он дополняет и интегрирован с Java.
  • Это открытый и кроссплатформенный язык сценариев.

Каковы области действия переменной в JavaScript?

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

  • Глобальные переменные - переменная с глобальной областью действия. Глобальная переменная видна повсюду в вашем коде JavaScript.
  • Локальные переменные - видны только внутри функции, в которой они определены.

Вопросы по функциям JavaScript

Цель: проверить знания кандидатов в области программирования на JavaScript

В чем разница между атрибутами и свойством?

  • Атрибуты - предоставляют более подробную информацию об элементе, таком как идентификатор, тип, значение и т. Д.
  • Свойство - это значение, присвоенное свойству, например type = ”text”, value = ’Name’ и т. Д.

Что такое закрытие?

Замыкание определяется как функция и ее ссылки на окружающее ее состояние. Он служит для предоставления внутренней функции доступа к объему внешней функции. Замыкания создаются в JavaScript каждый раз, когда создается внутренняя функция.

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

Что такое обещание?

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

Обещание может находиться в трех возможных состояниях:

  • Выполнено: программа вызвала функцию resolve () - может вернуть значение или причину, по которой значение не было возвращено, например ошибка сети
  • Отклонено: программа вызвала reject ()
  • На рассмотрении: еще не выполнено или отклонено

Примеры кодирования Javascript

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

Напишите функцию, чтобы проверить, является ли число целым

function isInt(num) {
return num % 1 === 0;
}

Простое решение отделить десятичные дроби от целых чисел - определить, делится ли оно на 1

Напишите функцию для суммирования массива чисел

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const sum = (acc, current) => acc + current;
const res = numbers.reduce(sum, 0);

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

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

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

function multiply(a) {
return function(b) {
return a * b;
}
}

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

Вызывающее имя («first») («last») должно возвращать «Name: last, first»

function name(first) {
return function (last) {
console.log(“Name: “ + last + “, “ + first)
}
}

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

Примеры кодирования в реальном мире

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

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

Больше контента на plainenglish.io