Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Гайды/Java-разработчик/Собес в Сбер · Senior Java+Go разработчик («Переводы»)

Собес в Сбер · Senior Java+Go разработчик («Переводы»)

Материал Эйч · Опубликовано 27 октября 2026

Обзор

Микросервисы переводов в Сбербанк Онлайн: Java 17, Go, Kafka, PostgreSQL, Spring Boot 3 и контрактное API-First развитие.

Java Core и коллекции
Spring Boot, транзакции и тесты
Kafka: доставка, идемпотентность, DLQ
PostgreSQL и SQL
REST и SDD/OpenAPI
Go на уровне senior
Инциденты и работа с требованиями
Поведенческие и мотивация

Фишка: Сильный акцент на банковский домен (переводы, расчёты), API-First/SDD, надёжность интеграций (идемпотентность, retry, DLQ) и культуру расследования production-инцидентов.

ЭтапДлительностьЧто проверяют
Скрининг / HR30–45 минМотивация, формат работы (офис/гибрид, 10:00–19:00), английский B2, интерес к финтеху и домену переводов, отсутствие конфликтов по графику.
Техническое интервью60–90 минJava (коллекции, generics, исключения), Spring (@Transactional, интеграции), SQL, задачи на код и разбор сниппетов; вопросы по Kafka и надёжности интеграций.
Углубление / команда60–120 минОпыт микросервисов, REST/Kafka-контракты, тестирование (JUnit, Testcontainers), production-инциденты, взаимодействие с аналитиками и SDD; возможна секция на Go.
Финал30–60 минСогласование ожиданий, софт-скиллы, безопасность и процессы Сбера при необходимости.

Стек и темы

Обязательный минимум

  • Java 17: ООП, коллекции, equals/hashCode, generics, исключения при override
  • Spring Boot 3.x / Spring Cloud: REST, Feign, конфигурация, @Transactional
  • Kafka: consumer groups, гарантии доставки, Spring Kafka, идемпотентность, DLQ
  • PostgreSQL: транзакции, уровни изоляции, блокировки, оптимизация запросов
  • SQL: GROUP BY, HAVING, оконные функции, топ-N по группам
  • REST API и контрактное проектирование (OpenAPI, генерация кода)
  • Автотесты: JUnit, моки, Testcontainers, контрактные тесты
  • Go: коммерческий опыт, микросервисы, HTTP и работа с сообщениями
  • Английский B2: устное обсуждение технических тем

Плюсом будет

  • gRPC / Protobuf
  • Информационная безопасность: mTLS, сертификаты, шифрование
  • Опыт платежей и биллинга
  • Maven: многомодульные сборки, профили, OpenAPI Generator

Java Core

Почему HashSet может не находить уже добавленный объект через contains()?

Контракт Set опирается на equals/hashCode; без согласованных переопределений или при изменении полей после add бакет и сравнение расходятся.

Какие варианты переопределения метода с checked-исключениями допустимы?

Сигнатуру сохранить; checked — только сужать (подтипы) или убирать; unchecked можно добавлять; расширять checked в override нельзя.

В чём ошибка в addAll с wildcards List<? super T> и List<? extends T>?

Направление копирования и PECS: в extends-список нельзя безопасно писать; типичная ошибка — second.addAll(first) вместо first.addAll(second).

Ловушка: Задачи на сниппеты часто содержат синтаксические ловушки — сначала проговори контракт API, потом ищи баг.

Совет: Для коллекций всегда проговаривай equals/hashCode и мутабельность ключей.

Spring и транзакции

Что зафиксируется в БД при вложенных @Transactional и пустом catch вокруг исключения из внутреннего сервиса?

По умолчанию propagation REQUIRED — одна транзакция; поглощённое исключение может помешать rollback; уточни rollbackFor и self-invocation через proxy.

Как выглядит идеальный unit-тест для маппинга DTO с ~60 полями?

Табличные/параметризованные кейсы: null/отсутствие поля, граничные значения, регресс на бизнес-правила; не 60 assert в одном тесте без структуры.

Как проверять код, сгенерированный ИИ?

Ревью, статический анализ, тесты на поведение и границы; не доверять без прогона CI и сценариев из контракта.

Фишка: В команде «Переводы» важны идемпотентность, retry и DLQ — связывай ответы про транзакции с гарантиями между БД и Kafka.

Kafka и интеграции

Что такое высоконагруженная система и как понять, что она справляется с нагрузкой?

Нет универсального RPS — смотри SLO (latency, error rate, availability), нагрузочные тесты и метрики в prod (lag, saturation).

Как обеспечить идемпотентность обработчика сообщений о переводе?

Ключ идемпотентности, уникальные ограничения в БД, dedup store, outbox/inbox, аккуратный retry и DLQ для poison messages.

Consumer groups и гарантии доставки — что важно для разработчика?

Партиции и порядок внутри партиции, commit offset, at-least-once vs exactly-once, дубли при rebalance и retry.

Совет: Упомяни опыт Spring Kafka / caldera-kafka-lib, если есть — это прямо из стека вакансии.

SQL и PostgreSQL

Топ-10 номеров с наибольшим числом SMS (только с count > 1)?

GROUP BY phone_number HAVING COUNT(*) > 1 ORDER BY COUNT(*) DESC LIMIT 10.

Сотрудники с максимальной зарплатой в каждом отделе?

ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) = 1 или коррелированный подзапрос с MAX.

Самый свежий договор на клиента?

DISTINCT ON (client) … ORDER BY client, date DESC или ROW_NUMBER по client.

Ловушка: В банке часто спрашивают блокировки и изоляцию — свяжи SQL-задачу с конкурентными обновлениями баланса/статуса перевода.

Архитектура и требования

Где считать данные, видимые клиенту (например годовые проценты): backend или frontend?

Финансовые расчёты и единая бизнес-логика — на backend; фронт — отображение; важны округление, регуляторика и защита от подмены.

Какие признаки хороших системных требований?

Проверяемость, однозначность, границы, нефункциональные требования, критерии приёмки, трассировка к контракту API.

На что смотришь в системных требованиях и как работаешь с аналитиком?

Happy path + ошибки, идемпотентность, совместимость версий API, вопросы до оценки сроков.

Фишка: SDD/API-First: изменения начинаются с контракта OpenAPI, затем генерация и контрактные тесты.

Go (для dual-stack роли)

Как бы спроектировал HTTP-хендлер перевода с валидацией и таймаутами?

context с deadline, middleware, structured logging, метрики, graceful shutdown, разделение transport и domain.

Отличия error handling в Go от Java в микросервисе?

Явные ошибки, wrapping, не смешивать бизнес-ошибки и инфра; маппинг в HTTP-коды на границе.

Совет: Покажи, что Go не «второй язык для галочки» — пример сервиса с Kafka или REST из продакшена.

Задачи

Устранение повторяющихся символов в строке

Удалить эффект «залипания клавиши»: подряд идущие одинаковые символы (без учёта регистра для латиницы/кириллицы по условию задачи) схлопнуть до одного. Пример: «Ззддррррррааавствввууй, Сссссбееееррр!» → «Здравствуй, Сбер!».

Один проход: char[] или StringBuilder; если текущий символ равен предыдущему (с нормализацией регистра при необходимости) — пропуск, иначе append. O(n) по длине строки, O(n) память для результата.

Сложность: O(n)

Разбор влияния вложенных вызовов на транзакцию

doA() @Transactional вызывает doB() @Transactional, doB бросает IllegalStateException, исключение ловится пустым catch в doA. Что в БД?

При REQUIRED одна транзакция: unchecked из doB помечает rollback-only, но если исключение поглощено и не rethrow — commit может пройти без отката (зависит от rollback-only и настроек). Корректный ответ: риск частичной фиксации; нужен rethrow, rollbackFor или отдельная propagation REQUIRES_NEW осознанно.

Сложность: концептуально

Почему HashSet не распознаёт объект

Person в HashSet, contains(person) возвращает false после add.

Нет согласованных equals/hashCode (Lombok не подключён/не сгенерировал), либо поля изменились после add. Решение: неизменяемый ключ или стабильные equals/hashCode по бизнес-идентификатору.

Сложность: O(1) ожидание для contains

Переопределение методов с исключениями

Допустимы ли сохранение сигнатуры, добавление/удаление исключений?

Сигнатура (имя, аргументы, return) та же. Checked: можно не объявлять или объявлять подтипы; нельзя добавлять новые checked. Unchecked и Error — гибче. Совместимость с контрактом родителя обязательна.

Сложность: —

Дефект в addAll с wildcards

addAll(List<? super T> first, List<? extends T> second) { second.addAll(first); }

Неверное направление и нарушение PECS: в second (extends) нельзя добавлять элементы произвольно. Должно быть first.addAll(second).

Сложность: O(n+m)

Топ‑10 номеров по числу SMS

Номера с более чем одной SMS, сортировка по убыванию count, limit 10.

SELECT phone_number, COUNT(*) AS cnt FROM sms GROUP BY phone_number HAVING COUNT(*) > 1 ORDER BY cnt DESC LIMIT 10;

Сложность: O(rows) с индексом на phone_number

System Design

  • Спроектировать сервис внутреннего перевода: REST + Kafka, идемпотентность, статусы операции
  • Как связать запись в PostgreSQL и публикацию события в Kafka без рассинхрона (outbox)
  • Масштабирование обработчиков переводов при росте lag consumer group
  • Версионирование OpenAPI при изменении полей ответа для мобильного клиента СБОЛ

Каркас ответа

  1. Уточни функциональные сценарии и SLO (latency, доступность)
  2. Выдели сервисы, контракты REST/Kafka, модель данных
  3. Проговори идемпотентность, retry, DLQ, saga или компенсации для денег
  4. Наблюдаемость: метрики, трейсы, алерты на lag и error rate
  5. Риски: двойное списание, порядок сообщений, миграции схемы

Поведенческое

  • Сталкивались ли с production-инцидентами: как проходило расследование?
  • Как относитесь к работе с существующей системой и mix бизнес-фич с инфраструктурой?
  • Был ли жёсткий срок от бизнеса — уложились ли?
  • Как относитесь к требованиям «сделай как тут, но с изменением» при сжатых сроках?
  • Как используете ИИ в работе и как проверяете сгенерированный код?
  • Интересует ли банковская и инвестиционная предметная область?
  • Что важно в новой роли кроме дохода?
  • По каким признакам через полгода поймёте, что попали на своё место?
  • Комфортен ли график 10:00–19:00?

План подготовки

3 дня

  • Повторить equals/hashCode, generics PECS, override exceptions
  • Разобрать 2 SQL-задачи (топ-N, max per group) вслух
  • Прогнать сценарий Spring @Transactional с поглощённым исключением
  • Подготовить 2 STAR-истории: инцидент и жёсткий дедлайн

7 дней

  • Kafka: delivery semantics, idempotency, DLQ — шпаргалка на одну страницу
  • PostgreSQL: isolation levels, deadlocks, индексы под GROUP BY
  • OpenAPI-first: как бы изменил контракт перевода
  • Mock-интервью на английском 20 мин: описать последний микросервис

14 дней

  • Системный дизайн: перевод + outbox + статусы
  • Go: освежить handlers, context, тесты table-driven
  • Testcontainers: пример интеграционного теста с Postgres/Kafka
  • Изучить продукт «Переводы» в СБОЛ как пользователь
БлокГотов, если...
Java Coreможешь объяснить баг HashSet и исправить addAll с wildcards
Springможешь нарисовать цепочку транзакции и сказать, когда будет rollback
Kafkaможешь описать идемпотентный consumer и роль DLQ
SQLпишешь топ-10 и max-salary-per-dept без подсказок
Доменможешь связать требования переводов с backend-расчётами и API
Softесть честные ответы про инциденты, ИИ и ожидания от роли

В день собеседования

  • Повторить финальный чеклист
  • Подготовить вопросы команде про SDD, on-call и качество контрактов
  • Проверить связь и тихое место для английской части

Профессия

Java-разработчик

Темы

Java Core и коллекции
Spring Boot, транзакции и тесты
Kafka: доставка, идемпотентность, DLQ
PostgreSQL и SQL
REST и SDD/OpenAPI
Go на уровне senior
Инциденты и работа с требованиями
Поведенческие и мотивация

Компания

СберСбер

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

🍪 Мы используем cookie и Яндекс Метрику, чтобы сайт работал и становился лучше. Подробнее в политике.

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Сервисы
AI поиск работы newПоиск вакансий newПоиск компаний newКонструктор резюме newВопросы с собеседований newЗадачи с собеседований newГайды к собеседованиям newПроверятор резюме newГенератор сопроводительных new
Поиски себя
Войти в ITКарьерная стратегияПовысить доходПрофориентация
Работа в России
Сопровождение до оффера Найти работу в РоссииРевью портфолиоРевью резюмеТестовое собеседование
Работа за рубежом
Найти работу за границейПомощь в оформлении LinkedInРевью резюме на английскомТестовое собеседование на английском
Навыки
Личный брендОценка навыковРазвитие навыков и компетенций
Поддержка
ВыгораниеОтношения с коллективомОтношения с руководителемСиндром самозванцаСложное увольнение
Для бизнеса
Аудит процессов компанииВыступление на внутреннем мероприятии компанииКонсалтинг бизнеса
Профессии
HRАдминистрированиеАналитикаДизайнИнформационная безопасностьИскусственный интеллектИсследованияКонсалтингКонтентМаркетингМенеджментНаука и образованиеОфисПоддержкаПредпринимательство
Компания
С чем помогаемОтзывы Вопросы и ответыСертификатыВебинарыСтать ментором

Услуги оказывает ООО «Эйч Карьера»
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, г. Москва, Старопименовский пер., д. 18, стр. 2, помещ./ком./этаж I/19/2
Платформа принадлежит ООО «Эйч Карьера»

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта