Перейти к основному содержимому

Вопросы на собеседовании

Вопросы на собеседовании Backend-разработчика

25 вопросов на собеседовании backend-разработчика: SQL и индексы, транзакции, кэширование Redis, очереди Kafka и RabbitMQ, проектирование API и микросервисы.

Мои ответы на эти вопросы — за 30 секунд

Без резюме: опыт и последнее место работы. 25 вопросов в ваших словах, первые три — бесплатно.

Типовые вопросы и подсказки к ответам

Откройте подсказку под вопросом — и тут же проговорите ответ: разбор ИИ придёт в мини-собеседовании.

Технический вопрос

Вопрос 1Для всех уровней

Запрос к базе стал выполняться медленно после роста таблицы. Как вы будете искать причину?

Как отвечать ▾

Как отвечать: Покажите методичность: EXPLAIN/EXPLAIN ANALYZE, проверка использования индексов, статистика таблицы, кардинальность — и как проверите эффект после исправления.

Пример сильного ответа

Первым делом снимаю план выполнения запроса и смотрю, где реально уходит время: последовательное сканирование вместо индексного, большой разрыв между оценкой планировщика и фактическими строками, лишние сортировки и вложенные циклы. Дальше проверяю статистику и структуру индексов под условия фильтрации и сортировки. На практике в похожей ситуации таблица выросла до десятков миллионов строк, и запрос отчёта выполнялся около сорока секунд; после составного индекса под конкретный фильтр и переписывания подзапроса время сократилось до двух секунд. Результат фиксирую замером до и после и добавляю запрос в мониторинг медленных запросов.

Вопрос 2Middle

Как работают индексы в PostgreSQL/MySQL и когда индекс не используется?

Как отвечать ▾

Как отвечать: Объясните B-tree, составные индексы и порядок колонок, селективность; назовите типичные случаи: функция над колонкой, LIKE с ведущим %, несовпадение типов.

Пример сильного ответа

Индекс в PostgreSQL и MySQL чаще всего построен как сбалансированное дерево: поиск идёт по отсортированным ключам, а строки таблицы лежат отдельно. Индекс не используется, когда выборка возвращает большую долю строк и дешевле прочитать таблицу целиком, когда условие обёрнуто функцией или несовпадением типов, когда в составном индексе не задействован ведущий столбец, когда статистика устарела. В моей практике на таблице в несколько миллионов строк фильтр по нижнему регистру строки не попадал в индекс, пока не появился функциональный индекс — выборка ускорилась примерно в двадцать раз.

Вопрос 3Для всех уровней

Что такое транзакция и уровни изоляции? Приведите пример, где READ COMMITTED недостаточно.

Как отвечать ▾

Как отвечать: Расскажите про ACID, аномалии (грязное и неповторяющееся чтение, фантомы) и пример из практики: бронирование, списание со счёта — и почему выбрали REPEATABLE READ или SERIALIZABLE.

Пример сильного ответа

Транзакция — это набор операций, который выполняется целиком или не выполняется вовсе, с гарантиями атомарности, согласованности, изоляции и долговечности. Уровни изоляции определяют, какие аномалии видят параллельные транзакции: грязное чтение, неповторяющееся чтение, фантомы. READ COMMITTED недостаточно, когда между двумя чтениями одной и той же строки другая транзакция успевает её изменить: например, при проверке остатка перед списанием. Тогда применяю REPEATABLE READ или явную блокировку строки. В проекте с балансами переход на более строгий уровень убрал расхождения в отчётах, которые раньше всплывали примерно в одном случае из тысячи операций.

Вопрос 4Middle

Чем пессимистичная блокировка отличается от оптимистичной и когда что применять?

Как отвечать ▾

Как отвечать: Сравните SELECT FOR UPDATE с версионированием (поле version), опишите цену каждого подхода при высокой конкуренции и приведите реальный кейс.

Пример сильного ответа

