fa
Feedback
DevOps | Вопросы собесов

DevOps | Вопросы собесов

رفتن به کانال در Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

نمایش بیشتر
5 547
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+107 روز
+4530 روز
آرشیو پست ها
Нужны актуальные вопросы с собеседований ? DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям.
Нужны актуальные вопросы с собеседований ? DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям. 🔊Обзоры собеседований c вилками на позиции: 🔵DevOps инженеров (Junior, Middle, Senior). 🔵С комментариями автора, как человека, который активно собеседует кандидатов. 🔊В ближайшее время: 🔵Записи реальных собеседований (не моки и открытые собеседования). 🔵Гайды и рекомендации по обходу частых ошибок при выступлении на техническом интервью. ➡️ Подписаться

🤔 Где runner берёт код? GitLab Runner скачивает код из репозитория, к которому привязан pipeline. Он использует Git clone или fetch, чтобы получить актуальную версию кода, соответствующую коммиту или ветке, где был инициирован pipeline. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое Grafana? Grafana — это инструмент для визуализации, мониторинга и анализа метрик. Он позволяет строить графики, панели (dashboards) и оповещения на основе данных из разных источников. 🚩Основные возможности Grafana Дашборды – красивые панели с графиками и таблицами Много источников данных – Prometheus, MySQL, Elasticsearch, AWS CloudWatch Настраиваемые алерты – уведомления в Slack, Telegram, Email Аутентификация – поддержка LDAP, OAuth, GitHub Плагины и расширения – добавление новых панелей и источников данных 🚩Как работает Grafana? Grafana подключается к источнику данных (например, Prometheus) Пользователь создает дашборды с графиками, таблицами и метриками Настраиваются алерты, которые отправляют уведомления при сбоях 🚩Пример развертывания Grafana с Prometheus Запуск Grafana в Docker
docker run -d -p 3000:3000 --name=grafana grafana/grafana
Пример запроса в PromQL
node_cpu_seconds_total{mode="idle"}
🚩Как настроить алерты? Например, если загрузка CPU выше 80%, отправлять сообщение в Telegram. В Grafana → "Alerting" → "Alert Rules" → "Create Alert Rule" Записываем условие:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
🚩Где используется Grafana? Мониторинг серверов (CPU, RAM, диски, сеть) DevOps (Prometheus + Grafana) для Kubernetes, Docker Бизнес-аналитика (данные из MySQL, Google Analytics) IoT – графики с датчиков и устройств Ставь 👍 и забирай 📚 Базу знаний

