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

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

الذهاب إلى القناة على Telegram
5 544
المشتركون
-624 ساعات
+27 أيام
+3730 أيام
أرشيف المشاركات
🤔 Динамическая маршрутизация и разные протоколы динамической маршрутизации, ebgp ibgp, константы bgp. На чём сейчас принято строить bgp-пиринги? 🟠Динамическая маршрутизация Динамическая маршрутизация – это механизм автоматического выбора маршрута на основе изменяющихся сетевых условий. В отличие от статической маршрутизации, она автоматически адаптируется к изменениям в сети. Протоколы динамической маршрутизации делятся на: Протоколы внутреннего шлюза (IGP – Interior Gateway Protocol) RIP (Routing Information Protocol) – устаревший, работает на алгоритме дистанционно-векторного маршрутизации. OSPF (Open Shortest Path First) – основан на SPF (Dijkstra) и работает по принципу линк-стейт. IS-IS (Intermediate System to Intermediate System) – аналог OSPF, но чаще используется в провайдерских сетях. Протоколы внешнего шлюза (EGP – Exterior Gateway Protocol) BGP (Border Gateway Protocol) – основной протокол маршрутизации в интернете. 🟠BGP: Основной протокол глобальной маршрутизации eBGP vs iBGP BGP бывает двух типов: eBGP (External BGP) – маршрутизация между автономными системами (AS). Используется для обмена маршрутами между разными организациями или провайдерами. iBGP (Internal BGP) – работает внутри одной AS, передавая BGP-маршруты между роутерами этой сети. 🚩Константы BGP (Attributes) BGP использует атрибуты маршрута для выбора наилучшего пути. Основные атрибуты: 🟠Local Preference приоритетный маршрут внутри AS (чем выше, тем лучше). 🟠AS Path список AS, через которые проходит маршрут (короче – лучше). 🟠MED (Multi-Exit Discriminator) предпочтение одного из выходов из AS (меньше – лучше). 🟠Origin источник маршрута (IGP < EGP < Incomplete). 🟠Community метки маршрутов для упрощения политики маршрутизации. 🟠Weight (Cisco-only) локальный параметр (чем больше, тем лучше). 🚩На чём сейчас строят BGP-пиринги? BGP можно развернуть на разных платформах, включая аппаратные и программные решения: 🟠Оборудование (Аппаратные маршрутизаторы) Cisco (IOS, IOS-XE, IOS-XR, NX-OS) – классика для крупных сетей. Juniper (Junos OS) – мощное решение для дата-центров и операторов. Arista (EOS) – высокопроизводительные маршрутизаторы для ЦОДов. Huawei (VRP) – популярно в крупных корпоративных сетях. 🟠Программные решения (SOFT-router) FRRouting (FRR) – open-source, поддерживает BGP, OSPF, IS-IS. BIRD – лёгкий BGP-демон для Linux, используется в IX (Internet Exchange). GoBGP – BGP-демон, написанный на Go. VyOS – Linux-маршрутизатор с поддержкой BGP. MikroTik (RouterOS) – бюджетное, но мощное решение. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как поднять лимиты Nginx? 1. В конфигурации Nginx увеличить worker_connections и worker_rlimit_nofile. 2. Настроить ulimit в системных настройках. 3. Обновить параметры ядра через sysctl (например, fs.file-max, net.core.somaxconn). 4. Перезапустить сервис, чтобы изменения вступили в силу. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое pv, pvc? Это понятия из Kubernetes, которые используются для управления хранилищем данных (storage). Они решают задачу обеспечения долгоживущего хранилища для приложений, которое сохраняется независимо от жизненного цикла подов (Pods). 🚩Persistent Volume (PV) Это объект Kubernetes, который представляет физическое хранилище, доступное в кластере. Это может быть локальное хранилище, сетевой диск (например, NFS), или облачный сервис хранения (например, Amazon EBS, Google Persistent Disk, Azure Disk). PV создается администратором или автоматически через StorageClass. Это ресурс хранилища, выделенный для использования в кластере. Независим от подов, что позволяет хранить данные, даже если под был удален или перезапущен.
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/mnt/data"
🚩Persistent Volume Claim (PVC) Это запрос на использование хранилища (PV) со стороны пользователя или приложения. Это как "заявка" на нужное количество места и определенный тип хранилища. PVC создается разработчиком или приложением. PVC связывается с подходящим PV, который соответствует запросу. Если подходящий PV найден, он "привязывается" к PVC.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
🚩Как работают PV и PVC вместе? 🟠Создание PV Администратор или динамическое создание выделяет хранилище (например, сетевой диск). 🟠Создание PVC Приложение запрашивает хранилище с помощью PVC. 🟠Привязка Kubernetes автоматически находит подходящий PV, который соответствует запросу PVC (по размерам, режимам доступа и другим параметрам). После этого PVC "связывается" с PV. 🟠Использование в поде PVC указывается в поде как volume, что позволяет контейнерам работать с данным хранилищем.
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      volumeMounts:
        - mountPath: "/data"
          name: my-storage
  volumes:
    - name: my-storage
      persistentVolumeClaim:
        claimName: my-pvc
Ставь 👍 и забирай 📚 Базу знаний

Киберугрозы становятся всё более сложными. Что если злоумышленник может получить доступ к памяти вашей системы и извлечь данн
Киберугрозы становятся всё более сложными. Что если злоумышленник может получить доступ к памяти вашей системы и извлечь данные? 9 сентября в 20:00 МСК мы проведём открытый вебинар «Вложенная виртуализация. Анализ памяти». Мы разберём новые модели угроз, при которых злоумышленник может атаковать память, научим вас использовать инструменты криминалистического анализа и покажем, как защитить данные от атак на L1 и L2 виртуализацию. Если вы специалист по информационной безопасности, системный администратор или форензик-эксперт, этот вебинар откроет для вас новые подходы к защите данных, которые могут спасти ваше приложение от утечек информации. Урок проходит в преддверие старта курса «Компьютерная криминалистика». Пройдите регистрацию и получите скидку на обучение: https://otus.pw/0fXq/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

🤔 Какие могут быть причины CrashLoopBackOff? Это значит, что контейнер падает и перезапускается: - Ошибка внутри приложения (не хватает переменной, зависимостей, крэш при запуске). - Неправильный command или entrypoint. - Отсутствие подключения к БД или внешнему сервису. - Недостаточно ресурсов (kill по памяти). - Проблемы с томами (доступ, монтирование). Стоит смотреть logs и describe pod для диагностики. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Тариф, с которым хватит на всё 50 ГБ и безлимитные минуты за 390 ₽ в месяц, если перенесете номер в Т-Мобайл до 30 сентября Узнать больше #реклама tbank.ru О рекламодателе

🤔 Что такое брокеры сообщений? Это программные системы, которые позволяют обмениваться данными между разными компонентами приложения или между различными приложениями. Они действуют как посредники, принимая сообщения от отправителей (producers) и доставляя их получателям (consumers). 🚩Основные функции брокеров сообщений 🟠Прием и маршрутизация сообщений Сообщения отправляются от одного компонента и доставляются нужному получателю. Брокер определяет, куда отправить сообщение, используя темы (topics), очереди (queues) или маршруты (routing keys). 🟠Асинхронное взаимодействие Отправитель может передать сообщение, не дожидаясь его обработки, что повышает производительность системы. 🟠Очереди сообщений Если получатель временно недоступен, сообщение сохраняется в очереди до тех пор, пока оно не будет доставлено. 🟠Гарантированная доставка Некоторые брокеры предоставляют механизмы подтверждения получения сообщений (acknowledgment), чтобы избежать их потери. 🟠Распределение нагрузки Сообщения могут быть обработаны несколькими получателями, что позволяет распределить нагрузку между ними. 🟠Фильтрация и маршрутизация Сообщения доставляются только тем потребителям, которые их ожидают, используя фильтры или ключи маршрутизации. 🚩Примеры использования брокеров сообщений 🟠Микросервисы Компоненты приложения обмениваются данными через брокер, что позволяет им оставаться изолированными и независимыми. 🟠Логирование и мониторинг Сбор логов и метрик от множества источников с их дальнейшей обработкой. 🟠Управление задачами Постановка задач в очередь для выполнения одним или несколькими воркерами. 🟠Интеграция систем Связывание разнородных систем, которые обмениваются данными. 🚩Примеры брокеров сообщений 🟠RabbitMQ Протокол: AMQP (Advanced Message Queuing Protocol). Поддерживает очереди, маршрутизацию, подтверждения доставки. Хорошо подходит для сложных сценариев с разными типами маршрутизации. 🟠Apache Kafka Протокол: Проприетарный. Отличается высокой производительностью и надежностью. Используется для потоковой обработки данных, аналитики в реальном времени. 🟠Redis (Pub/Sub) Протокол: Redis. Простая и быстрая модель pub/sub. Хорошо подходит для временных сообщений без сохранения состояния. 🟠ActiveMQ Протокол: AMQP, STOMP, MQTT. Гибкий и совместимый с различными сценариями. 🟠NATS Легковесный и быстрый брокер для приложений, требующих низкой задержки. 🚩Как работают брокеры сообщений Producers (отправители) отправляют сообщение в брокер. Брокер размещает сообщение в соответствующей очереди или теме. Consumers (получатели) получают сообщение: Либо сразу, если они активны. Либо позже, если оно сохраняется в очереди. 🚩Пример использования RabbitMQ 1⃣Отправитель публикует сообщение в очередь:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
connection.close()
2⃣Получатель забирает сообщение из очереди:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    print(f"Received {body}")

channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
channel.start_consuming()
🚩Плюсы использованияРазделение ответственности Компоненты системы сосредотачиваются на своих задачах, а не на доставке данных. ➕Масштабируемость Легко добавлять новых потребителей или отправителей. ➕Устойчивость к сбоям Брокеры обеспечивают сохранность сообщений, даже если один из компонентов временно недоступен. ➕Гибкость Возможность использовать различные стратегии маршрутизации и обработки данных. Ставь 👍 и забирай 📚 Базу знаний

Новинки от Braun Оригинальные бритвы, триммеры и эпиляторы с гарантией. Точность, комфорт и стиль — вместе с Braun Купить #ре
Новинки от Braun Оригинальные бритвы, триммеры и эпиляторы с гарантией. Точность, комфорт и стиль — вместе с Braun Купить #реклама market.yandex.ru О рекламодателе

🤔 Как происходит процесс сборки в CI/CD? Последовательно: 1. Checkout кода из репозитория. 2. Сборка артефактов (jar, docker-образ, бинарник и т.д.). 3. Тестирование (юнит, интеграция). 4. Анализ кода (Sonar, Linter). 5. Публикация артефакта в регистри или хранилище. 6. Деплой в среду (staging/prod). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи про разницу PVC и full stack? Понимание этих двух терминов поможет нам различить их предназначение и использование в контексте Kubernetes и программного обеспечения. 🚩PVC (Persistent Volume Claim) Это объект в Kubernetes, который позволяет пользователям запрашивать выделение постоянного хранилища для подов. PVC абстрагирует детали физического хранилища, позволяя разработчикам и администраторам фокусироваться на объеме и типе хранилища, необходимого для приложения, без необходимости управлять деталями самого хранилища. 🚩Основные аспекты PVC 🟠Запрос хранилища PVC определяет запрос на объем хранилища и его характеристики, такие как размер и класс хранилища (Storage Class). 🟠Абстракция хранилища PVC абстрагирует конкретные детали физического хранилища, предоставляя единый интерфейс для запросов хранилища. 🟠Динамическое и статическое связывание PVC может использовать как динамическое связывание (где Kubernetes автоматически создает PV на основе PVC), так и статическое связывание (где администраторы заранее создают PV). 🟠Совместимость с подами PVC могут быть подключены к подам, обеспечивая постоянное хранилище для приложений.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard
🚩Full Stack Это термин, используемый для описания разработчиков или инженеров, которые обладают навыками и знаниями для работы со всеми уровнями разработки программного обеспечения, от фронтенда до бэкенда, включая базы данных, серверы и даже DevOps практики. 🚩Основные аспекты Full Stack разработки 🟠Фронтенд Создание пользовательских интерфейсов с использованием HTML, CSS, JavaScript и фреймворков, таких как React, Angular или Vue.js. 🟠Бэкенд Разработка серверной логики и API с использованием языков программирования, таких как Python, Node.js, Ruby, Java или PHP. 🟠Базы данных Работа с реляционными (например, MySQL, PostgreSQL) и нереляционными (например, MongoDB, Redis) базами данных. 🟠DevOps Управление развертыванием, настройкой серверов, CI/CD пайплайнами, мониторингом и масштабированием приложений. 🟠Сетевые технологии Понимание протоколов, таких как HTTP/HTTPS, REST, WebSockets, и работа с серверными технологиями, такими как Nginx или Apache. Ставь 👍 и забирай 📚 Базу знаний

Вебинар - "Прорыв в AI: применяйте DeepSeek эффективно" ⚡ Практикум по топовой китайской ии DeepSeek! Узнайте, как экономить 20+ часов в неделю! Формат: Живой бесплатный вебинар! Подойдет даже новичкам! На вебинаре вы: - Разберетесь в нейросетях и их возможностях - Научитесь писать рабочие промпты - Автоматизируете рутину (контент, аналитика и др.) - Создадите ИИ-ассистента в прямом эфире! Мы преготовили подарки: ✨ Подарок №1: Полезные материалы по ИИ ✨ Подарок №2: Руководство «Как создать цифровой аватар» (сразу после регистрации)! Кому подойдет? Контент-мейкерам, предпринимателям, специалистам и всем, кто хочет освоить ИИ для карьеры или дохода. ✅Успейте зарегистрироваться Бесплатно! Не теряйте время на рутину – доверьте ее ИИ! Зарегистрироваться #реклама 16+ ed.bonnieandslide.com О рекламодателе

🤔 Что такое ReplicaSet и зачем нужен? Это компонент Kubernetes, обеспечивающий нужное количество реплик подов. 1. Он автоматически запускает новые поды при сбоях существующих или при увеличении нагрузки. 2. Гарантирует поддержание заданного количества экземпляров приложения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 С каким максимальным кол-ом адресов ОП может провзаимодействовать процессор? Максимальное количество адресов оперативной памяти (ОП), с которыми может взаимодействовать процессор, зависит от ширины адресной шины процессора. Адресная шина определяет, сколько уникальных адресов памяти процессор может адресовать. 🚩Формула вычисления Количество адресуемых ячеек памяти определяется по формуле: \text{Максимальное количество адресов} = 2^{\text{ширина адресной шины (в битах)}} 🚩Примеры 🟠Процессор с 32-битной адресной шиной Максимально возможное количество адресов: 2^{32} = 4,294,967,296 \, (\approx 4 \, \text{Гбайт}) 🟠Процессор с 64-битной адресной шиной Теоретический максимум 2^{64} = 18,446,744,073,709,551,616 \, (\approx 16 \, \text{эксабайт}) Однако современные процессоры обычно поддерживают меньше, например Архитектура x86-64 (например, Intel и AMD): ограничена 48–57 битами для адресов памяти, что позволяет адресовать от 256 Тбайт до 128 Пбайт. 🚩Почему реальная адресуемая память меньше? 🟠Ограничения архитектуры Производители процессоров могут использовать меньшее количество адресных линий, чтобы снизить сложность и стоимость. Например, современные 64-битные процессоры адресуют только часть 64-битного пространства (например, 48 бит). 🟠Ограничения ОЗУ Даже если процессор поддерживает большое количество адресов, максимальная память ограничивается количеством слотов памяти и их емкостью на материнской плате. 🟠Системные резервы Некоторые адреса зарезервированы для системных нужд (например, для ввода/вывода или BIOS). Ставь 👍 и забирай 📚 Базу знаний

VK JT Meetup — офлайн для Go и Java dev Привет, это VK! 16 сентября мы собираем Go- и Java-разработчиков в Петербурге на VK J
VK JT Meetup — офлайн для Go и Java dev Привет, это VK! 16 сентября мы собираем Go- и Java-разработчиков в Петербурге на VK JT Meetup. Поговорим про рабочие практики и реальные решения, которые меняют архитектуру ВКонтакте. В программе: — переход на Go и трансформация инфраструктуры ВКонтакте — устройство единой видеоплатформы VK — переход от монолитной структуры к микросервисной — опыт финтеха После докладов вас ждут командные бэкенд-батлы с кейсами, основанными на реальной архитектуре VK, под менторством наших опытных разработчиков. Финал вечера — афтепати: фуршет, общение и нетворкинг. Регистрируйтесь! Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете по ссылке Подать заявку #реклама 16+ team.vk.company О рекламодателе

🤔 Что такое ресурс в Terraform? Ресурс — это основная строительная единица, которая описывает один объект инфраструктуры: например, виртуальная машина, сеть, база данных. Ресурсы объявляются в *.tf файлах и управляются через провайдеры (aws_instance, google_storage_bucket и т.д.). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Поды висят в pending, в чем проблема? Pod в Pending означает, что он не может быть запущен, потому что Kubernetes не может его назначить (schedule) на ноду. Нет свободных ресурсов на нодах (CPU, RAM) Неподходящие nodeSelector, affinity или taints Нет доступных узлов (все NotReady) Проблемы с PersistentVolume (PVC не привязан) Ошибки в CNI (сеть Kubernetes) 🚩Проверяем статус подов (`kubectl get pods`) Команда
kubectl get pods -A
🚩Нет свободных ресурсов на нодах Команда:
kubectl describe pod my-app-1
🚩Проблема с `nodeSelector`, `affinity`, `taints` Если под настроен только на определенные ноды, он может не найти подходящую.
kubectl describe pod my-app-1
Вывод:
0/3 nodes are available: 3 node(s) didn't match pod affinity/selector.
🚩Все ноды в состоянии `NotReady` Проверяем статус нод
kubectl get nodes
Ставь 👍 и забирай 📚 Базу знаний

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

Бесплатный курс по дизайну: веб, графический и UX/UI Научись создавать дизайн сайтов и приложений, инфографику для карточек н
Бесплатный курс по дизайну: веб, графический и UX/UI Научись создавать дизайн сайтов и приложений, инфографику для карточек на маркетплейсах и работать в Figma! Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Этот курс для тебя, если ты: ✅ мечтаешь о новой профессии в digital, но не знаешь, с чего начать; ✅ чувствуешь, что хочешь большего — свободы, самореализации, творчества; ✅ полный новичок и хочешь систему, а не хаос; ✅ хочешь начать зарабатывать удалённо. Зарегистрироваться #реклама 16+ yudaevschool24.online О рекламодателе

🤔 Как сделать rebase на main branch? Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (main). 🟠Переключаемся на вашу текущую ветку Допустим, вы работаете в ветке feature-branch:
git checkout feature-branch
🟠Выполняем rebase на `main` Сначала убедимся, что main обновлена:
git checkout main
git pull origin main
Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main
🟠Разрешение конфликтов (если есть) Если у вас есть конфликты, Git остановит процесс и попросит их решить. Откройте файлы с конфликтами, исправьте их. Добавьте исправленные файлы:
   git add <файл>
   
Продолжите rebase:
   git rebase --continue
   
🟠Обновление удалённого репозитория Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force
Ставь 👍 и забирай 📚 Базу знаний