Оптимистичная блокировка не захватывает строку, а при обновлении проверяет, что версия записи не изменилась: при расхождении операция повторяется или возвращает конфликт. Пессимистичная сразу удерживает строку на время транзакции, поэтому остальные ждут. Оптимистичную выбираю там, где конфликты редки, а держать блокировку долго нельзя: редактирование профиля, корзина, каталог. Пессимистичную — где конфликты часты и цена ошибки высока: списание остатка, резерв товара, изменение баланса. В одном сервисе оптимистичная схема при пиковой нагрузке давала до тридцати процентов конфликтов, и переход на короткую явную блокировку строки убрал повторы.

Вопрос 5Для всех уровней

Как вы спроектируете схему БД для интернет-магазина: товары, заказы, остатки?

Как отвечать ▾

Как отвечать: Проговорите сущности и связи, нормализацию против денормализации, где нужны индексы и внешние ключи, как хранить историю цен и статусов заказа.

Пример сильного ответа

Разделяю сущности: товар и его варианты, складские остатки, заказ и позиции заказа, платежи, статусы. Товар и вариант храню отдельно, потому что цена и артикул живут на уровне варианта, а описание — на уровне товара. В позиции заказа фиксирую цену и название на момент покупки, чтобы история не менялась при редактировании каталога. Остаток держу отдельной таблицей по складам и меняю его транзакционно вместе с созданием заказа, а движения остатков пишу в журнал для сверки. Индексы — по внешним ключам и по статусу с датой. Похожая схема держала около двух миллионов заказов без замедления выборок.

Вопрос 6Senior

Таблица выросла до сотен миллионов строк и мешает миграциям и запросам. Ваши варианты?

Как отвечать ▾

Как отвечать: Обсудите партиционирование, архивацию холодных данных, шардирование как крайнюю меру, онлайн-миграции (pg_repack, gh-ost) и честно назовите цену каждого решения.

Пример сильного ответа

Первым делом смотрю на профиль запросов: если большая часть обращений идёт по свежим данным, самое дешёвое решение — партиционирование по дате и вынос холодной истории в отдельное хранилище. Дальше проверяю индексы и планы: часто дело не в объёме, а в лишних полных сканах. Тяжёлые миграции делаю батчами с паузами, чтобы не держать блокировки. На одном проекте таблица около 400 млн строк: партиционирование и перенос истории сократили время тяжёлого запроса с минут до сотен миллисекунд, а миграции перестали блокировать прод. Шардирование предлагаю только после этих шагов.

Вопрос 7Для всех уровней

Как вы проектируете REST API: версионирование, коды ошибок, пагинация?

Как отвечать ▾

Как отвечать: Назовите конкретику: версии через URL или заголовок, идемпотентность POST, cursor-based против offset-пагинации, единый формат ошибок и корректные HTTP-статусы.

Пример сильного ответа

Версионирование держу в URL, например v1: ломающие изменения идут только в новой версии, а внутри версии поля добавляю, но не удаляю. Ошибки отдаю корректным HTTP-статусом и единым JSON: машинный код, человекочитаемое сообщение и request-id для логов. Пагинация — курсорная по стабильному ключу, offset оставляю только для админских выборок, иначе при вставках строки теряются и дублируются. Размер страницы ограничиваю сверху. В одном сервисе переход на курсорную пагинацию сократил p95 ответа списка примерно втрое на выборках в миллионы записей.

Вопрос 8Middle

Когда вы выберете gRPC или брокер сообщений вместо REST между сервисами?

Как отвечать ▾

Как отвечать: Покажите понимание компромиссов: синхронный вызов против асинхронного события, контракты protobuf, связанность сервисов, отладка и трассировка.

Пример сильного ответа

REST выбираю для публичного контракта: он простой, кэшируемый и понятный внешним клиентам. gRPC — для внутренних синхронных вызовов, где важны latency, строгая схема и стриминг: бинарный формат и генерация клиентов экономят время на интеграции. Брокер сообщений беру, когда операция асинхронная, её можно отложить или одно событие должны получить несколько потребителей, а отправитель не ждёт ответа: платежи, письма, пересчёт отчётов. Ключевой критерий — готовность вызывающей стороны ждать и требования к согласованности. На одном проекте вынос уведомлений в очередь и ретраи сократили нагрузку на основной сервис примерно на треть и убрали таймауты на пике.

Вопрос 9Для всех уровней

Зачем нужен кэш и какие проблемы он приносит?

Как отвечать ▾

Как отвечать: Упомяните снижение нагрузки на БД и latency, а из проблем — инвалидацию, несогласованность, cache stampede; расскажите про TTL и паттерн cache-aside.

Пример сильного ответа

Кэш нужен, чтобы снять с базы повторяющиеся чтения и уложиться в SLA по времени ответа. Проблемы, которые он приносит: устаревшие данные, сложная инвалидация и лавина запросов при промахе, когда все клиенты одновременно идут в базу. Поэтому продумываю TTL, ключи с версией, прогрев и защиту от одновременного пересчёта, чтобы значение обновлял только один процесс. И помню, что кэш — не источник истины: критичные данные всегда сверяю с базой. На одном сервисе горячие справочники в кэше с TTL дают экономию около 70% чтений базы и заметный выигрыш по p95.

Вопрос 10Middle

Как вы используете Redis помимо кэша?

Как отвечать ▾

Как отвечать: Приведите примеры: распределённые блокировки и их подводные камни, rate limiting, очереди на Streams, хранение сессий — и почему Redis, а не отдельный инструмент.

Пример сильного ответа

Redis использую не только как кэш. В первую очередь — распределённые блокировки и идемпотентность: ключ с TTL гарантирует, что повторный запрос не создаст второй платёж. Дальше — очереди и streams для фоновых задач, счётчики и rate limiting, лидерборды на sorted sets, сессии и короткоживущие токены, pub/sub для мгновенных уведомлений между инстансами. При этом помню про ограничения: память дорогая, данные могут потеряться при падении, поэтому критичное состояние всё равно пишу в основную базу. На одном проекте блокировки по ключу с TTL убрали дубли заказов и сократили повторные операции примерно на 3% потока.

Вопрос 11Middle

Как устроена доставка сообщений в Kafka/RabbitMQ и что такое семантика at-least-once?

Как отвечать ▾

Как отвечать: Объясните партиции и consumer group у Kafka или exchange и очереди у RabbitMQ, почему дубликаты неизбежны и как делаете потребителей идемпотентными.

Пример сильного ответа

Возьму Kafka: продюсер пишет в партицию, внутри партиции порядок гарантирован, между партициями — нет, поэтому ключ партиционирования выбираю осознанно. Потребитель читает пачками и коммитит офсет. Если коммит идёт после обработки, получаем семантику at-least-once: при падении между обработкой и коммитом сообщение придёт повторно. В RabbitMQ логика похожая — через подтверждения и возврат сообщения в очередь. Поэтому там, где сообщение запускает платёж или рассылку, обязательна идемпотентность. На одном сервисе доля дублей на пике — около 0,1% потока, и защита от повторной обработки убирает расхождения в отчётности.

Вопрос 12Для всех уровней

Расскажите про ваш основной язык: как устроена работа с конкурентностью в нём?

Как отвечать ▾

Как отвечать: Говорите о том языке, который в вакансии: горутины и каналы в Go, GIL и asyncio в Python, виртуальные потоки и CompletableFuture в Java — с примером из своего кода.

Пример сильного ответа

Мой основной язык — Go, и конкурентность там встроена в рантайм. Горутина — дешёвая задача, которую планировщик раскидывает по потокам операционной системы, поэтому тысячи одновременных операций — норма. Общение строится на каналах, а не на общей памяти: не передавай через общую память, передавай память через каналы. Для защиты состояния применяю мьютексы, для ожидания группы — WaitGroup, для отмены — context. На одном сервисе держали до 5 тысяч параллельных соединений на нескольких инстансах, и утечек горутин не было: профилирование помогало находить их заранее.

Вопрос 13Junior

Чем список отличается от хеш-таблицы и когда какую структуру данных выбирать?

Как отвечать ▾

Как отвечать: Покажите понимание сложности операций: поиск O(1) против O(n), упорядоченность, память — и пример, где неправильный выбор структуры замедлил сервис.

Пример сильного ответа

Список хранит элементы по порядку, доступ по индексу быстрый, а поиск по значению — линейный. Хеш-таблица даёт поиск, вставку и удаление в среднем за константу, но не хранит порядок и требует памяти под бакеты. Выбор простой: нужен доступ по позиции, обход по порядку или данные маленькие — беру список. Нужны частые проверки «есть ли элемент» и поиск по ключу — беру хеш-таблицу. Ещё важен профиль нагрузки: если вставок и удалений много, а обход редкий, выигрывает хеш-таблица. В одном сервисе замена линейного поиска по списку на множество ускорила обработку запроса примерно вдвое на 50 тысячах записей.

Вопрос 14Middle

Как вы пишете тесты для backend-сервиса: что покрываете unit, а что интеграционными?

Как отвечать ▾

Как отвечать: Опишите пирамиду тестов, изоляцию бизнес-логики, Testcontainers для интеграционных тестов с реальной БД, контрактные тесты — и какую метрику покрытия считаете разумной.

Пример сильного ответа

Логику закрываю unit-тестами: чистые функции, валидация, расчёты, обработка ошибок. Их много, они быстрые и запускаются на каждый коммит. Интеграционные тесты закрывают то, что зависит от инфраструктуры: работу с базой, брокером, HTTP-слой, транзакции и миграции. Обычно поднимаю их в контейнерах, чтобы результат был воспроизводим. Отдельно проверяю идемпотентность и повторную обработку сообщений — именно это чаще всего ломается в проде. В одном проекте довели покрытие ключевых модулей до 80% и снизили число дефектов на релизе примерно на треть.

Вопрос 15Middle

Что вы смотрите на код-ревью в первую очередь?

Как отвечать ▾

Как отвечать: Назовите по убыванию: корректность и граничные случаи, работа с ошибками и транзакциями, читаемость и соответствие архитектуре, потенциальные проблемы производительности и безопасности.

Пример сильного ответа

Сначала смотрю на корректность: решает ли код задачу, нет ли гонок, утечек и необработанных ошибок, что с транзакциями и повторными запросами. Затем — на читаемость и поддерживаемость: понятные имена, небольшие функции, отсутствие дублирования. Проверяю, что логика покрыта тестами и что нет лишних зависимостей. Стиль ловят линтеры, тратить на него время ревью не нужно. Ещё важно, чтобы изменения были небольшими: ревью на 200 строк проходит за полчаса, а на 2000 застревает на дни. Комментарии стараюсь писать так, чтобы автор понимал причину замечания.

Вопрос 16Middle

Как вы защищаете backend-приложение от типичных атак?

Как отвечать ▾

Как отвечать: Назовите по существу: параметризованные запросы против SQL-инъекций, валидация входных данных, CORS и CSRF-токены, rate limiting и хранение секретов вне кода.

Пример сильного ответа

Защита для меня — это набор слоёв, а не одна библиотека. На входе — валидация и нормализация данных, параметризованные запросы, чтобы исключить инъекции, и экранирование вывода. Дальше — аутентификация и авторизация с проверкой прав на каждом эндпоинте, ограничение частоты запросов, защита от подбора. Секреты храню только в защищённом хранилище, не в коде и не в репозитории. Обязательно сканирование зависимостей и образов в CI. Такой подход с регулярной проверкой по списку типовых рисков дал результат: число инцидентов, связанных с безопасностью, сократилось примерно на 70 процентов за год, а нагрузочные тесты и пентесты не выявили критичных находок.

Вопрос 17Senior

Как вы обеспечиваете наблюдаемость сервиса в проде?

Как отвечать ▾

Как отвечать: Пройдите по трём столпам: структурированные логи с correlation id, метрики RED/USE и алерты по SLO, распределённый трейсинг (OpenTelemetry, Jaeger) — и пример, как это помогло найти проблему.

Пример сильного ответа

Наблюдаемость строю на трёх опорах: метрики, логи и трассировки. Метрики — по каждому сервису: задержка, доля ошибок, трафик и насыщение ресурсов; алерты настраиваю на SLO, а не на каждый всплеск, чтобы дежурный не тонул в шуме. Логи — структурированные, с идентификатором запроса, чтобы связать всю цепочку вызовов. Трассировки — сквозные, по общему стандарту, чтобы видеть, где именно теряется время. Плюс дежурные дашборды и понятный плейбук на типовые сбои. Результат: среднее время восстановления сократилось с нескольких часов до получаса, а количество ложных срабатываний алертов упало примерно на 60 процентов.

Бесплатно, без регистрации

Мини-собеседование: Backend-разработчик

Прочитать вопросы мало — на интервью придётся говорить. Ответьте на один вопрос своими словами, 2–3 предложений хватит, и ИИ разберёт ответ по четырём критериям: структура, конкретика, релевантность, убедительность.

123
Технический вопросДля всех уровней

Запрос к базе стал выполняться медленно после роста таблицы. Как вы будете искать причину?

2–3 предложения достаточно · ещё 20 симв.

Кейс

Вопрос 1Senior

Кейс: платёж списался, но заказ не создался, потому что второй сервис был недоступен. Как проектировать такие процессы?

Как отвечать ▾

Как отвечать: Расскажите про паттерн Saga и outbox, компенсирующие операции, идемпотентные ключи и почему распределённая транзакция между сервисами — плохая идея.

Пример сильного ответа

Ключевая идея — не пытаться сделать обе операции атомарными напрямую, а разорвать их событием. Сервис платежей после успешного списания пишет событие в таблицу-исходящий ящик в той же транзакции, что и статус платежа, а отдельный воркер публикует его в очередь. Сервис заказов читает событие идемпотентно, по ключу идемпотентности, поэтому повторная доставка не создаёт дубль. Если сервис недоступен — ретраи с растущей задержкой и отложенная очередь. Если заказ так и не создался, запускается компенсация: возврат средств. Плюс регулярная сверка платежей и заказов. Такой подход убрал почти все расхождения: доля несогласованных операций снизилась до единичных случаев.

Вопрос 2Middle

Кейс: сервис деградирует под пиковой нагрузкой — растёт latency и ошибки 5xx. Ваш план действий?

Как отвечать ▾

Как отвечать: Опишите порядок: метрики и трейсинг для локализации узкого места, пулы соединений и таймауты, circuit breaker и backpressure, горизонтальное масштабирование — и пост-инцидентный разбор.

Пример сильного ответа

Сначала стабилизирую, потом ищу причину. Смотрю дашборды: ошибки, задержка, насыщение пулов соединений, состояние базы и внешних зависимостей. Первым делом проверяю, не совпало ли это с релизом, — тогда откат. Дальше включаю защитные механизмы: ограничение частоты, размыкатель цепи на деградирующих зависимостях, сброс нагрузки и приоритизацию критичных запросов. Если узкое место в приложении — масштабирую горизонтально, если в базе — снимаю тяжёлые запросы и добавляю кэш. Держу связь с командой и стейкхолдерами. В похожем случае время ответа снизилось примерно с двух секунд до трёхсот миллисекунд, а ошибки вернулись к обычному уровню за пятнадцать минут. После — разбор без поиска виноватых.

