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

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

رفتن به کانال در Telegram
5 510
مشترکین
+324 ساعت
-57 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
МТС Линк 2.0 — большое демо для ИТ-руководителей Как IT-руководителю разгрузить отдел, отказаться от "зоопарка" решений и пер
МТС Линк 2.0 — большое демо для ИТ-руководителей Как IT-руководителю разгрузить отдел, отказаться от "зоопарка" решений и перенести рабочие коммуникации, корпоративное обучение и онлайн-встречи в единое приложение? Регистрируйтесь на большое демо МТС Линк 2.0. Вы узнаете: — как обновились сервисы для онлайн-встреч и вебинаров — новые инструменты интерактива и вовлечения — как ускорить рутину с помощью встроенных таск-трекера, ИИ, чат-ботов и интеграций — как сервисы для обучения и рабочих коммуникаций эволюционировали в единое суперапп-решение. А еще в программе: • Планы на 2026, • FAQ-сессия с лидерами продуктов • Кейсы миграции действующих клиентов Кому полезно: CTO и IT-директорам, CEO, руководителям по ИБ, цифровизации и импортозамещению. Регистрируйтесь на демо. Увидимся 25 марта в 15:00 мск Зарегистрироваться #реклама 16+ mts-link.ru О рекламодателе

🤔 Как версионируете чарты? Helm-чарты должны быть версионированы, чтобы отслеживать изменения и управлять развертываниями. Версии чарта (Chart.yaml) Версии приложения (appVersion) Репозиторий Helm (helm repo) Git-теги и CI/CD 🚩Версия чарта (`Chart.yaml`) Каждый Helm-чарт содержит Chart.yaml, где указывается версия чарта.
yaml  
apiVersion: v2  
name: my-app  
description: Helm chart for my application  
version: 1.2.3  
appVersion: 2.0.1  
🚩Хранение и обновление чарта в репозитории Helm Helm-чарты можно хранить в локальном или удаленном репозитории.
sh  
helm package my-chart/  
Обновить индекс в репозитории
sh  
helm repo index .  
Добавить новый чарт в Helm-репозиторий
sh  
helm repo add my-repo https://charts.example.com  
helm push my-app-1.2.3.tgz my-repo  
🚩Автоматическое версионирование через Git и CI/CD Обычно чарты хранятся в Git, и версии обновляются автоматически через CI/CD. Пример автоматического увеличения версии (version) в Chart.yaml через helm/chart-releaser-action
yaml  
name: Release Helm Chart  

on:  
  push:  
    tags:  
      - 'v*'  

jobs:  
  release:  
    runs-on: ubuntu-latest  
    steps:  
      - name: Checkout repo  
        uses: actions/checkout@v3  

      - name: Set up Helm  
        uses: azure/setup-helm@v3  
        with:  
          version: 'latest'  

      - name: Package Helm Chart  
        run: helm package my-chart/  

      - name: Upload to Helm Repo  
        uses: helm/chart-releaser-action@v1  
🚩Как установить конкретную версию чарта? Чтобы развернуть определенную версию Helm-чарта, указываем --version
sh  
helm install my-app my-repo/my-app --version 1.2.3  
Или обновить до новой версии:
sh  
helm upgrade my-app my-repo/my-app --version 1.2.4
Ставь 👍 и забирай 📚 Базу знаний

