Какие вызовы к внешним сервисам и инструменты вы использовали
Что проверяют
Работали ли вы с интеграциями всерьёз: знаете ли, что внешний сервис бывает медленным, недоступным и возвращает мусор, и как вы от этого защищались. Следом обычно просят рассказать про инцидент: что сломалось у соседа и как это отразилось на вашем сервисе.
Как отвечать
Отвечайте от своего проекта. Каркас для Java-стека:
- HTTP-клиенты:
RestClient(Spring Framework 6.1 и новее) для синхронных вызовов,WebClientдля реактивных, декларативные интерфейсы через@HttpExchangeили OpenFeign.RestTemplateв режиме поддержки, для нового кода Spring советуетRestClient. Без Spring естьjava.net.http.HttpClientиз JDK 11; - другие протоколы: gRPC, SOAP через JAX-WS или Spring Web Services, асинхронные интеграции через Kafka или RabbitMQ;
- таймауты: обязательно на соединение и на чтение. У
HttpURLConnectionпо умолчанию ноль, то есть ожидание без предела, и один зависший сосед выедает весь пул потоков; - устойчивость: Resilience4j с circuit breaker, retry с экспоненциальной задержкой, bulkhead и rate limiter. Повторять безопасно только идемпотентные операции, для остальных нужен ключ идемпотентности;
- наблюдаемость: метрики через Micrometer, трассировка через OpenTelemetry, время и код ответа каждого вызова в логах;
- тесты: WireMock или
MockRestServiceServerдля HTTP, Testcontainers для брокеров и баз.
Сильнее всего звучит история: сосед отвечал слишком долго, вы поставили таймаут и circuit breaker, а упавшие операции ушли в очередь на повтор. Цифры и детали берите только свои. Если интеграций было мало, честно назовите одну и разберите, как бы вы её укрепили сейчас.
Где спотыкаются
Перечисляют библиотеки без ситуаций. «Использовал Feign и Resilience4j» ничего не говорит о том, как вы выбирали пороги и что происходило при отказе.
Путают инструменты: MockMvc тестирует ваши контроллеры, а не исходящие вызовы, а @ControllerAdvice превращает исключения в HTTP-ответы, но от падающего соседа не защищает.
Включают ретраи без таймаутов, лимита попыток и идемпотентности. Такие повторы добивают перегруженный сервис и создают дубли операций.