Эти вопросы задают всем. По вашему резюме спросят другое. Перерывы, переходы, цифры — покажем 5 вопросов, которые зададут именно вам.

Вопросы по моему резюме

Поведенческий вопрос

Вопрос 1Для всех уровней

Расскажите о самом сложном техническом решении, которое вы принимали.

Как отвечать ▾

Как отвечать: Ответьте по STAR: контекст и ограничения, рассмотренные альтернативы, почему выбрали именно это решение и чем подтвердили его правильность в проде.

Пример сильного ответа

Самым сложным было решение вынести горячий сценарий оплаты из монолита в отдельный сервис со своей базой. Риск высокий: монолит обслуживал много трафика, а связность мешала менять что-то безопасно. Я отвечаю за выбор подхода: событийная интеграция с исходящим ящиком, чтобы не потерять данные при переключении, и поэтапный переезд с теневым запуском — новый сервис обрабатывал копию трафика, а результаты сравнивались. Сначала десять процентов трафика, потом половина, потом всё. В итоге задержка на девяносто девятом процентиле упала примерно на 60 процентов, а релизы стали выходить ежедневно вместо раза в неделю.

Вопрос 2Для всех уровней

Приведите пример, когда вы допустили ошибку, которая дошла до прода. Что сделали?

Как отвечать ▾

Как отвечать: Покажите честность и зрелость: как обнаружили и откатили, постмортем без поиска виноватых, какие тесты или процессы добавили, чтобы не повторилось.

Пример сильного ответа

В моей практике был показательный случай: после оптимизации запроса часть заказов перестала попадать в отчёт, расхождение около трёх процентов за сутки. Причина — изменение условия фильтрации, а интеграционный тест на этот сценарий отсутствовал. Первым делом оцениваю масштаб: сравниваю логи, считаю потерянные записи, вместе с дежурным запускаю откат релиза. Дальше разбор без поиска виноватых: добавляю тест на граничный случай, обязательную проверку метрик после выката и предупреждение в мониторинге. Инцидент закрылся за несколько часов, похожие расхождения больше не повторялись.

Вопрос 3Middle

Как вы реагируете, когда тимлид или ревьюер не согласен с вашим техническим решением?

Как отвечать ▾

Как отвечать: Опишите аргументацию данными и прототипом, готовность признать сильные контраргументы и умение принять командное решение без обид.

Пример сильного ответа

К разногласиям отношусь спокойно: обычно это сигнал, что в решении есть риск, не замеченный мной. Предлагаю перевести спор в факты: описываю требования и ограничения по нагрузке, сравниваю варианты с плюсами и минусами, иногда собираю быстрый прототип на пару дней, чтобы проверить подход на реальных данных. Если аргументы ревьюера сильнее, принимаю решение и поддерживаю его без обид. Если решение остаётся за мной, беру ответственность за результат. За последний проект так закрыли четыре спорных архитектурных обсуждения без эскалаций и задержек по срокам.

Вопрос 4Для всех уровней

Как вы расставляете приоритеты, когда продукт просит фичу, а вы видите накопленный технический долг?

Как отвечать ▾

Как отвечать: Покажите умение говорить с бизнесом на его языке: оцените риски долга в сроках и инцидентах, предложите выделенную долю спринта и договоритесь о компромиссе.

Пример сильного ответа

Обычно смотрю на риск и стоимость. Сначала оцениваю, что даст фича бизнесу и как быстро, а какой долг реально мешает: рост времени выката, частота инцидентов, скорость онбординга. Дальше предлагаю продукту вариант, где часть долга закрывается попутно: при доработке модуля выделяю около пятой части времени на тесты и рефакторинг проблемного участка. Если долг критичный, показываю цифры: сколько часов в месяц уходит на ручные обходы. Так за полгода время сборки и выката сократилось примерно на треть без срыва планов продукта.

Вопрос 5Middle

Приходилось ли вам разбираться в чужом коде без документации и автора рядом? Как действовали?

Как отвечать ▾