Битва кейсов ИБ: 6 сценариев киберкошмара 7 апреля в поединке сойдутся эксперты «Солара». По одну сторону — кейсы тестировани
Битва кейсов ИБ: 6 сценариев киберкошмара 7 апреля в поединке сойдутся эксперты «Солара». По одну сторону — кейсы тестирований на проникновение, по другую — реальные атаки. Чьи сценарии окажутся страшнее и критичнее — покажет битва. Кому будет полезно: Руководителям ИБ и ИБ-специалистам — получить данные, чтобы обосновать бюджет и построить стратегию защиты. ИТ-руководителям и менеджерам — узнать о текущих рисках и понять, как спланировать ИБ-бюджет. Руководителям компаний и риск-менеджерам — снизить цифровые и финансовые риски, защитить репутацию. Приходите, чтобы на чужих ошибках закрыть пробелы в своей защите. Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Чем отличается Docker от LXC? 1. Docker: предоставляет контейнеры с упрощённым API и инструментами для управления, ориентирован на приложения. 2. LXC: предоставляет низкоуровневую контейнеризацию, ближе к виртуализации всей ОС. 3. Docker упрощает работу разработчиков, а LXC больше подходит для системных администраторов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое acl в linux? ACL (Access Control List) – это механизм расширенных прав доступа в Linux, который позволяет задавать более гибкие разрешения для файлов и директорий, чем стандартные chmod и chown. Позволяет назначать дополнительные права для отдельных пользователей и групп Упрощает гранулярный контроль доступа Работает поверх стандартных прав (rwx) 🚩Проверка поддержки ACL Убедимся, что файловая система поддерживает ACL
mount | grep acl
Если ACL не включен, монтируем с поддержкой ACL
mount -o remount,acl /home
🚩Проверка текущих ACL-прав Команда getfacl показывает текущие ACL для файла или папки
getfacl myfile.txt
Пример вывода
# file: myfile.txt
# owner: user1
# group: users
user::rw-
user:john:r--
group::r--
mask::r--
other::---
🚩Добавление новых ACL-прав (`setfacl`) Разрешить пользователю john запись (rw) в myfile.txt
setfacl -m u:john:rw myfile.txt
Разрешить группе developers выполнение (x)
setfacl -m g:developers:x myfile.txt
Дать всем (other) полный доступ (rwx)
setfacl -m o::rwx myfile.txt
Назначить по умолчанию права для всех новых файлов в папке project/
setfacl -d -m u:john:rwx project/
🚩Удаление ACL-прав Удалить ACL для пользователя john
setfacl -x u:john myfile.txt
Очистить все ACL-права файла
setfacl -b myfile.txt
Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем отличается CD и CD (непрерывная доставка)? Это два смысла одного сокращения: - Continuous Delivery (непрерывная доставка) — код всегда готов к деплою, но деплой в прод по кнопке. - Continuous Deployment (непрерывное развёртывание) — код автоматически деплоится в прод после прохождения всех тестов. Delivery — ручной шаг, Deployment — полностью автоматизированный. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое брокеры сообщений? Это программные системы, которые позволяют обмениваться данными между разными компонентами приложения или между различными приложениями. Они действуют как посредники, принимая сообщения от отправителей (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()
🚩Плюсы использованияРазделение ответственности Компоненты системы сосредотачиваются на своих задачах, а не на доставке данных. ➕Масштабируемость Легко добавлять новых потребителей или отправителей. ➕Устойчивость к сбоям Брокеры обеспечивают сохранность сообщений, даже если один из компонентов временно недоступен. ➕Гибкость Возможность использовать различные стратегии маршрутизации и обработки данных. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что хранится в /etc/fstab? Содержит таблицу монтирования файловых систем. 1. Указывает устройства и точки монтирования, например, диски, разделы, сетевые файловые системы. 2. Задаёт параметры монтирования, такие как тип файловой системы, опции (rw, noatime) и поведение при загрузке. 3. Используется системой для автоматического монтирования файловых систем при запуске. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как диагностировать проблемы с локальным сервером который не отвечает на ping? Если сервер не пингуется, это не значит, что он не работает – проблема может быть в сети, настройках брандмауэра или самом сервере. 🚩Пошаговая диагностика 1⃣Проверить, действительно ли сервер включен Подойти к серверу и проверить: Горят ли индикаторы сети (LAN) на сервере? Реагирует ли на клавиатуру/монитор? Не завис ли сервер? (Может помочь Hard Reboot). 2⃣Проверить, есть ли связь на L2-уровне (MAC-адреса) Проверяем, видит ли наш компьютер MAC-адрес сервера через `arp`. Запрос ARP
arp -a | grep 192.168.1.100
Если MAC-адрес есть → пакеты доходят до сервера, но он не отвечает. Если MAC-адреса нет → возможны проблемы с сетью (кабель, порт, VLAN, DHCP, статика). Дополнительно проверить соединение
ethtool eth0  # Проверить состояние сетевого адаптера
ip link show eth0  # Интерфейс должен быть UP
3⃣Проверить, отвечает ли сервер на другие запросы (SSH, HTTP, RDP) Если ping отключен (ICMP заблокирован брандмауэром), но сервер работает, попробуем другие протоколы. Пробуем зайти по SSH (если это Linux)
ssh user@192.168.1.100
Пробуем зайти по RDP (если это Windows)
rdesktop 192.168.1.100
Пробуем зайти через HTTP (если там веб-сервер)
curl -I http://192.168.1.100
4⃣Проверить сетевой интерфейс на сервере Подключаемся к серверу (если возможно) и проверяем, есть ли у него сеть. Проверяем IP-адрес сервера
ip a
или
ifconfig -a
Пробуем пропинговать шлюз с сервера
ping 192.168.1.1
5⃣Проверить брандмауэр и iptables на сервере Если сервер не отвечает на ICMP, его может блокировать брандмауэр. Linux (firewalld, iptables, ufw)
iptables -L -n | grep DROP  # Проверяем правила iptables
ufw status  # Проверяем UFW (если используется)
firewall-cmd --list-all  # Проверяем firewalld
Если ICMP запрещен → разрешаем его
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
ufw allow proto icmp
firewall-cmd --add-icmp-block=echo-reply --permanent
firewall-cmd --reload
Windows (Проверить ICMP в брандмауэре Windows)
netsh advfirewall firewall show rule name="File and Printer Sharing (Echo Request - ICMPv4-In)"
Если правило отключено → включаем
netsh advfirewall firewall add rule name="ICMP Allow" protocol=icmpv4:8,any dir=in action=allow
6⃣Проверить маршрутизацию и сеть Если сервер и клиент находятся в разных VLAN или подсетях, проверяем маршрут. На клиенте
traceroute 192.168.1.100  # Linux
tracert 192.168.1.100  # Windows
Проверить маршруты на сервере
ip route show
Если маршрут отсутствует → добавляем вручную
ip route add 192.168.1.0/24 via 192.168.1.1
Ставь 👍 и забирай 📚 Базу знаний

Куда срочно перенести рабочие чаты? Битрикс24 — ваш мессенджер для работы и бизнеса. Личные и групповые чаты, видеозвонки и к
Куда срочно перенести рабочие чаты? Битрикс24 — ваш мессенджер для работы и бизнеса. Личные и групповые чаты, видеозвонки и каналы в одном сервисе. Приглашайте коллег и внешние команды. Работает как привычный мессенджер. Есть бесплатный тариф. Начните работать уже сейчас. Битрикс24 — мессенджер для вашей компании. Попробовать #реклама 16+ bitrix24.ru О рекламодателе

🤔 Как узнать причину CrashLoopBackOff? CrashLoopBackOff возникает, когда под постоянно падает и перезапускается. Чтобы понять причину, сначала нужно использовать kubectl describe pod <pod-name> и просмотреть секцию Events. Также важно посмотреть логи последнего запуска перед сбоем: kubectl logs --previous <pod-name>. Обрати внимание на exit code контейнера: код 1 означает, что произошла ошибка в приложении, код 137 — что контейнер был убит из-за нехватки памяти (OOMKilled), 126 или 127 — что команда не найдена или не может быть выполнена. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужны теги в Ansible? Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией. 🚩Когда использовать теги? 🟠Запуск только нужных задач если плейбук содержит много шагов, можно выполнить только нужные. 🟠Разделение задач по категориям например, отдельно установка, обновление, настройка сервиса. 🟠Оптимизация CI/CD ускорение развертывания, выполняя только измененные задачи. 🚩Как использовать теги? 🟠Теги в задачах (`tasks`) Простой пример – установка и перезапуск Nginx
yaml  
- name: Установить Nginx  
  apt:  
    name: nginx  
    state: present  
  tags: install  

- name: Перезапустить Nginx  
  service:  
    name: nginx  
    state: restarted  
  tags: restart  
Запуск только установки (install)
sh  
ansible-playbook playbook.yml --tags install  
Запуск только перезапуска (restart)
sh  
ansible-playbook playbook.yml --tags restart  
🟠Теги в ролях (`roles`) Если у вас несколько ролей, можно запускать только нужную:
yaml  
- hosts: all  
  roles:  
    - { role: nginx, tags: web }  
    - { role: database, tags: db }  
Запуск только роли database
sh  
ansible-playbook playbook.yml --tags db  
🟠Исключение тегов (`--skip-tags`) Можно пропустить выполнение определенных задач
sh  
ansible-playbook playbook.yml --skip-tags restart
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как тэгировать роли? Для тэгирования ролей применяются Git-теги, указывающие на номер версии (например, v1.0.0). Это позволяет другим разработчикам понимать, какую версию роли они используют. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего используется clickhouse? ClickHouse – это высокопроизводительная колоночная база данных для аналитики. Она предназначена для быстрого выполнения аналитических запросов на больших объемах данных (миллиарды строк). Используется в BI-системах, логировании, мониторинге и обработке событий. 🚩Основные возможности 🟠Очень быстрые запросы за счёт хранения данных по колонкам и сжатия. 🟠Отлично масштабируется работает на одной машине или в кластере. 🟠Поддержка SQL работает с привычными SQL-запросами. 🟠Хорош для real-time аналитики обработка миллионов событий в секунду. 🟠Без индексов использует Primary Key + MergeTree, что упрощает оптимизацию. 🟠Хорошее сжатие данных благодаря специальным алгоритмам хранения. 🚩Где используется? 🟠Аналитика и отчёты BI-системы (анализ продаж, маркетинга, поведения пользователей). Агрегация данных по времени (финансы, реклама, ретеншн). 🟠Логирование и мониторинг Хранение логов (NGINX, Kubernetes, Clickstream). Аналитика событий в реальном времени. 🟠IoT и Big Data Обработка телеметрии с датчиков. Анализ поведения пользователей в приложениях. 🟠Пример работы с ClickHouse 1⃣Создание таблицы
CREATE TABLE visits (
    user_id UInt32,
    url String,
    duration UInt32,
    event_time DateTime
) ENGINE = MergeTree()
ORDER BY event_time;
2⃣Вставка данных
INSERT INTO visits VALUES (1, 'https://example.com', 30, now());
3⃣Аналитический запрос (например, среднее время посещения сайта)
SELECT url, AVG(duration) 
FROM visits 
GROUP BY url 
ORDER BY AVG(duration) DESC;
Ставь 👍 и забирай 📚 Базу знаний

🤔 Когда используется UDP? UDP используется, когда важна скорость и допустима потеря данных, например, в стриминге, видеозвонках, DNS-запросах и онлайн-играх. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 По какой причине inode могут закончиться? Это структуры данных, которые хранят информацию о файлах и каталогах. Каждый файл или каталог на диске ассоциируется с одним inode, который содержит метаданные файла, такие как его размер, разрешения, временные метки, ссылки на блоки данных и т.д. Количество inode на файловой системе обычно определяется в момент её создания и не может быть изменено без переформатирования или значительных изменений в файловой системе. 🚩Причины исчерпания 🟠Большое количество мелких файлов Одной из наиболее частых причин исчерпания inode является наличие очень большого количества маленьких файлов на файловой системе. Поскольку каждый файл использует как минимум один inode, системы с большим количеством мелких файлов могут исчерпать доступные inode, даже если дисковое пространство по-прежнему доступно. 🟠Недостаточное количество выделенных inode При создании файловой системы, если количество выделенных inode было рассчитано неправильно (слишком мало для предполагаемого использования), это может привести к раннему их исчерпанию. Это особенно актуально для серверов или систем, где ожидается большое количество файлов. 🟠Особенности файловой системы Некоторые файловые системы, такие как Ext3 или Ext4, имеют фиксированное соотношение inode к объёму файловой системы, которое задаётся при их создании. Если создать файловую систему с недостаточным количеством inode для конкретного случая использования, то в дальнейшем это может стать проблемой. 🚩Решения проблемы исчерпания 🟠Проверка использования С помощью команды df -i можно проверить, сколько inode используется и сколько ещё доступно в вашей файловой системе. 🟠Очистка файловой системы Удаление ненужных или временных файлов может освободить inode. 🟠Изменение файловой системы Если возможно, можно увеличить количество inode путём изменения файловой системы или пересоздания файловой системы с более высоким количеством inode. Для файловых систем, таких как XFS или некоторые конфигурации Btrfs, можно динамически добавлять inode. 🟠Использование других файловых систем Переход на другую файловую систему, которая не имеет строгих ограничений на количество inode (например, Btrfs или ZFS), может быть решением для систем с большим количеством маленьких файлов. 🟠Архивирование Программы и процессы, которые создают большое количество мелких файлов, могут модифицироваться для хранения данных в формате архивов вместо отдельных файлов, что снижает потребление inode. Ставь 👍 и забирай 📚 Базу знаний

Samsung Galaxy S26 | S26+ Баланс высоких технологий и элегантного дизайна в смартфонах с умной камерой, встроенным ИИ и мощны
Samsung Galaxy S26 | S26+ Баланс высоких технологий и элегантного дизайна в смартфонах с умной камерой, встроенным ИИ и мощным аккумулятором Узнать больше #реклама market.yandex.ru О рекламодателе

🤔 Что происходит, когда вбиваешь запрос в Google и нажимаешь Enter? Процесс включает: 1. Разбор URL — браузер определяет домен и путь. 2. DNS-запрос — получение IP-адреса сервера Google. 3. Установка TCP/SSL-соединения. 4. Отправка HTTP-запроса — GET /search?q=.... 5. Обработка запроса на стороне Google — ранжирование, подбор результатов. 6. Получение HTTP-ответа — HTML-страница с результатами. 7. Отрисовка в браузере — вместе со скриптами, изображениями и т.п. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

SIEM нового класса: строим SOC в условиях оптимизации Бюджеты урезают, кадров не хватает, а угрозы растут. 25 марта в 11:00 р
SIEM нового класса: строим SOC в условиях оптимизации Бюджеты урезают, кадров не хватает, а угрозы растут. 25 марта в 11:00 расскажем, как SIEM нового класса помогает снижать трудозатраты и автоматизировать 90% рутины. Обсудим: Почему детектирование без реагирования не работает и как современные SIEM решают эту задачу. Как выстроить полный и управляемый цикл работы с инцидентом в рамках единой платформы. Как Solar SIEM объединяет SIEM, SOAR и другие компоненты SOC-экосистемы, ускоряя поиск угроз в 3 раза. Для кого: Архитекторов и руководителей SOC — спланировать развитие ИБ-архитектуры Аналитиков и инженеров — сократить рутину Руководителей ИБ — оптимизировать бюджет без потери качества Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Для чего используются иниь контейнеры? Init-контейнеры (init containers) – это специальные контейнеры в поде, которые запускаются перед основным приложением. Они выполняют подготовительные задачи, а затем завершаются. 🚩Основные сценарии использования Init-контейнеров 🟠Подготовка окружения Создание директорий, загрузка конфигураций или файлов перед запуском основного контейнера. 🟠Ожидание зависимостей Проверка доступности БД, API или других сервисов перед запуском приложения. 🟠Миграции БД Выполнение migrations перед стартом веб-приложения. 🟠Проверка и валидация данных Убеждаемся, что все файлы и настройки корректны. 🚩Как работают Init-контейнеры? Запускаются последовательно (поочередно). Должны завершиться успешно, иначе весь под не стартует. Не перезапускаются после завершения. Не делят volume'ы с основным контейнером (могут передавать данные через shared volumes). 🚩Пример: Init-контейнер, проверяющий доступность БД
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: main-app
    image: my-app:latest
    ports:
    - containerPort: 8080
  initContainers:
  - name: wait-for-db
    image: busybox
    command: ['sh', '-c', 'until nc -z db-service 5432; do echo waiting for DB; sleep 2; done;']
Ставь 👍 и забирай 📚 Базу знаний