Skip to content

Instantly share code, notes, and snippets.

@zbitname
Created March 31, 2016 16:42
Show Gist options
  • Save zbitname/c1db67701baeb38864e2d63d1060b9dc to your computer and use it in GitHub Desktop.
Save zbitname/c1db67701baeb38864e2d63d1060b9dc to your computer and use it in GitHub Desktop.
Exam #2 for backend developer (Node.js + MongoDB)

##Цель Сделать REST API с возможностью создавать новые комментарии и некоторые другие возможности из описания задания.

##Требования

  • В качестве СУБД использовать MongoDB.
  • Оформить проект и его структуру так, как вы делали бы это на большом highload проекте.
  • Покрыть тестами >90% кода (1) интеграционными тестами (2).
  • Проект должен быть оформлен так, чтобы он начал работать после этого:
npm i
npm test
# тут должно быть много тестов и желательно, чтобы они завершились успехом.
rm -rf node_modules
npm i --prod
npm start

При условии, что MongoDB и Node.js уже установлены

  • Требований по версии Node.js и MongoDB нет, главное, чтобы они без проблем устанавливались из официальных репозиториев для Ubuntu 14.04.
  • Для REST API можно использовать любые модули из npm.

(1) - подсчёт покрытия тестами можно сделать при помощи https://www.npmjs.com/package/istanbul. В подсчёте покрытия не нужно учитывать сами файлы с тестами и внешние модули. Будет плюсом, если покрытие тестами будет значительно больше 90%. (2) - можно почитать на википедии, но в общем смысле - это тест, который делает запрос к REST API имитируя действия пользователя.

##Описание задания ###Backend

  1. Должен быть реализован REST API.
  2. Сделать регистрацию и авторизацию через логин с паролем.
  3. Методы для создания и получения списка комментариев.
  4. Метод, который рассчитывает максимальный уровень вложенности в дереве комментариев. Уровень комментария в модели хранить нельзя, метод должен рассчитывать его.
  5. Метод, который будет возвращать массив пользователей с количеством их комментариев и этот массив должен быть отсортирован по убыванию количества комментариев (пользователь с наибольшим количеством комментариев должен быть всегда сверху). Желательно реализовать одним запросом к БД.

##Пожелания

  • В файле package.json установить требование к Node.js в соответствии с https://docs.npmjs.com/files/package.json, так мы узнаем о требовании к версии Node.js. А требования к версии MongoDB можно будет сообщить отдельно в письме.

Пожелания к использованию модулей:

Их использование не обязательно, можно использовать другие, аналогичные модули. Если вам не жалко времени, можно вообще всё самому сделать без использования модулей. Например, для того чтобы писать и запускать тесты не обязательно использовать gulp и chai, достаточно нативного assert и правильно оформленного scripts.test в package.json.

##Примечание Структуру хранения комментариев в БД можно выбрать любую, но нужно будет обосновать своё решение, указать на плюсы и минусы вашего решения.

Алгоритм подсчёта 4 и 5 метдов backend-а так же можно реализовать разными способами. При обсуждении вашего решения хотелось бы узнать чем вы руководствовались выбирая механизм/алгоритм рассчёта.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment