← Назад к списку
Логотип Java Java
11.02.2026

ТЗ Java

Компания: ООО Мираполис

Пожалуйста, при прохождении тестирования не спешите, внимательно читайте тексты заданий и вопросов.

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

Задачи по Java

1) Реализация метода

/**
 * @param a - массив чисел, длина массива может быть больше 10млн.
 * @return массив чисел, в которых нету дубликатов. Порядок чисел в оригинальном массиве должен быть сохранён.
 *         Из дубликатов нужно оставлять последний элемент, например, для {2,1,4,2,3} правильное решение - {1,4,2,3}, а не {2,1,4,3}.
 *
 * В случае, если во входном массиве есть элемент меньше 0, то нужно выдавать ошибку.
 * Например, для {2,3,-1,5} обработка должна закончиться ошибкой.
 */
public static double[] task(double[] a) {
    // ...
}

2) Разница между max/min DELIVERY по валюте

Посчитайте для каждой валюты разницу между самым большим и самым маленьким заказом типа DELIVERY. Верните результат вычисления для каждой валюты. Валюты в результате должны находиться в порядке возрастания этой разницы.

class OrderService {
    enum Type {DELIVERY, PICKUP}

    static class OrderData {
        final Type type;
        final String currency;
        final Long amount;

        OrderData(@NotNull Type type,
                  @NotNull String currency,
                  @NotNull Long amount) {
            this.type = type;
            this.currency = currency;
            this.amount = amount;
        }

        String getCurrency() {
            return currency;
        }

        Long getAmount() {
            return amount;
        }

        Type getType() {
            return type;
        }
    }
}

/**
 * Возвращает map вида [валюта (в порядке возрастания разницы) - разница между самым большим и маленьким заказом
 * типа DELIVERY для валюты].
 *
 * Если по какой-то валюте только один заказ, то он является и самым большим и самым маленьким и разница равна 0.
 *
 * Пример входных данных:
 * [
 *   Order(DELIVERY, "EUR", 2000),
 *   Order(DELIVERY, "USD", 15),
 *   Order(DELIVERY, "RUB", 200),
 *   Order(PICKUP,   "RUB", 1250),
 *   Order(DELIVERY, "USD", 35),
 *   Order(PICKUP,   "USD", 55),
 *   Order(DELIVERY, "RUB", 100)
 * ]
 *
 * Ожидаемый результат:
 * ["EUR" -> 0.0, "USD" -> 20.0, "RUB" -> 100.0]
 */
Map<String, Double> getMaxMinusMinDeliveryMapByCurrency(List<OrderData> orderDataList) {
    // ...
}

Задачи по SQL

Даны две таблицы:

Table1

ID NAME
1 Name1
1 Name1
2 Name2
2 Name2
4 Name3

Table2

ID NAME
2 Name2
2 Name3
3 Name3
4 Name4
4 Name4

1) Записи из Table1, которых нет в Table2 (включая повторы)

Постройте запрос, который выводит из Table1 только те записи (строки), которых нет в таблице Table2, включая повторы (в решении нельзя использовать except, minus и intersect).

2) Записи из Table1, которые есть в Table2 (без повторов)

Постройте запрос, который выводит только те записи (строки) Table1, которые есть в Table2, исключая повторы (в решении нельзя использовать except, minus и intersect).