Публичное учебное интервью по Java для Senior-уровня с разбором архитектуры, JVM, многопоточности и задач на рассуждение. В финале участники обсуждают процесс найма, system design и вопросы кандидата к работодателю.
Это публичное мок-собеседование на Senior Java-разработчика: Гриша Скобелев интервьюирует Сашу Бармина, который рассказывает о своём опыте проектирования банковского бэкенда в AWS с мульти-региональной репликацией. Техническая часть охватывает SOLID, TDD, Spring, профилирование JVM, выбор GC, надёжную доставку сообщений через Kafka и внешние вызовы из транзакций. В live-coding-секции разбирают исключения, Java Memory Model, синхронизацию, concurrent-коллекции и проектирование парсера строк; затем участники обсуждают вопросы кандидата, system design и устройство интервью.
Начинать рассказ о проекте стоит с бизнес-контекста и ограничений: кандидат связал свой опыт банковского онбординга с вымышленным международным сервисом ветеринарных клиник.
Для надёжной отправки событий участники предлагают transactional outbox/inbox, выбор семантики доставки и дедупликацию сообщений на стороне consumer.
Удалённый HTTP-вызов внутри транзакции создаёт неоднозначные состояния при сетевых сбоях; в обсуждении предлагают хранить запросы для повторов, применять backoff, буферизацию и отслеживать состояние обработки.
Dependency Inversion Principle отделяют от Dependency Injection: первый задаёт зависимость от абстракций, а второй является способом предоставления зависимостей через IoC-контейнер Spring.
Для общего счётчика недостаточно полагаться на порядок запуска потоков: нужно обеспечить happens-before, например через Thread.join; для атомарных операций подходят Atomic-типы или синхронизация.
В задаче с парсером сначала следует уточнить требования к дубликатам ключей, порядку элементов и необходимости возвращать исходную строку: от этого зависит выбор HashMap, LinkedHashMap и стратегии хранения.
Кандидату полезно спрашивать о реальной инженерной культуре, переработках, критериях роста, бюджете на повышение и взаимодействии между командами, а не ограничиваться декларациями об Agile и performance review.