Maxim Lebedev f7ad2f122f | ||
---|---|---|
README.md | ||
doc.go | ||
example_test.go | ||
go.mod | ||
go.sum | ||
incrementor.go | ||
incrementor_test.go |
README.md
Задача для SWE - Basic
Защита тестового задания состоит из 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.