Начнем с подхода к GC, который не используют поколения (негенерационный GC).
Какую именно реализацию GC вы использовали?
В каких случаях не стоит использовать негенерационный GC?
Что именно вы делали с сообщениями (процессинг)? Насколько тяжеловесной была обработка?
Как контролировали соединения к TimescaleDB и Postgres одновременно, чтобы не положить базу?
Зачем использовали 60 консьюмеров на 30 партиций?
Как читали сообщения из Kafka: по одному или батчами?
Где в обычной Java можно встретить ForkJoinPool без его явного создания?
Что такое livelock между двумя потоками и как его избежать?
Расскажите про ArrayList: особенности, начальный размер, операции вставки и удаления.
Что такое load factor в HashMap и что происходит при его достижении?
Опыт с Kotlin, реактивным программированием (Project Reactor/WebFlux), CI/CD настройкой?
Расскажи про Future и CompletableFuture, в чём их отличие?
Расскажи про ThreadPool, ForkJoinPool и его особенности.
Теорема CAP: какие свойства сохранить для банковской/финансовой системы с распределённой микросервисной архитектурой?
Что такое чистая функция в функциональном программировании?
Расскажи жизненный цикл стрима в Java, его состояния и типы методов.
Что такое Spliterator внутри стрима? Что он умеет?
Что произойдёт, если во время итерации по коллекции через forEach попытаться удалить текущий элемент из этой же коллекции?
Расскажи про опыт работы с многопоточностью. Какой уровень API используешь?