int[] хранит значения плотно, Integer[] — ссылки на отдельные объекты. В цикле new Integer создаёт миллион обёрток за проход, постоянно заменяя предыдущие и увеличивая давление на GC.
Основные ветви Collection — List, Set и Queue; Deque расширяет Queue. В современных Java есть также SequencedCollection и SequencedSet для коллекций с определённым порядком обхода.
Назовите фактический механизм retries: библиотека, настройки клиента, consumer container, отдельный retry topic или собственная очередь. Главное — условия повторения, задержка и сохранность состояния.
Да, выразительность системы типов Java с generics позволяет моделировать вычисления машины Тьюринга. Из этого следует неразрешимость проверки подтипизации в общем случае, а не полезность таких конструкций в обычном коде.
Назовите сборщики, которые действительно использовались, версию JDK и причины выбора. Важнее объяснить наблюдавшиеся паузы и нагрузку, чем перечислить все доступные GC.
Помимо ForkJoinPool есть ThreadPoolExecutor и ScheduledThreadPoolExecutor: первый управляет рабочими потоками и очередью, второй — отложенными и периодическими задачами. Fixed, cached и single — варианты конфигурации.
Можно запустить три CompletableFuture в заданном executor и дождаться CompletableFuture.allOf. Это барьер завершения, а не автоматическое объединение результатов или отмена остальных при первой ошибке.
Java-приложение обычно собирают в JAR, помещают в образ с подходящим runtime и задают команду запуска. Сборка может идти в CI или отдельном builder-этапе Dockerfile.
Kotlin не требует объявлять или перехватывать исключения в сигнатуре: все исключения unchecked. Это упрощает композицию API, но переносит ответственность за ошибки в контракт и обработку.
Выбирайте примитив по задаче: synchronized/Lock для критической секции, volatile/atomic для видимости и отдельных операций, latch/barrier/semaphore для координации.
Главная ошибка — readLine вызывается дважды и пропускает строки. Также есть утечки при исключениях, глобальное накопление состояния, скрытые ошибки и некорректная запись CSV.
Executor отделяет отправку задач от управления потоками. Его используют для фоновой работы, ограниченных пулов, параллельных независимых вычислений и планирования.