Войти Регистрация
Конкурентность

29. Номера заявок на кредитную карту в Альфа-Банке

Средняя

Java · 26 строк

Анкеты принимают 32 потока, в день рекламной акции — до 900 заявок в минуту. Номер показывают клиенту в SMS, по нему же скоринг находит клиента через clientOf.

Отметьте строки с ошибками.

В работе: Сервис приёма заявок на кредитную карту.

Как проверяем Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Плюс 1 вопрос про поведение программы — на зачёт не влияют. Ответ один на подход: после него показываем разбор.
volatileатомарностьSimpleDateFormatHashMap

Источник: наша задача на данных Альфа-Банка: заявки на кредитную карту. Условие пересказано своими словами.

  1. import java.text.SimpleDateFormat;
  2. import java.util.Date;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. public class ApplicationNumbers {
  6. private static final SimpleDateFormat DAY = new SimpleDateFormat("yyMMdd");
  7. private volatile int seq = 0;
  8. private final Map<String, Long> byNumber = new HashMap<>();
  9. // Номер заявки: КК-251021-000123. Вызывают 32 потока приёма анкет.
  10. public String next(long clientId) {
  11. String day = DAY.format(new Date());
  12. seq++;
  13. String number = String.format("КК-%s-%06d", day, seq);
  14. byNumber.put(number, clientId);
  15. return number;
  16. }
  17. // Скоринг ищет клиента по номеру из SMS.
  18. public Long clientOf(String number) {
  19. return byNumber.get(number);
  20. }
  21. }