Какие вопросы можно задать, чтобы определить, действительно ли кандидат является профессиональным разработчиком JavaScript (на стороне браузера)?
Вопросы, по которым можно отличить, если кто-то не является специальным программистом JavaScript, но действительно занимается профессиональной разработкой JavaScript, объектно-ориентированной, многоразовой и поддерживаемой.
Пожалуйста, дайте ответы , чтобы опытные и специальные программисты на JavaScript могли взять интервью у кого-то более опытного, и я ускользну от ответов на довольно немногие из этих сложных вопросов. Пожалуйста, избегайте открытых вопросов .
Пожалуйста, сохраните один вопрос / ответ на собеседовании для каждого ответа SO для лучшего опыта чтения и упрощения подготовки к интервью.
источник
Ответы:
Поскольку JavaScript - такой маленький язык, но с невероятной сложностью, вы должны уметь задавать относительно простые вопросы и выяснять, действительно ли они так хороши, основываясь на их ответах. Например, мой стандартный первый вопрос для оценки остальной части интервью:
У начинающих программистов JS может быть простой ответ о локальных и глобальных. У опытных JS-ребят определенно должен быть такой ответ, и, вероятно, следует упомянуть объем функционального уровня. Любой, кто называет себя «продвинутым» JS-программистом, должен быть готов говорить о локальных переменных, подразумеваемых глобальных переменных,
window
объекте, области действия функции, подъеме объявления и цепочках областей видимости. Кроме того, я хотел бы услышать о[[DontDelete]]
повышении приоритета (параметры vsvar
vsfunction
) иundefined
.Еще один хороший вопрос - попросить их написать
sum()
функцию, которая принимает любое количество аргументов и возвращает их сумму. Затем попросите их использовать эту функцию (без изменений) для суммирования всех значений в массиве. Они должны написать функцию, которая выглядит так:И они должны вызывать его в вашем массиве следующим образом (контекст для
apply
может быть любым, я обычно используюnull
в этом случае):Если у них есть эти ответы, они, вероятно, знают свой JavaScript. Затем вам следует продолжить спрашивать их о вещах, не связанных с JS, таких как тестирование, рабочие процессы, контроль версий и т. Д., Чтобы узнать, хороший ли они программист .
источник
Базовое программирование на JS
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
источник
Спросите об «этом». Это хороший вопрос, который может стать настоящим испытанием для разработчика JavaScript.
источник
(Я предполагаю, что вы имеете в виду JavaScript на стороне браузера)
Спросите его, почему, несмотря на его бесконечные познания в JavaScript, все же неплохо использовать существующие фреймворки, такие как jQuery, Mootools, Prototype и т. Д.
Ответ: Хороший код кодировщика, повторное использование отличных кодеров. Тысячи человеко-часов были потрачены на эти библиотеки, чтобы отвлечь возможности DOM от специфичных для браузера реализаций. Нет смысла самостоятельно разбираться со всеми проблемами, связанными с DOM браузера, только для того, чтобы заново изобрести исправления.
источник
Спросите их, как они обеспечивают возможность использования своих страниц, когда у пользователя отключен JavaScript или JavaScript недоступен.
Единого верного ответа нет, но вы ищете ответ, говоря о некоторых стратегиях прогрессивного улучшения .
источник
Спросите, как случайное закрытие может вызвать утечку памяти в IE.
источник
Спросите: «Какую структуру модульного тестирования вы используете? И почему?»
Вы можете решить, действительно ли необходимо использовать фреймворк для тестирования, но разговор может многое рассказать вам о том, насколько эксперт этот человек.
источник
программисты среднего уровня должны владеть своими инструментами.
если он ответил на технические вопросы, связанные с экраном телефона выше, заставьте его набросать что-нибудь глупое на месте, например, сокращение URL-адресов ajax. затем запишите его в портфолио. нет замечательного портфолио = промежуточный разработчик в этой области, а не парень, которого вы хотите, чтобы руководить вашим новым блестящим проектом.
источник