Java · 33 строк
Экран «Лимиты по картам» открывают около 300 раз в минуту на один инстанс, у клиента в среднем 4 карты. Лимиты каждой карты отдаёт процессинг, обычно за 80 мс.
Отметьте строки с ошибками.
В работе: Бэкенд экрана лимитов в мобильном банке.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Плюс 1 вопрос про поведение программы — на зачёт не влияют. Ответ один на подход: после него показываем разбор.
Источник: на задачах Сбера: лимиты по картам. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class LimitsService {private final LimitClient client;public LimitsService(LimitClient client) {this.client = client;}// Экран «Лимиты по картам»: вызывается на каждое открытие.public List<Limit> loadLimits(List<String> cardIds) throws Exception {ExecutorService pool = Executors.newFixedThreadPool(cardIds.size());List<Future<Limit>> futures = new ArrayList<>();for (String id : cardIds) {futures.add(pool.submit(() -> client.fetch(id)));}List<Limit> result = new ArrayList<>();for (Future<Limit> f : futures) {result.add(f.get());}return result;}}interface LimitClient {Limit fetch(String cardId) throws Exception;}record Limit(String cardId, long dailyLimitRub) {}