Как отвечать: Опишите подход: чтение тестов и логов, воспроизведение поведения, постепенная документация находок и осторожные изменения с тестовым покрытием.

Пример сильного ответа

Да, такая ситуация мне приходилась. Досталась кодовая база сервиса от подрядчика: ни документации, ни автора рядом, только репозиторий и логи. Моя задача была — разобраться и закрыть три инцидента. План такой: сначала восстанавливаю карту зависимостей и точки входа, потом читаю тесты — они часто честнее комментариев. Дальше запускаю сервис локально и смотрю реальные вызовы. По каждому непонятному модулю пишу заметки и превращаю их в README и схемы. Через две недели удалось разобраться, время на доработки сократилось примерно на 30%, а команда получила документацию.

Вопрос 6Для всех уровней

Почему вы хотите работать backend-разработчиком именно у нас?

Как отвечать ▾

Как отвечать: Изучите компанию заранее: свяжите ответ с её стеком, масштабом нагрузки и продуктом, назовите, что готовы привнести из своего опыта, избегая общих фраз про развитие.

Пример сильного ответа

Мне интересна задача с реальной нагрузкой и понятными метриками, где backend влияет на продукт напрямую. Судя по описанию вакансии и общению на этапах, здесь есть зрелые процессы: код-ревью, тесты, мониторинг, обсуждение архитектуры до реализации, а не после. Такой формат совпадает с тем, как мне комфортно работать: мне важно отвечать за свои сервисы целиком, от схемы данных до алертов. Мой опыт — сервисы с десятками тысяч запросов в секунду в пике и команда из шести разработчиков. Хочу расти в сторону проектирования и надёжности.

Что спросят именно вас?

Типовые задают всем. По резюме спросят другое — «В резюме перерыв с 2024 года, чем вы занимались?». Покажем 5 таких вопросов бесплатно, а готовые ответы на них — под вашу вакансию и резюме — за 99 ₽.

Поделиться подборкой:TGVKWA

📈 Готовитесь к собеседованию? Получайте свежие вакансии Backend-разработчик на почту или в Telegram — и откликайтесь, пока подготовка свежая.

бесплатно
PRO

Проверьте себя: первый разбор — бесплатно

Прочитать вопросы — это старт. Настоящая подготовка — проговорить ответ и услышать, что с ним не так. Первый разбор ИИ бесплатный и без регистрации, прямо на этой странице. Полная симуляция — в PRO или разово, без подписки.

  • ✓ Реальные вопросы по вашей роли
  • ✓ Разбор ответов с ИИ
  • ✓ Оценка и советы

Как пройти собеседование на позицию Backend-разработчика

1. HR-этап

Подготовьте рассказ о себе на 1–2 минуты: последнее место работы, главный результат и причина интереса именно к этой вакансии. Для роли «Backend-разработчик» HR чаще всего проверяет мотивацию и зарплатные ожидания — заранее сверьте их с медианой по рынку — 205 000 ₽ (блок «Зарплата» ниже на этой странице).

2. Профессиональный этап

Основная часть собеседования — вопросы по ключевым навыкам: SQL и проектирование БД, Транзакции и изоляция, REST и gRPC API. Разберите категории «Базы данных и SQL» и «Архитектура: API, кэш, очереди, микросервисы» из подборки выше и подготовьте по одному примеру из своего опыта на каждую — с цифрами и результатом.

3. Финальный этап

В финале обсуждают условия, график и задачи на испытательный срок. Подготовьте 2–3 вопроса работодателю о команде, метриках успеха и ближайших проектах — кандидаты, которые задают такие вопросы, запоминаются лучше.

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

  1. 1Повторите SQL на практике: индексы, планы запросов через EXPLAIN, транзакции и уровни изоляции — с примерами аномалий.
  2. 2Освежите архитектурные паттерны: кэширование, очереди и идемпотентность, Saga и outbox, компромиссы микросервисов против монолита.
  3. 3Подготовьте рассказ о 2–3 своих проектах: стек, нагрузка, узкие места и конкретные решения, которые принимали лично вы.
  4. 4Разберите по STAR один инцидент из прода и одну свою ошибку: интервьюер почти наверняка спросит про оба.
  5. 5Пройдите пробное интервью в ИИ-тренажёре Rabota-Help и потренируйтесь отвечать на кейсы структурированно и без пауз.