🤔 Как определить ресурс, который необходим одной node? - Собрать usage-метрики: Через kubectl top node, Prometheus или Cloud Monitoring. - Сравнить с pod requests: Если нода забита, а pod’ы с маленькими requests — нужно увеличивать. - Просмотреть узкие места: CPU, RAM, IO, дисковое пространство — что конкретно лимитирует. - Использовать нагрузочные тесты: Прогнать типичную нагрузку и посмотреть, как ведут себя узлы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что произойдет если под не пройдет readiness пробу? Если под (Pod) в Kubernetes не пройдет readiness-пробу (readiness probe), он будет считаться не готовым для обработки запросов. 🚩Что делает readiness-проба? Readiness-проба используется для определения того, готов ли контейнер в поде обрабатывать входящие запросы. Если проба не проходит, Kubernetes исключает этот под из списка доступных для обслуживания запросов (например, через Service). 🚩Основные последствия 🟠Под не будет получать трафик через Service Kubernetes автоматически исключает под из группы Endpoints для соответствующего сервиса. Другие компоненты системы, обращающиеся к сервису, не будут направлять запросы в этот под. 🟠Под продолжает работать Под не будет удален или перезапущен. Kubernetes продолжит проверять его состояние readiness-пробой до тех пор, пока он не станет готовым. 🟠Нет влияния на liveness-пробу Если readiness-проба не проходит, это не влияет на liveness-пробу. Под будет работать, пока не нарушена его "жизнеспособность". 🟠Аварийное поведение приложения может быть скрыто Если под зависнет или будет не в состоянии обработать запросы, но при этом не нарушит liveness-пробу, он останется запущенным, но не будет получать трафик. 🚩Как это выглядит на практике? Пример readiness-пробы
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: my-container
    image: nginx
    readinessProbe:
      httpGet:
        path: /
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10
🚩Сценарий 🟠На старте После создания пода Kubernetes ждет initialDelaySeconds (5 секунд) перед выполнением первой проверки. Если / не отвечает на HTTP-запрос, под считается не готовым. 🟠Если проба продолжает проваливаться Kubernetes исключает под из группы доступных эндпоинтов. Под остается запущенным, и проба выполняется каждые periodSeconds (10 секунд), пока под не станет готовым. 🚩Что произойдет с трафиком? Если под — единственный в сервисе: Запросы к сервису вернут ошибку (например, 503 Service Unavailable), так как ни один под не готов. Если подов несколько: Трафик перенаправляется на другие поды, готовые обрабатывать запросы. 🚩Как это помогает? 🟠Обеспечивает стабильность приложения Под начинает обрабатывать трафик только после полной инициализации. 🟠Улучшает отказоустойчивость В случае проблем с подом система перенаправляет запросы на другие экземпляры. 🟠Поддерживает обновления без простоя Во время обновления подов через Deployment новые поды добавляются в пул доступных только после успешного прохождения readiness-проб. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что происходит после того, как GitLab скачал код? После загрузки кода: - Runner выполняет шаги, указанные в .gitlab-ci.yml; - запускаются скрипты, сборка, тестирование, деплой; - могут использоваться Docker-образы, артефакты, кэш; - GitLab отслеживает логи и статусы выполнения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть лучшие практики в использовании инструкции add и copy? ADD и COPY — это инструкции Dockerfile, которые копируют файлы в контейнер. Их использование влияет на размер образа, безопасность и производительность сборки. 🚩Лучшие практики по использованию `COPY` и `ADD` 🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы Плохо (избыточное использование ADD)
ADD app.tar.gz /app/
Хорошо (явное распаковывание в RUN)
COPY app.tar.gz /tmp/
RUN tar -xzf /tmp/app.tar.gz -C /app && rm /tmp/app.tar.gz
🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа Плохо (копируем всё без исключений)
COPY . /app
Хорошо (копируем только нужные файлы)
COPY src/ /app/src/
COPY requirements.txt /app/
Добавьте .dockerignore
.git
node_modules
__pycache__
*.log
🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование Плохо (изменение кода приводит к пересборке зависимостей)**
COPY . /app
RUN pip install -r /app/requirements.txt
Хорошо (сначала зависимости, потом код)
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt

COPY src/ /app/src/
🟠Не используйте `ADD` для загрузки файлов из интернета Плохо (ADD загружает файл, но не кэшируется)
ADD https://example.com/file.tar.gz /tmp/
🟠Хорошо (используем RUN curl + COPY)
RUN curl -L -o /tmp/file.tar.gz https://example.com/file.tar.gz
COPY file.tar.gz /app/
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие сущности указывают в манифесте Terraform? - provider - resource - variable - locals - output - module - data (чтение внешних сущностей) Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В каких случаях удобно использовать kubernetes, а в каких docker-compose? Оба инструмента управляют контейнерами, но предназначены для разных сценариев. 🚩Когда использовать Docker Compose? Docker Compose удобен для локальной разработки и небольших проектов. Разворачиваете приложение на одном сервере. Нужно быстро поднять несколько сервисов (БД, кэш, бекенд, фронт). Разработка ведется в команде, и среда должна быть одинаковой. Нет необходимости в сложном оркестрационном механизме (авто-масштабирование, балансировка нагрузки). Файл docker-compose.yml для запуска бэкенда и базы данных локально:
version: '3'
services:
  app:
    image: my-backend:latest
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
Команда запуска:
docker-compose up -d
🚩Когда использовать Kubernetes? Kubernetes удобен для продакшн-окружений, облаков и сложных приложений. Нужно масштабирование (автоматическое увеличение/уменьшение количества контейнеров). Требуется автоисправление (если контейнер падает, он перезапускается). Используется балансировка нагрузки (Kubernetes распределяет трафик между подами). Нужна развертка в кластере (несколько машин, облако). Требуется обновление без простоя (rolling updates).
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-backend:latest
        ports:
        - containerPort: 5000
