Предположим, что у нас есть отчет. Например:
Компания | Число акций | Цена | Всего |
---|---|---|---|
IBM | 1000 | 25 USD | 25 000 USD |
Novartis | 400 | 150 CHF | 60 000 CHF |
Итого: | 65 000 USD |
Курсы валют:
Из | В | Курс |
---|---|---|
CHF | USD | 1,5 |
Описание задачи:
5$ + 10 CHF = 10$, если курс обмена 2:1
5$ * 2 = 10$
- Выполнять сложение величин в двух различных валютах и конвертировать результат с учетом указанного курса обмена;
- Выполнять умножение величин в валюте (стоимость одной акции) на число (количество акций), результатом этой операции должна быть величина в вылюте.
- Сделать переменную amount закрытым членом класса
- Побочные эффекты(side effect) в классе Dollar
- Округление денежных величин
Проблемы:
нет класса Dollar;
нет конструктора;
нет метода times(int);times - умножить на
нет поля amount;
Полный цикл TDD:
- Добавить небольшой тест
- Запустить все тесты, при этом обнаружить, что что-то не срабатывает.
- Внести небольшое изменение.
- Снова запустить тесты и убедиться, что все они успешно выполняются.
- Устранить доблирование с помощью рефакторинга
Пример:
void testSimpleAddition() {
Money five = dollar(5);
Expression sum = five.plus(five);
Bank bank = new Bank();
Money reduced = bank.reduce(sum, "USD");
assertEquals(dollar(10), reduced);
}
Чистый код, который работает. (Ron Jeffries)
Задача №1
Необходимо написать метод, который должен вернуть ближайшее к 10 число из входного массива чисел.
Если найдены несколько чисел равно удалённые к 10 то вернуть максимальное. Например, среди чисел 9 и 11 вернуть 11.
Например, среди чисел 8 и 11 ближайшее к десяти 11.
Пример тестовых данных:
[1, 2, 3, 4] -> 4
[10, 2, 3, 4] -> 10
[30, -10] -> 30
[7, 13] -> 13
@param array массив целых чисел
@return ближайшее к десяти число
public int nearToTen(int[] arrays) {}
Задача №2
Найти наибольший общий префикс.
Пример тестовых данных:
["flower","flow","flight"] -> "fl"
["dog","racecar","car"] -> ""
Задача №3
Поиск повторяющихся элементов в массиве
Пример тестовых данных:
[1,2,3,1] -> true
[1,2,3,4] -> false
[1,1,1,3,3,4,3,2,4,2] -> true
Задача №4
Input : 1, 2, 5, 4, 4, 5, 2, 3, 6, 5
Output:
Map<String, Integer>
<"1-hello": 1>,
<"2-hello": 2>,
<"3-hello": 1>,
<"5-hello": 3>
Notes:
- В результирующей выборке нет 4, 6
- Ключ - преобразованный элемент стрима, значение - количество вхождений данного элемента в стриме
- Написать все одним чейном(без доп филдов, стейта)
public static Map<String, Long> transform(final Integer... nums) {
return
}
Задание Spring: Требуется разработать приложение с использованием Spring Boot, которое должно хранить вопросы и ответы в виде текстового файла (~ 8 вопросов). Ответы могут быть как выбором из нескольких вариантов или пользователь может сам ввести ответ. Приложение выводит заданный список вопросов и пользователь после ответов получает отчет на сколько процентов его ответы верны. Желательно для этой задачи написать Unit-тесты.