Архив тестовых заданий по запросу компаний
Go to file
Maxim Lebedev f7ad2f122f
🚚 Moved code from Gists
2020-08-17 19:57:55 +05:00
README.md 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00
doc.go 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00
example_test.go 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00
go.mod 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00
go.sum 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00
incrementor.go 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00
incrementor_test.go 🚚 Moved code from Gists 2020-08-17 19:57:55 +05:00

README.md

Задача для 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.