js-interview-app

Задание

Вам необходимо создать приложение - тренажер для подготовки к собеседованиям по JavaScript.

Подготовка базы задач

Для работы приложения подготовьте базу задач по JavaScript и распределите их по категориям, отвечающим часто встречающимся вопросам собеседований, например, типы данных, замыкания, асинхронность, event loop и т.д. Список таких вопросов можно посмотреть в поисковике или по ссылкам:

Сложность задач подбирайте соответствующую собеседованию на позицию Junior JavaScript developer.

Категории вопросов

Ориентировочное количество категорий вопросов в вашем приложении - 10-12. Каждая категория содержит 10-15 задач.

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

Возле каждой категории указывается общее количество задач в ней и количество решённых задач.

Меню является многоуровневым. При клике по названию категории открывается список задач. Решённые и нерешённые задачи отличаются визуально.

При клике по названию задачи она отображается на странице приложения.

Задачи

У каждой задача есть

  • название
  • условие
  • правильный вариант решения
  • дополнительная теория (или ссылка на неё).

Решение задачи предполагает написание кода. В приложении под условием задачи или сбоку от него находится окно, в котором можно набрать код решения (подсветка и автодополнение кода приветствуются).

Вам необходимо разработать механизм проверки правильности предложенного пользователем решения.

Проверка решения

По клику на кнопку Run происходит проверка правильности решения и выводится уведомление о её результате.

Для проверки правильности решения вы можете использовать синтаксис "new Function" или другой механизм проверки. Использование с этой целью функции eval() нежелательно.

Сохранение истории

Под окном с кодом находится кнопка Save, при клике по которой сохраняется набранный код.

Если задача решена правильно, решение пользователя сохраняется автоматически.

Сохранённые решения доступны на вкладке История и располагаются там в хронологическом порядке. Возле решения есть ссылка на задачу, дата его сохранения, кнопка, позволяющая удалить данное решение из истории.

Добавление новых задач и категорий

У пользователя есть возможность редактировать приложение, добавляя в него новые задачи и категории.

Технические требования

  • работа приложения проверяется в браузере Google Chrome последней версии
  • использование jQuery не допускается
  • для быстрого прототипирования рекомендуется использовать Bootstrap
  • необходимо использовать Angular/React/Vue
  • можно использовать CSS preprocessors
  • рабочее приложение должно быть размещено на https://www.netlify.com/

Оценивание

Максимальный балл за задание - 500

Базовый и средний уровень

  • Верстка, дизайн, UI - 30 баллов

    • приложение правильно отображается и работает как на десктопе, так и на мобильных устройствах
    • есть возможность переключения между тёмной и светлой темами
  • Подготовка базы задач - до 300 баллов

    • по 2 балла за каждую задачу
  • Меню - 30 баллов

    • меню плавно выдвигается и скрывается, по клику по категории открывается список задач
    • возле названий категорий отображается количество решённых и нерешённых задач в них, в списке задач есть визуальное отличие между решёнными и нерешёнными задачами
    • при клике по названию задачи в меню она отображается на странице приложения
  • Задача - 50 баллов

    • при отображении задачи на странице приложения выводится её название и условие
    • у окна для ввода кода решения есть подсветка и автодополнение кода
    • под окном для ввода кода решения есть кнопка Run, позволяющая запустить код и проверить правильность решения, ссылки на дополнительную теорию и на правильный вариант решения
  • Сохранение истории - 40 баллов

    • правильное решение сохраняется автоматически
    • сохранить незаконченное решение можно кликом по кнопке Save под окном для ввода кода
    • все решённые и сохранённые пользователем задачи доступны на вкладке История и располагаются там в хронологическом порядке.
    • возле решения есть ссылка на задачу, дата сохранения, кнопка, позволяющая удалить данное решение из истории.

Экстра-уровень

  • Добавление новых задач и категорий - 80 баллов
    • У пользователя есть возможность редактировать приложение, добавляя в него новые задачи и категории.

Материалы