Тестовое задание на вакансию JS-разработчика

Реализуйте любой из предложенных вариантов.

При реализации помните, что раздел «плюсами будут» — программа максимум. Вы можете выбрать любой комфортный для Вас набор фичей из того, что описано в этом разделе.

При оценке заданий не будет учитываться качество использованных ресурсов (графики, звука…). Тем не менее рекомендуется воспользоваться каким-нибудь приличным банком бесплатных ресурсов.


Вариант 1

Реализуйте на языке JavaScript игру «крестики-нолики пять-в-ряд» на поле NxN (N должно настраиваться в пользовательском интерфейсе).

При реализации допускается использование сторонних библиотек. Обязательно укажите явно, какие готовые компоненты были использованы, их названия, лицензии и официальные сайты. Не допускается использование «конструкторов игр» — логика самой игры должна быть написана самим соискателем, на JavaScript.

Реализация должна покрывать весь игровой процесс, «как у взрослых» — стартовый экран, экран завершения игры, возможность начать новую игру, прервать текущую и т.п.

Плюсами будут:

  • отсутствие перезагрузки страницы при действиях пользователя,
  • использование canvas,
  • кросс-браузерная совместимость с изящной деградацией фич (явно укажите, какие браузеры поддерживаются в какой мере),
  • наличие звуковых эффектов и музыки (возьмите любые из доступных бесплатно),
  • сохранение состояния игры при обновлении страницы без участия сервера,
  • реализация игры против искусственного интеллекта,
  • реализация, допускающая обмен данными / получение команд с сервера.


Вариант 2

Реализуйте на языке JavaScript примитивный редактор табличных данных. Не допускается использование готового табличного редактора (но можно собрать его из любых других готовых компонентов). Обязательно укажите явно, какие готовые компоненты были использованы, их названия, лицензии и официальные сайты.

Данные — массив записей. Каждая запись — пара значений: name и value (должны быть представлены раздельными ячейками в редакторе).

Пример:

[{name:"name1", value="value1"},{name:"name2", value="value2"}]

Необходимо реализовать следующий функционал:

  1. Просмотр, добавление, изменение, удаление данных, в том числе изменение порядка записей. Чем более удобный и эргономичный интерфейс будет предложен, тем лучше.
  2. Загрузку и обновление данных из отдельной textarea на той же странице (в формате JSON).
  3. Выгрузку данных обратно в ту же textarea по запросу пользователя.

Плюсами будут:

  • работа с форматом CSV в дополнение к JSON,
  • загрузка и выгрузка данных из файлов на компьютере пользователя,
  • поддержка локализации текстов,
  • кросс-браузерная совместимость (явно укажите, какие браузеры поддерживаются в какой степени),
  • поддержка мобильных браузеров (iOS и или Android) со специализированной вёрсткой.


Вариант 3

Реализуйте на языке JavaScript простейший интерфейс для чтения RSS-каналов (в любой из версий форматов RSS или Atom, одной на выбор).

При реализации можно использовать любые готовые компоненты. Обязательно укажите явно, какие готовые компоненты были использованы, их названия, лицензии и официальные сайты.

Страница приложения разделена на четыре части — список каналов (с редактированием), список сообщений в выбранном канале, просмотр выбранного сообщения, статистика.

Статистика:

  • Число каналов.
  • По выбранному каналу: число сообщений, число авторов.
  • По выбранному сообщению: круговая диаграмма относительной частоты появления букв латинского алфавита в сообщении (после приведения в нижний регистр). (Каждая буква занимает долю площади круга, равную отношению числа таких букв к общему числу букв /не символов/ в сообщении.)

Плюсами будут:

  • поддержка больше чем одного формата (RSS и Atom),
  • полная поддержка юникодных букв в статистике, не только латинского алфавита,
  • фильтрация с возможностью показа только непрочитанных сообщений,
  • проработанность UI,
  • сохранение состояния приложения после обновления страницы без участия сервера,
  • поддержка локализации текстов,
  • кросс-браузерная совместимость (явно укажите, какие браузеры поддерживаются в какой степени),
  • поддержка мобильных браузеров (iOS и или Android) со специализированной вёрсткой.


Результаты присылайте на jobs@logiceditor.com.