1
0
Fork 0
test/README.md

3.4 KiB
Raw Permalink Blame History

Задача для SWE - Basic

Защита тестового задания состоит из 2 этапов:

  1. Ревью решения
  2. Устное обсуждение кода

В случае успешного прохождения 1 этапа, вы будете приглашены на интервью в рамках которого нужно ответить на несколько вопросов по написанному коду и защитить свое решение

Нужно написать класс на Java/Swift/Golang/С (Си), в зависимости от вакансии на которую вы претендуете (другие задачи на других языках рассматриваться не будут), со следующим интерфейсом (псевдокод):

class Incrementor {
  /**
  * Возвращает текущее число. В самом начале это ноль.
  */
  int getNumber();

  /**
  * Увеличивает текущее число на один. После каждого вызова этого
  * метода getNumber() будет возвращать число на один больше.
  */
  void incrementNumber();

  /**
  * Устанавливает максимальное значение текущего числа.
  * Когда при вызове incrementNumber() текущее число достигает
  * этого значения, оно обнуляется, т.е. getNumber() начинает
  * снова возвращать ноль, и снова один после следующего
  * вызова incrementNumber() и так далее.
  * По умолчанию максимум -- максимальное значение int.
  * Если при смене максимального значения число начинает
  * превышать максимальное значение, то число надо обнулить.
  * Нельзя позволять установить тут число меньше нуля.
  */
  void setMaximumValue(int maximumValue);
}

Т.е. класс очень простой. А теперь сложность: оно должно быть сделано очень хорошо. Т.е. максимально качественно, как только можно. Код должен быть идеальным, все должно быть покрыто unit тестами. Классы и все методы должны быть полностью покрыты понятной (т.е. полезной, а не для отписки) javadoc (для Java) или аналогом для Swift и Golang документацией. В общем, нужно сделать такой код, который каждый разработчик мечтает получить на поддержку -- идеальный (насколько кандидат способен).

Обратить внимание на:

  • Форматирование кода.
  • Нейминг (названия всех сущностей).
  • Покрытие тестами.
  • Наличие документации.
  • Общая читабельность и простота кода.

Результат необходимо предоставить в виде скрытого gist-а на gist.github.com.