Поскольку JavaScript - такой маленький язык, но с невероятной сложностью, вы должны уметь задавать относительно простые вопросы и выяснять, действительно ли они так хороши, основываясь на их ответах. Например, мой стандартный первый вопрос для оценки остальной части интервью:
В чем разница между var x = 1и в JavaScript x = 1? Отвечайте настолько подробно, насколько вам удобно.
У начинающих программистов JS может быть простой ответ о локальных и глобальных. У опытных JS-ребят определенно должен быть такой ответ, и, вероятно, следует упомянуть объем функционального уровня. Любой, кто называет себя «продвинутым» JS-программистом, должен быть готов говорить о локальных переменных, подразумеваемых глобальных переменных, windowобъекте, области действия функции, подъеме объявления и цепочках областей видимости. Кроме того, я хотел бы услышать о [[DontDelete]]повышении приоритета (параметры vs varvs 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. Затем вам следует продолжить спрашивать их о вещах, не связанных с JS, таких как тестирование, рабочие процессы, контроль версий и т. Д., Чтобы узнать, хороший ли они программист .