Разворачиваем в Kubernetes:
kubectl apply -f my-app.yaml
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какая первая строчка в bash скрипте? Это строка с указанием интерпретатора, чаще всего используется bash. Она обязательна, чтобы скрипт корректно исполнился в нужной среде. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем разница Deployment и DaemonSet? Deployment и DaemonSet являются двумя типами контроллеров, которые управляют развертыванием и обеспечением жизненного цикла подов (групп контейнеров). Они оба играют важные роли, но используются для разных целей и сценариев. 🚩Deployment Это контроллер, который обеспечивает декларативное обновление подов и ReplicaSets (другой тип контроллера, который управляет одновременным запуском нескольких экземпляров одного и того же пода). Deployment поддерживает непрерывное развертывание, откат к предыдущим версиям, а также масштабирование подов. 🟠Масштабирование Вы можете увеличивать или уменьшать количество подов в зависимости от нужд. 🟠Обновления Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), которое помогает минимизировать простои при обновлении приложения. 🟠Самовосстановление Автоматически перезапускает поды, которые перестали работать, находятся в ошибочном состоянии или не отвечают.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
🚩DaemonSet Это контроллер, который гарантирует, что на каждом узле кластера Kubernetes запущен экземпляр заданного пода. Когда добавляется новый узел, на нем автоматически запускается под, управляемый DaemonSet, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле. 🟠Гарантия запуска Убедитесь, что каждый узел кластера запускает копию определённого пода. 🟠Автоматическое размещение Когда добавляются новые узлы, на них автоматически размещаются необходимые поды. 🟠Службы уровня узла Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие.
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      containers:
      - name: fluentd-elasticsearch
        image: fluent/fluentd:v1.0
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
Ставь 👍 и забирай 📚 Базу знаний

🚀 Закрывается набор на курс «DevOps-инженер: практики и инструменты» в OTUS Если вы хотите наконец-то выйти на уверенный mid
🚀 Закрывается набор на курс «DevOps-инженер: практики и инструменты» в OTUS Если вы хотите наконец-то выйти на уверенный middle/senior уровень в DevOps и перестать бояться продакшена — сейчас самый последний момент. Группа стартует 29 января, набор закрывается в ближайшие дни. Успейте пройти вступительное тестирование, подтвердить уровень и забронировать место по спеццене 🎯 Что даёт курс: - Полный production-ready стек 2025–2026: Docker → Kubernetes + Helm → Terraform + Ansible → GitLab CI/CD → Prometheus + Grafana + Loki + Jaeger + eBPF - Реальные практики, которые используют в Сбере, IBM, Касперском: GitOps, progressive delivery, IaC, полный цикл наблюдаемости, отказоустойчивость - Большой финальный проект с защитой: с нуля разворачиваете отказоустойчивое приложение в Yandex Cloud (бесплатно для студентов) и получаете детальный разбор от экспертов - Наставники — действующие DevOps из топовых компаний, которые каждый день решают те же задачи, что и вы - Удобный формат: онлайн-занятия по вт/чт в 20:00, записи навсегда, активный чат группы, код-ревью на каждое ДЗ 👉Пройдите тест прямо сейчас и забронируйте место: https://otus.pw/JFUO/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Мечтаешь стать дизайнером? Начни с dsgn sense — мультисенсорной олимпиады по дизайну от Школы дизайна Центрального университе
Мечтаешь стать дизайнером? Начни с dsgn sense — мультисенсорной олимпиады по дизайну от Школы дизайна Центрального университета для учеников 10-11-х классов. Познакомься с профессиями графического, продуктового и промышленного дизайнера! Реши кейс от компаний-партнеров и создай проект, в котором зрение, слух, осязание, вкус и обоняние станут основой уникального дизайн-решения. Призеры и победители получат: — Два проекта в портфолио. — Финал в наукограде Дубне с бесплатным проживанием, питанием и насыщенной программой. — Крутой мерч и призы от компаний. — Шанс выиграть грант до 100% на обучение в бакалавриате ЦУ. Тебе не нужны специальные навыки: достаточно любопытства и желания экспериментировать. Регистрируйся до 16 февраля по ссылке: Зарегистрироваться Есть противопоказания. Посоветуйтесь с врачом. #реклама 16+ event.cu.ru О рекламодателе

