Вопросы и ответы для собеседования Junior SRE

Milad Bonakdar
Автор
Подготовьтесь к собеседованию Junior SRE с практическими вопросами по SLO, бюджету ошибок, оповещениям, инцидентам, Linux, автоматизации и Kubernetes.
Что проверяют на собеседовании Junior SRE
На собеседовании Junior SRE обычно смотрят, умеете ли вы идти от влияния на пользователей к сигналам системы: SLO, бюджету ошибок, оповещениям, инцидентам, Linux-сигналам, автоматизации, контейнерам и базовым операциям Kubernetes. Не нужно звучать как senior-инженер. Важно показать, что вы расследуете проблемы последовательно, ясно коммуницируете во время инцидента и автоматизируете повторяющуюся операционную работу без сокрытия рисков.
Используйте эти вопросы, чтобы подготовить короткие ответы и связать каждый ответ с реальным примером из проектов, учебных стендов, стажировки или наблюдения за on-call.
Основы SRE
1. Что такое Site Reliability Engineering и чем она отличается от DevOps?
Ответ: SRE — это подход Google к надежной эксплуатации производственных систем в масштабе.
Основные принципы:
- Рассматривать операции как программную проблему
- Максимум 50% времени на операционную работу (тяжелый труд)
- Бюджеты ошибок для балансировки надежности и скорости
- Беспристрастные посмертные анализы
- Постепенные развертывания и автоматизированные откаты
SRE против DevOps:
SRE реализует принципы DevOps с помощью конкретных практик и метрик.
Распространенность: Очень часто
Сложность: Легко
2. Объясните SLI, SLO и бюджеты ошибок.
Ответ: Это основные концепции SRE для измерения и управления надежностью:
SLI (Service Level Indicator):
- Количественная мера уровня обслуживания
- Примеры: Задержка, доступность, частота ошибок
SLO (Service Level Objective):
- Целевое значение для SLI
- Пример: "99,9% запросов выполняются успешно"
Бюджет ошибок:
- Допустимая частота отказов (100% - SLO)
- Используется для балансировки надежности и скорости разработки
Распространенность: Очень часто
Сложность: Средняя
3. Что такое тяжелый труд и как его уменьшить?
Ответ: Тяжелый труд — это повторяющаяся, ручная операционная работа, которая:
- Является ручной (требует действий человека)
- Является повторяющейся
- Может быть автоматизирована
- Не имеет долговременной ценности
- Растет линейно с ростом сервиса
Примеры тяжелого труда:
- Ручной перезапуск сервисов
- Копирование файлов между серверами
- Ручное масштабирование ресурсов
- Повторяющиеся ответы на тикеты
Стратегии уменьшения тяжелого труда:
Цель SRE: Поддерживать тяжелый труд ниже 50% времени, автоматизировать остальное.
Распространенность: Очень часто
Сложность: Легко-Средняя
Мониторинг и наблюдаемость
4. В чем разница между мониторингом и наблюдаемостью?
Ответ: Мониторинг: Сбор предопределенных метрик и оповещений
- Известные-неизвестные: Вы знаете, за чем следить
- Панели мониторинга, оповещения, метрики
- Примеры: ЦП, память, частота запросов
Наблюдаемость: Понимание состояния системы по выходным данным
- Неизвестные-неизвестные: Отладка проблем, которые вы не предвидели
- Объединенные журналы, метрики, трассировки
- Можно ответить на произвольные вопросы
Три столпа наблюдаемости:
- Метрики: Агрегированные числа (ЦП, задержка)
- Журналы: Дискретные события
- Трассировки: Поток запросов через систему
Пример: Prometheus + Grafana + Loki
Распространенность: Часто
Сложность: Средняя
5. Как настроить эффективные оповещения?
Ответ: Хорошие оповещения действенны, значимы и не вызывают усталости.
Рекомендации по оповещениям:
1. Оповещать о симптомах, а не о причинах:
2. Включить ссылки на runbook:
3. Использовать соответствующие уровни серьезности:
4. Избегать усталости от оповещений:
- Использовать
for:для избежания дребезжания - Группировать связанные оповещения
- Устанавливать соответствующие пороги
- Регулярно пересматривать и настраивать
Распространенность: Очень часто
Сложность: Средняя
Реагирование на инциденты
6. Опишите свой процесс реагирования на инциденты.
Ответ: Структурированное реагирование на инциденты минимизирует воздействие и время восстановления:
Этапы реагирования на инциденты:
1. Обнаружение:
- Срабатывает оповещение или пользователь сообщает о проблеме
- Подтверждаем оповещение
- Создаем канал инцидента
2. Триаж:
3. Смягчение:
4. Разрешение:
- Устранение первопричины
- Проверка возврата метрик в норму
- Мониторинг на предмет повторного возникновения
5. Посмертный анализ (Беспристрастный):
Распространенность: Очень часто
Сложность: Средняя
7. Как вы устраняете неполадки сервиса, испытывающего высокую задержку?
Ответ: Систематический подход к отладке:
Общие причины:
- Медленные запросы к базе данных
- Тайм-ауты внешних API
- Нехватка памяти (паузы GC)
- Сетевые проблемы
- Исчерпание ресурсов
- Неэффективные пути кода
Распространенность: Очень часто
Сложность: Средняя
Автоматизация и скрипты
8. Напишите скрипт для проверки работоспособности сервиса и его перезапуска при необходимости.
Ответ: Скрипт проверки работоспособности и автоматического восстановления:
Распространенность: Часто
Сложность: Средняя
Практики обеспечения надежности
9. Что такое runbook и почему он важен?
Ответ: Runbook — это документированная процедура для обработки операционных задач и инцидентов.
Структура Runbook:
2. Определяем узкое место
- Проверяем время запроса к базе данных
- Проверяем вызовы внешних API
- Проверяем частоту попадания в кеш
- Просматриваем недавние развертывания
3. Проверяем зависимости
Этапы смягчения
Быстрые исправления (< 5 минут)
- Масштабируем экземпляры приложения
- Временно увеличиваем TTL кеша
Если проблема не исчезнет
- Откатываем недавнее развертывание
- Включаем ограничение скорости
Разрешение
- Устраняем первопричину (медленный запрос, неэффективный код)
- Развертываем исправление
- Мониторим в течение 30 минут
- Масштабируем обратно к нормальной емкости
Эскалация
Если не удается разрешить в течение 30 минут:
- Эскалируем на: @backend-team
- Канал Slack: #incidents
- Дежурный: Используйте политику эскалации PagerDuty
Связанные
2. Circuit Breaker:
3. Timeouts and Retries:
Распространенность: Часто
Сложность: Средняя
Основы контейнеризации
11. Что такое Docker и чем он отличается от виртуальных машин?
Ответ: Docker — это платформа контейнеризации, которая упаковывает приложения с их зависимостями.
Контейнеры против виртуальных машин:
Основные различия:
Основы Docker:
Пример Dockerfile:
Сборка и запуск:
Docker Compose (Multi-container):
Запускаем с Docker Compose:
Рекомендации:
- Используйте официальные базовые образы
- Минимизируйте количество слоев
- Не запускайте от имени root
- Используйте .dockerignore
- Правильно помечайте образы тегами
- Сканируйте на наличие уязвимостей
Распространенность: Очень часто
Сложность: Легко-Средняя
Контроль версий и развертывание
12. Объясните рабочие процессы Git и как вы обрабатываете развертывания.
Ответ: Git необходим для контроля версий и автоматизации развертывания.
Общий рабочий процесс Git:
Основные команды Git:
Стратегия ветвления:
1. Gitflow:
main: Код, готовый к производствуdevelop: Ветка интеграцииfeature/*: Новые фичиrelease/*: Подготовка релизаhotfix/*: Срочные исправления
2. Trunk-Based Development:
Итог
Готовьтесь к собеседованию Junior SRE через практику SLO, оповещений, реагирования на инциденты, Linux-траблшутинга и безопасной автоматизации. Хороший ответ не просто перечисляет команды: он начинается с влияния на пользователей, проверяет надежные сигналы, снижает риск и фиксирует выводы для команды.


