2010-03-22 3 views
124

Каковы хорошие вопросы, чтобы определить, действительно ли кандидат является разработчиком JavaScript (браузера)?Вопросы для интервьюера программистов на JavaScript (с ответами)

Вопросы, которые могут отличить, если кто-то не является ad-hoc-программистом JavaScript, но действительно делает профессиональную разработку JavaScript, объектно-ориентированную, многоразовую и поддерживаемую.

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

Пожалуйста держите один интервью вопрос/ответ на SO ответить для лучшего опыта чтения и облегчения подготовки к собеседованию.

+20

Никогда не занимайтесь промежуточным разработчиком JS тем, кто должен быть более продвинутым! Это просто безумие. Попросите кого-нибудь квалифицировать собеседование. – James

+20

@ J-P - так, если ваш старший разработчик завершает работу, тогда вы просто ввернуты? – tvanfosson

+14

@ J-P Я пытаюсь нанять кого-то лучше себя. Это небольшой стартап, поэтому у меня нет лучшего выбора, если я не использую внешнюю помощь ... но тогда я должен был бы взять у него интервью;) –

ответ

6

Задать вопрос «Какая модульная система тестирования вы используете?» И почему? »

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

+1

В качестве справки, QUnit поразительно: http://docs.jquery.com/QUnit – Goyuix

22

Спросите об этом. Это один хороший вопрос, который может быть истинным тестом разработчика JavaScript.

+0

Можете ли вы предоставить ссылку на хорошую статью? –

+2

Я думаю, что этот вопрос поможет http://stackoverflow.com/questions/2148451/help-this-is-confusing-me-in-javascript –

+13

this === http://stackoverflow.com/questions/2492123/pro -javascript-programmer-interview-questions-with-answers (BADUM-TISH!) – Ali

18

(я предполагаю, что вы имеете в виду на стороне браузера JavaScript)

спросить его, почему, несмотря на бесконечное знание JavaScript, это еще хорошая идея использовать существующие механизмы, такие как JQuery, Mootools, Prototype и т.д. .

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

+5

@Tim Down: конечно, но если вы найдете надежный пакет, тогда почти все части пакета будут рассмотрены способными людьми. И как пользователь пакета с открытым исходным кодом, вы можете внести исправления, если найдете ошибки, добавив свой опыт. – PanCrit

+0

Правда, знайте колесо - но не всегда используйте одни и те же шины для разных ландшафтов. Например. Зачем использовать всю библиотеку jQuery, когда вам нужно всего лишь транспорт Ajax и т. Д. (Для вашего проекта) - http://microjs.com – Ali

+1

Ответ на этот вопрос - сам вопрос: почему мы используем IDE, а не простой блокнот для редактирования наш код? :) –

11

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

Нет ответа на один, но вы ловите ответ, говоря о некоторых стратегиях для Progressive Enhancement.

Progressive Enhancement состоит из следующие основные принципы:

  • основное содержание должно быть доступным для всех браузеров
  • базовая функциональность должна быть доступна для всех браузеров
  • скудны, семантическая разметка содержит все содержание
  • расширенная компоновка обеспечивается с помощью внешних ссылок CSS
  • Повышенных свойств обеспечиваются [[ненавязчивым JavaScript | ненавязчивый]], внешне связанного JavaScript
  • конечных предпочтения пользователей браузера уважаются
+1

Лучший вопрос нанять архитектора JS-парня :) –

117

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

В JavaScript, в чем разница между var x = 1 и x = 1? Ответьте на столько или немного деталей, как вам удобно.

Начинающие JS программисты могли бы иметь базовый ответ о местных против глобалов. Промежуточные JS-ребята должны обязательно иметь этот ответ, и, вероятно, следует упомянуть область функционального уровня. Любой, кто называет себя «продвинутым» программистом JS, должен быть готов поговорить о локалях, подразумеваемых глобальных объектах, объекте window, области функций, талинге объявления и целям областей видимости. Кроме того, мне бы хотелось услышать о [[DontDelete]], приоритет подъема (параметры против var против function) и undefined.

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

function sum() { 
    var i, l, result = 0; 
    for (i = 0, l = arguments.length; i < l; i++) { 
    result += arguments[i]; 
    } 
    return result; 
} 
sum(1,2,3); // 6 

И они должны вызвать его в массиве, как это (контекст для apply может быть что угодно, я обычно использую null в этом случае):

var data = [1,2,3]; 
sum.apply(null, data); // 6 

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

+3

Хороший вопрос. Маленькая ницпа: Я считаю, что вы имеете в виду «результат возврата» вместо «return i». Pro-tip: настроить хорошую тестовую среду для проверки кода перед публикацией ;-) – MisterMister

+3

Вау, это глупая ошибка. Я тестирую большую часть своего кода в jsFiddle перед публикацией, но не тестировал этот. Спасибо :) – bcherry

+4

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

86

Basic JS programmming

  • Scope of variable
  • Что такое Associative Array? Как мы его используем?

OOPS JS

  • Difference between Classic Inheritance and Prototypical Inheritance
  • Что такое difference between private variable, public variable and static variable? Как мы это достигаем в JS?
  • Как до add/remove properties to object во время выполнения?
  • Как достичь inheritance?
  • Как сделать extend built-in objects?
  • Почему extending array is bad idea?

DOM и JS

  • Difference between browser detection and feature detection
  • DOM Event Propagation
  • Event Delegation
  • Event bubbling V/s Event Capturing

Разное

  • Graceful Degradation V/s Progressive Enhancement
+16

Это для найма гуру JS. – Andreas

+1

@andreas - Да. Супер набор вопросов. Мы можем выбрать подмножество из них соответственно – pramodc84

+22

Будьте готовы для разработчика JS сказать что-то вроде этого: JavaScript не имеет ассоциативных массивов. Однако JavaScript имеет объектные литералы, которые могут использоваться как ассоциативные массивы. Кроме того, свойства объектов могут быть доступны с использованием либо точечной нотации, либо квадратных скобок и строк. –

1

промежуточные программисты должны иметь техническое мастерство своих инструментов.

Если он передал технические вопросы по экрану экрана телефона выше, заставьте его набросать что-то глупое на месте, например, кратчайший URL-адрес ajax. затем запечь его в своем портфолио. не удивительный портфолио = промежуточный разработчик в этой области, а не тот парень, которого вы хотите отвечать за ваш блестящий новый проект.

+2

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

+0

@IlyaAyzenshtok ЭТО является частью моей дилеммы. Мне трудно показать портфолио, когда 99% моей работы является собственностью/за платной стеной/внутренней ... – Spartacus

Смежные вопросы