🤔 Как в bash прописывают условие "или"? Условие "или" используется, чтобы выполнить вторую команду только если первая завершилась с ошибкой. Это помогает задать альтернативное действие при сбое. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое container network module в докере? Это архитектурная модель, разработанная Docker для управления сетями контейнеров. Она описывает, как создаются, управляются и взаимодействуют сетевые компоненты в Docker-контейнерах. CNM служит основой для организации сетей Docker и позволяет подключать контейнеры к различным сетевым средам, обеспечивая гибкость, масштабируемость и безопасность. 🚩Основные компоненты CNM 🟠Sandbox Это изолированная среда, где настраиваются сетевые интерфейсы контейнера, такие как IP-адреса, маршруты и DNS. Что включает: veth-пара интерфейсов (виртуальный Ethernet): соединяет контейнер с внешней сетью. Конфигурации маршрутов и сетевых правил. 🟠Endpoint Точка подключения контейнера к сети. Функции: Обеспечивает контейнеру связь с другими контейнерами или внешними сетями. Соединяет Sandbox с Network. 🟠Network Логическая сущность, объединяющая Endpoints для обеспечения взаимодействия контейнеров. Типы сетей в Docker: bridge: Локальная сеть, позволяющая контейнерам взаимодействовать на одном хосте. host: Контейнеры используют сетевой стек хоста без изоляции. none: Сеть отключена; контейнер полностью изолирован. overlay: Распределенная сеть для связи контейнеров на разных хостах. macvlan: Контейнеры получают прямой доступ к физической сети. 🚩Как это работает в Docker Создается Sandbox, где настраиваются сетевые параметры контейнера. Создается Endpoint, который подключает контейнер к выбранной сети. Endpoint добавляется в Network, что позволяет контейнеру взаимодействовать с другими узлами. 🚩ПлюсыГибкость Легко подключать контейнеры к различным типам сетей. ➕Изоляция Обеспечивает безопасность, изолируя сетевые пространства контейнеров. ➕Расширяемость CNM поддерживает сторонние плагины для интеграции с другими сетевыми решениями (например, Calico, Flannel). ➕Управляемость Позволяет контролировать настройки сети через команды Docker. 🚩Пример создания сети 1⃣Создание сети
docker network create my_bridge
2⃣Подключение контейнера к сети
docker run --network my_bridge -d nginx
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Terraform? Terraform — это инструмент для управления инфраструктурой как кодом (IaC), позволяющий описывать ресурсы (например, серверы, базы данных) с помощью декларативного языка. Он поддерживает провайдеры для работы с различными облачными платформами и автоматизирует создание, изменение и удаление инфраструктуры. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое basic auth? Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов. Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса. 🟠Как работает Basic Auth? Клиент делает запрос к серверу. Сервер отвечает 401 Unauthorized и требует аутентификацию:
   HTTP/1.1 401 Unauthorized  
   WWW-Authenticate: Basic realm="Restricted Area"
   
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
   Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
   
🟠Пример запроса с Basic Auth В curl
curl -u username:password http://example.com/protected
В Python (requests):
import requests
from requests.auth import HTTPBasicAuth

response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)
В JavaScript (fetch):
fetch("http://example.com/protected", {
  headers: {
    "Authorization": "Basic " + btoa("username:password")
  }
})
.then(response => response.text())
.then(data => console.log(data));
🚩МинусыНе безопасен без HTTPS данные передаются в открытом виде (Base64 — это не шифрование!). ➖Логин и пароль передаются в каждом запросе что делает систему уязвимой. ➖Нет механизма разлогинивания браузеры кэшируют креды, и их сложно сбросить. Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что такое BeanPostProcessor? BeanPostProcessor — интерфейс в Spring, позволяющий вмешиваться в жизненный цикл бина: - выполнять действия до и после инициализации бина; - применяется, например, в @Autowired, @Transactional, @Async. Это мощный способ внедрять дополнительное поведение, не изменяя исходный код бинов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - с
Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - создание инфографики и карточек для маркетплейсов - работа в графическом редакторе Figma и др. Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе