Pull to refresh

Тест на крепкого JS программера

Reading time 3 min
Views 26K
Столкнулись тут мы с валом резюме на вакансию JS программера в нашу новую компанию. Понятно, что обработать огромное количество заявок силами двух человек весьма сложно. Разумным выходом является тест, по результатам которого некоторую часть кандидатов мы приглашаем на собеседование. Тест я написал на этих выходных, результат под катом.

Внимание, вопрос JS программерам, есть ли какие-то вещи, которые не нашли отражения в этом тесте?

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


UPD
Предполагается, что этот тест будет высылаться по email людям, которые указали мало своих скилов в резюме, не предоставили примеры своих работ или в скилах которых мы сомневаемся.

UPD2
После 80 комментариев, счёл дискуссию достаточно интересной, чтобы перенести в тематический блог.

Описание вакансии есть тут.
Tags:
Hubs:
-5
Comments 168
Comments Comments 168

Articles