Столкнулись тут мы с валом резюме на вакансию JS программера в нашу новую компанию. Понятно, что обработать огромное количество заявок силами двух человек весьма сложно. Разумным выходом является тест, по результатам которого некоторую часть кандидатов мы приглашаем на собеседование. Тест я написал на этих выходных, результат под катом.
Внимание, вопрос JS программерам, есть ли какие-то вещи, которые не нашли отражения в этом тесте?
UPD
Предполагается, что этот тест будет высылаться по email людям, которые указали мало своих скилов в резюме, не предоставили примеры своих работ или в скилах которых мы сомневаемся.
UPD2
После 80 комментариев, счёл дискуссию достаточно интересной, чтобы перенести в тематический блог.
Описание вакансии есть тут.
Внимание, вопрос JS программерам, есть ли какие-то вещи, которые не нашли отражения в этом тесте?
- Кроссбраузерность:
- Расскажите, какие методы межсерверных запросов вы знаете и применяете.
- XSS атаки: как они работают, что вы делаете для защиты от них?
- протокол HTTP:
- какие методы вы применяете и как?
- Как осуществляется передача файлов с клиента на сервер и с сервера на клиент?
- keep-alive и как он применяется для оптимизации работы скриптов?
- Кэширование: какие есть заголовки, как они применяются, какие методы вы применяете для защиты от кэширования на прокси серверах?
- ScriptHost: какие отличия скриптовых движков браузеров вы знаете (без DOM модели)?
- ООП:
- Что такое ООП? Основные принципы.
- как JS соотносится с парадигмой OOП? Поясните свой ответ.
- Шаблоны проектирования (Design Patterns):
- Что такое шаблоны проектирования и для чего они нужны?
- MVC в JS – применяете ли вы этот шаблон? Если применяете, то как (пример кода)? Если не применяете, то почему?
- Синглтон в JS. Что это такое? Зачем он может понадобиться в JS?
- Быстродействие:
- Как бы вы сложили 20 строк в JS?
- Расскажите про влияние разных стилей вёрстки на скорость загрузки страницы.
- Что ещё влияет на скорость загрузки страницы?
- Как вы оптимизируете скорость загрузки страницы? Любимые приёмы улучшения производительности работы.
- Как влияют отличия в работе с DOM моделью браузеров на скорость загрузки?
- Браузеры
- С какими браузерами вы работали?
- Расскажите про отличия между ними.
- Вёрстка:
- Что такое сематическая вёрстка и зачем она нужна?
- Что такое микроформаты?
- Как бы вы сверстали горизонтальное меню сайта? Пример кода. Почему именно так?
- Что вы можете рассказать о таком коде:
<table><tr><td>cell</td><td>cell</td></tr></table>
? - Зачем нужна вёрстка на дивах? Какие преимущества она даёт? Какие есть недостатки? В каких случаях её лучше не применять?
- Есть код:
<div id="AAA"><div><h1>header</h1><span class="comment">comment</span><span id="buttons">buttons</span>text</div></div>
. Напишите CSS селекторы, чтобы раскрасить подчёркнутые слова в разные цвета. - Есть многострочная таблица. Нужно сделать каждую чётную строку чуть темнее, чем нечётную. Как вы это реализуете? Почему?
- Есть древовидная дискуссия, например, как на habrahabr.ru. Необходимо сохранить отметки о прочтении ответов, чтобы они оставались после перезагрузки страницы и каждый прочитанный ответ был отмечен картинкой-пиктограммой. Как вы это реализуете?
- Нужно сверстать выпадающее меню, не применяя JS. Расскажите о способах и их недостатках.
- Необходимо прижать футер к низу страницы. Расскажите о способах и их недостатках.
- Необходимо сделать круглые края у кнопки. Расскажите о способах и их недостатках.
- Дизайнер нарисовал картинку со множеством кнопочек. Необходимо нарезать кнопки и вставить в дизайн. Как вы будете это делать?
- Сделайте круговую диаграмму с 5 сегментами, размеры которых задаются переменными в JS и пришлите пример кода.
- Тестирование:
- а как вы тестируете вёрстку? (методы, фреймворки, подходы)
- На какие вещи необходимо обращать внимание при тестировании вёрстки?
- Как вы отлаживаете JS код?
- На что обращаете внимание при тестировании JS?
- AJAX:
- Мультипоточность/многозадачность в JS, как она реализуется?
- Как сделать синхронизированную секцию на JS в браузере?
- Нужно написать web чат: страничка в которой есть список сообщений от пользователей и форма отправки. Какой подход вы используете для реализации и почему?
- Для вставки нового элемента в DOM модель необходимо сгенерировать уникальный ID. Как как вы это сделаете?
UPD
Предполагается, что этот тест будет высылаться по email людям, которые указали мало своих скилов в резюме, не предоставили примеры своих работ или в скилах которых мы сомневаемся.
UPD2
После 80 комментариев, счёл дискуссию достаточно интересной, чтобы перенести в тематический блог.
Описание вакансии есть тут.