Вопросы на собеседовании бэкенд-разработчика: что реально спрашивают

Автор: Aaron Cao · Обновлено

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

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

Что охватывают собеседования бэкенд-разработчиков?

В описаниях бэкенд-вакансий перечислен десяток технологий, и сложно понять, что из этого реально будут проверять на собеседовании. В этом разделе собраны темы вопросов, которые повторяются в разных раундах бэкенд-собеседований. Стек меняется от компании к компании, но базовые темы остаются стабильными.

  • Проектирование API. REST против RPC, версионирование, пагинация, ответы об ошибках, аутентификация и ключи идемпотентности.
  • Базы данных и моделирование данных. Выбор между реляционным и документным хранилищем, индексы, join'ы, транзакции, уровни изоляции, запросы N+1, и как безопасно проводить миграции схемы.
  • Кэширование и производительность. Инвалидация кэша, срок действия, cache stampede, и как вы будете профилировать медленный эндпоинт.
  • Конкурентность и надёжность. Гонки состояний, блокировки, очереди, таймауты и повторные попытки с backoff.
  • Проектирование систем. Задачи вроде сокращателя URL, лимитера частоты запросов или сервиса уведомлений.
  • Код. Структуры данных и практическая задача, обычно на языке по вашему выбору.

Раунды по конкретному языку или фреймворку копают глубже в детали; хаб банков вопросов собирает наборы для Go, Java, Spring Boot, микросервисов и многого другого.

Какие вопросы о базах данных и API встречаются чаще всего?

Эти вопросы в том или ином виде появляются на большинстве бэкенд-собеседований. Потренируйтесь отвечать на каждый вслух менее чем за две минуты:

  • Что происходит, когда вы добавляете индекс к столбцу, и когда индекс, наоборот, вредит?
  • В чём разница между уровнями изоляции read committed и serializable, и когда стоит платить за более строгий уровень?
  • Как вы найдёте и исправите запрос N+1 в ORM?
  • Как сделать эндпоинт для платежей безопасным для повторных запросов со стороны клиента?
  • Как вы будете пагинировать большой набор результатов, который меняется, пока пользователь листает?
  • Когда вы выберете документное хранилище вместо реляционной базы данных?
  • Как вы выкатите переименование столбца без простоя?

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

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

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

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

Перед любым бэкенд-собеседованием подготовьте две истории из продакшена: баг, который вы отследили до конца, и проектное решение, которое сейчас вы бы приняли иначе.

Как тренироваться, и где пригодится ассистент в реальном времени?

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

На самом видеособеседовании SubcueAI транскрибирует речь интервьюера и составляет структурированные тезисы ответа в локальном оверлее — либо в десктопном приложении на macOS или Windows (Zoom, Google Meet, Microsoft Teams), либо в боковой панели браузерного расширения для звонков во вкладке Chrome или Edge. Ни один бот не подключается к звонку. Это наиболее полезно на разговорных раундах, таких как обсуждение дизайна и вопросы об опыте. Раунды кода с общим экраном, тесты под наблюдением, записанные односторонние интервью и устройства, управляемые компанией, выходят за рамки того, что можно безопасно охватить, и всё, что вы показываете на экране, видно собеседнику. Настройка описана на странице tutorial.

Частые вопросы

Какие вопросы обычно задают на собеседовании бэкенд-разработчика?

Вопросы о проектировании API, индексах и транзакциях баз данных, кэшировании, конкурентности и повторных попытках, задача по проектированию систем вроде лимитера частоты запросов или сокращателя URL, и обычно ещё практическое задание по коду.

Включают ли младшие бэкенд-собеседования проектирование систем?

Часто в облегчённом виде. Junior-кандидатам скорее дадут небольшую задачу по дизайну, например спроектировать API для одной функции, чем полноценную распределённую систему. Процессы для middle и senior обычно включают отдельный раунд по проектированию.

Какой язык использовать на раунде кода для бэкенда?

Тот, которым вы владеете лучше всего, если только вакансия не требует конкретного языка. Интервьюеры оценивают решение задач и ясность мышления, а борьба с незнакомым синтаксисом отнимает время, нужное для объяснения.

Как подготовиться к бэкенд-собеседованию за короткое время?

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

Похожие вопросы

← Подробнее: Вопросы на собеседовании по роли и теме