Частые ошибки

  • Отвечать на вопрос о медленном запросе «добавлю индекс», не упомянув анализ плана выполнения и статистику.
  • Хвалиться микросервисами, но не уметь объяснить, как обеспечить согласованность данных между ними.
  • Говорить про кэш и очереди без слов про инвалидацию, дубликаты и идемпотентность.
  • Рассказывать о проектах «мы сделали», не выделяя личный вклад и собственные технические решения.
  • Не задать вопросов о стеке, нагрузке, процессах код-ревью и дежурствах в команде работодателя.
Практика интервью

От вопросов — к тренировке интервью

Прочитайте вопросы, выберите 5–7 самых сложных и пройдите пробное интервью. ИИ-интервьюер поможет структурировать ответы, проверить аргументацию и подготовиться к реальному разговору.

Открыть тренажёр для роли Backend-разработчик
Зарплата

Зарплата Backend-разработчик в России

По данным 119 вакансий

Полная статистика →

P25 (ниже среднего)

128 000 ₽

Медиана

205 000 ₽

50% вакансий

P75 (выше среднего)

230 000 ₽

Медиана по уровню опыта

Без опыта

128 000 ₽

1–3 года

191 000 ₽

3–6 лет

224 000 ₽

Вопрос с каждого собеседования

«Какие у вас зарплатные ожидания?» — что ответить на собеседовании Backend-разработчика

Называйте диапазон: от типичной зарплаты для вашего опыта до суммы на 10–15 % выше, но не выше уровня, который платит лишь четверть работодателей. Суммы на руки по России; в Москве и Санкт-Петербурге обычно выше.

Называйте 205 000 ₽ – 230 000 ₽ на руки.

Пример ответа рекрутеру — для типичной вакансии по России

«Рассматриваю предложения от 205 до 230 тысяч на руки — итоговая сумма зависит от задач и состава компенсации».

В поле «желаемая зарплата» — одна цифра, нижняя граница диапазона: 205 000 ₽. До вычета налога это ≈ 235 000 ₽.

Посчитать для вашего города и опыта

Покажем вашу сумму, готовые фразы на «сколько получаете сейчас» и «у нас бюджет до…», а если уже есть предложение — сравним его с рынком.

Навыки

Востребованные навыки Backend-разработчика

Частота упоминания в вакансиях работодателей

Все навыки →
1
PostgreSQL6%
↑
2
API6%
↓
3
Docker5%
↓
4
Git5%
↑
5
Python5%
↓
6
REST4%
↑
7
Redis4%
↓
8
PHP3%
↑

Вы готовитесь к собеседованию. А работодатели уже ищут Backend-разработчика.

Создайте анонимный публичный профиль — его найдут в Яндексе и Google, и предложения придут сами. Контакты скрыты, пока вы не решите иначе.

Работодатели уже ищут: Backend-разработчик · от 205 000 ₽

Создать анонимный профиль — бесплатно

Пройдите мини-собеседование, добавьте резюме на экране результата — профиль создадим за минуту, с вашего согласия.

Вы нанимаете Backend-разработчика? Профили кандидатов и подбор для работодателей →

Вакансии

Свежие вакансии Backend-разработчика: 849

Откройте подходящие предложения и откликнитесь после подготовки к собеседованию.

Смотреть вакансии →

Откликаетесь на вакансии Backend-разработчика? Приложите сопроводительное письмо

Пример письма для этой профессии и генератор, который напишет письмо под текст вакансии. Первое письмо — бесплатно.