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

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

Open in Telegram
5 511
Subscribers
-224 hours
-47 days
-330 days
Posts Archive
🤔 Как сделать отказоустойчивый кластер Kubernetes? Чтобы обеспечить отказоустойчивость: 1. Master-ноды в HA: - Несколько control-plane-нод за балансировщиком (HAProxy, nginx, keepalived). - etcd кластер в odd-количестве узлов (3+). 2. Worker-ноды: - Несколько нод в разных зонах (для облаков — Availability Zones). - Использование PodDisruptionBudget и antiAffinity. 3. Ingress и LoadBalancer: - Балансировка между ingress-нодами. - Использование внешнего L4-балансировщика. 4. Мониторинг и алерты: - Prometheus + Alertmanager. - Проверка готовности/живости, рестарт в случае сбоев. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое cherry pick? Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки. 🚩Когда используется 🟠Применение отдельных изменений Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки. 🟠Быстрое исправление ошибок Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза. 🟠Избежание сложного слияния Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям, cherry-pick позволяет аккуратно перенести только нужные коммиты. 🚩Примеры использования 🟠Простого `cherry-pick` Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick коммита
git cherry-pick <commit-hash>
🟠Применения нескольких коммитов Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>
🟠Применения диапазона коммитов Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>
🚩Разрешение конфликтов 1⃣Разрешите конфликты в файлах. 2⃣Добавьте изменения в индекс
git add <filename>   
3⃣Завершите процесс cherry-pick
git cherry-pick --continue   
🚩Прерывание Если вы хотите прервать процесс cherry-pick, можно использовать команду
git cherry-pick --abort
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое декларативный подход? Декларативный подход — это способ описания желаемого конечного состояния, а не шагов, как до него добраться. Например, мы говорим, что "пакет nginx должен быть установлен", а не "скачай и установи nginx". Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Пожизненная PRO подписка на easyoffer по цене одного года. Акция до 20 февраля. Покупаешь сейчас один раз – пользуешься всю ж
Пожизненная PRO подписка на easyoffer по цене одного года. Акция до 20 февраля. Покупаешь сейчас один раз – пользуешься всю жизнь без лимита, включая все будущие функции. Запланированные новые фичи на ближайшие пол года: 1. Агрегатор вакансий 2. Улучшение резюме, чтобы проходить ATS системы 3. Генерация уникального резюме и сопроводительного письма под вакансию Покупай на https://easyoffer.ru/

🤔 Когда вы создаёте файл какие права создаются по умолчанию? Права доступа по умолчанию зависят от базовых прав доступа и значения umask. Базовые права доступа — это значения, которые система использует для определения разрешений перед применением маски umask. 🟠Файлы: 666 (rw-rw-rw-) Это означает, что по умолчанию все пользователи могут читать и записывать в файл. 🟠Каталоги: 777 (rwxrwxrwx) Это означает, что по умолчанию все пользователи могут читать, записывать и выполнять (заходить) в каталог. 🚩Значение umask: 022 Это маска, которая определяет, какие права будут отключены при создании нового файла или каталога. Значение umask указывается в восьмеричной системе счисления. 🟠Создание файла Базовые права доступа: 666 Значение umask: 022 Окончательные права доступа: 666 - 022 = 644 (rw-r--r--) 🟠Создание каталога Базовые права доступа: 777 Значение umask: 022 Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x) 🚩Создание файла с umask 0022 1⃣Установка umask
umask 0022   
2⃣Создание файла
touch myfile   
3⃣Проверка прав доступа
ls -l myfile   
Вывод Права доступа: 644 (rw-r--r--)
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile    
🚩Создание каталога с umask 0027 1⃣Установка umask
umask 0027   
2⃣Создание каталога
mkdir mydir   
3⃣Проверка прав доступа
ls -ld mydir   
Вывод Права доступа: 750 (rwxr-x---)
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir     
🚩Дополнительные замечания 🟠umask в скриптах Вы можете установить umask в скрипте для задания прав доступа по умолчанию для всех создаваемых файлов и каталогов.
#!/bin/bash
umask 027
touch file1
mkdir dir1  
🟠Проверка прав доступа в разных ситуациях Для файлов: По умолчанию права доступа 666 минус umask. Для каталогов: По умолчанию права доступа 777 минус umask. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как организовать полный цикл CI/CD для 3 команд? - Разделить пайплайны по проектам/компонентам; - Использовать общие stages: build → test → scan → deploy; - Настроить изолированные среды (dev/test/prod); - Внедрить обратную связь (slack, email); - Хранить все артефакты централизованно; - Назначить ответственность за релиз каждой команды или централизованно через релиз-менеджера. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как происходит секьюрити тест какой алгоритм под капотом? Security-тестирование – это процесс проверки системы на уязвимости, угрозы и риски атак. Оно помогает защитить данные и сервисы от хакеров. 🚩Сканеры уязвимостей (Nessus, OpenVAS) - Загружают базу известных уязвимостей (CVE). - Проверяют систему на наличие этих уязвимостей. - Используют сигнатурный анализ (по шаблонам) и эвристический анализ (поведенческий). 🚩SQL-инъекции (SQLmap, Burp Suite) - Автоматически подставляют вредоносные SQL-запросы (' OR 1=1 --). - Проверяют, есть ли доступ к базе данных. - Выполняют дамп данных, если нашли уязвимость.
SELECT * FROM users WHERE username = 'admin' --' AND password = 'password'
🚩Поиск XSS-уязвимостей (DOM-XSS, Stored-XSS, Reflected-XSS) - Вставляют вредоносный JavaScript-код в форму ввода. - Если скрипт исполняется в браузере – уязвимость найдена.
<script>alert('XSS!')</script>
🚩Подбор паролей (Brute Force, Dictionary Attack) - Пробуют тысячи вариантов паролей (rockyou.txt). - Используют John the Ripper, Hydra, Hashcat.
hydra -l admin -P passwords.txt 192.168.1.1 ssh
🚩Анализ трафика (MITM, Sniffing, Packet Analysis) Захватывают пакеты сети (tcpdump, Wireshark). Ищут передаваемые пароли, сессии, токены. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие утилиты для редактирования текста "на лету"? "На лету" — это значит без открытия интерактивного редактора. Вот популярные утилиты: - sed — потоковый редактор, отлично подходит для замены, удаления строк и подстановки. - awk — обработка и изменение строк и столбцов в текстах. - perl -p -i — редактирование файлов прямо в командной строке. - ed — минималистичный текстовый редактор, работает через команды. - ex — командный режим vi. - Также echo, cut, tr, paste — для простых трансформаций. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужен стейт в Terraform? Файл terraform.tfstate хранит текущее состояние инфраструктуры. Он нужен, чтобы Terraform знал, какие ресурсы уже существуют, и мог правильно управлять изменениями. 🟠Отслеживание ресурсов Terraform использует tfstate, чтобы сопоставлять код с реальными ресурсами. В коде создаем виртуальную машину
hcl  
   resource "aws_instance" "example" {  
     ami           = "ami-123456"  
     instance_type = "t2.micro"  
   }  
Запускаем terraform apply, создается сервер в AWS В terraform.tfstate записывается информация об этом ресурсе При следующем terraform apply Terraform сверяет tfstate с реальными ресурсами и вносит только изменения 🟠Управление зависимостями Когда ресурсы связаны (например, сервер и security group), Terraform понимает связи через tfstate и удаляет ресурсы в правильном порядке 🟠Работа в команде (`remote state`) Когда несколько разработчиков работают с Terraform, tfstate должен храниться в общем месте, например - S3 + DynamoDB (AWS) - Terraform Cloud - GCS + Firestore (GCP) - Azure Storage + CosmosDB (Azure)
hcl  
terraform {  
  backend "s3" {  
    bucket         = "my-terraform-state"  
    key            = "prod/terraform.tfstate"  
    region         = "us-east-1"  
    encrypt        = true  
    dynamodb_table = "terraform-lock"  
  }  
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Когда ты разворачиваешь стандартный кластер Kubernetes, что делает твой namespace? При развёртывании кластера создаются стандартные namespaces: default для объектов по умолчанию, kube-system для компонентов Kubernetes, kube-public для общедоступных ресурсов и kube-node-lease для управления состоянием узлов. Они помогают разделить ресурсы и организовать кластер. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое debezium? Она позволяет отслеживать изменения в базах данных (INSERT, UPDATE, DELETE) в реальном времени и передавать их в Kafka, Elasticsearch, MongoDB и другие системы. 🚩Как работает Debezium? Подключается к базе данных (PostgreSQL, MySQL, MongoDB, Oracle и др.). Слушает лог изменений (binlog, WAL, oplog и т. д.) Формирует события в формате JSON Передаёт их в Kafka или другую шину данных. 🚩Где используется? Синхронизация данных между базами Репликация данных в реальном времени Отправка изменений в аналитические системы (Elasticsearch, ClickHouse) Аудит и логирование изменений 🟠Пример работы с Kafka Запускаем Debezium Connector для PostgreSQL*
{
  "name": "inventory-connector",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "localhost",
    "database.port": "5432",
    "database.user": "debezium",
    "database.password": "dbz",
    "database.dbname": "inventory",
    "database.server.name": "dbserver1"
  }
}
При изменении данных в таблице, Kafka получит событие:
{
  "schema": { ... },
  "payload": {
    "before": { "id": 1, "name": "Old Name" },
    "after": { "id": 1, "name": "New Name" },
    "op": "u"  // Update
  }
}
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что означают DNS records? DNS Records – это записи, которые управляют маршрутизацией домена в интернете. Они определяют, куда направлять запросы, какие IP-адреса использовать и какие сервисы подключены к домену. 🚩Примеры использования A-запись (IP-адрес домена)
example.com.   IN  A   192.168.1.1
CNAME-запись (псевдоним)
www.example.com.  IN  CNAME  example.com.
MX-запись (почтовый сервер)
example.com.  IN  MX  10 mail.example.com.
TXT-запись (SPF, верификация)
example.com.  IN  TXT  "v=spf1 include:_spf.google.com ~all"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как готовиться к собеседованию? - Пройтись по теории (OS, сети, DevOps-инструменты); - Подготовить краткое описание опыта и проектов; - Решить технические задачи (CI/CD, Terraform, Docker); - Прогнать вопросы по soft skills и кейсы; - Отдохнуть перед интервью и не бояться признать, если что-то не знаешь. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как примонтировать диск? Чтобы использовать новый диск в Linux, его нужно разметить, создать файловую систему и примонтировать. 🚩Разметить диск (`fdisk`) Запустить fdisk для диска sdb
sudo fdisk /dev/sdb
🚩Создать файловую систему (`mkfs`) Форматировать раздел в ext4
sudo mkfs.ext4 /dev/sdb1
Если нужен xfs
sudo mkfs.xfs /dev/sdb1
🚩Автоматическое монтирование при загрузке (`/etc/fstab`) Найти UUID диска
blkid /dev/sdb1
Вывод
/dev/sdb1: UUID="12345678-abcd-1234-efgh-56789abcdef0" TYPE="ext4"
Добавить в /etc/fstab
echo 'UUID=12345678-abcd-1234-efgh-56789abcdef0 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
Применить изменения
sudo mount -a
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как и где посмотреть логи какого-нибудь сервиса? 1. Если сервис использует systemd, логи можно посмотреть через journalctl -u <имя_сервиса>. 2. Для Nginx, Apache и других приложений логи находятся в /var/log/ или в директории, указанной в конфигурации сервиса. 3. Используйте команды tail, less или cat для просмотра логов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Это ваше приглашение на Deckhouse User Community meetup #4 Кому: инженерам, которые работают с Kubernetes Когда: 26 февраля Г
Это ваше приглашение на Deckhouse User Community meetup #4 Кому: инженерам, которые работают с Kubernetes Когда: 26 февраля Где: Москва, офлайн На митапе узнаете о запуске Kubernetes поверх любых операционных систем, о реальном опыте эксплуатации платформы в одиночку, о домашней виртуализации на бюджетном железе и о практичном подходе к безопасности. Киллер-фича события — интерактивная зона «Попробуй сам» с развёрнутым кластером Deckhouse Kubernetes Platform Community Edition. Протестируйте платформу своими руками, а инженеры Deckhouse помогут разобраться. Регистрация

🤔 Удалил файлы, но место не очищается, в чем дело? Если вы удалили файлы, но место на диске не освободилось, это может происходить по нескольким причинам. 🚩Файл все еще используется процессом Если файл удален, но он открыт каким-либо процессом, его содержимое остается в памяти или файловой системе до завершения работы этого процесса. Это называется "удаление с дескриптором". 🟠Как проверить: Используйте команду lsof (list open files), чтобы найти процессы, удерживающие файл
lsof | grep deleted
🟠Как исправить Перезапустите процесс или завершите его с помощью kill:
kill -9 <PID>
🚩Файл удален, но он находился в другом файловом пространстве Например: - Файл был удален внутри Docker-контейнера, но место занято в образе. - Файл находился на смонтированном диске, и удаление произошло в другом контексте. 🟠Как проверить Убедитесь, что вы работаете в правильной файловой системе:
df -h
🟠Как исправить Убедитесь, что удаление происходит в нужной директории или файловой системе. 🚩Файл был удален из директории, но находится в другой ссылке (hard link) Если файл имеет несколько жестких ссылок, удаление одного из них не освободит место до тех пор, пока не удалены все ссылки. 🟠Как проверить Используйте команду find, чтобы найти оставшиеся ссылки:
find / -samefile <имя_файла>
🟠Как исправить Удалите все ссылки на файл. 🚩Файл был удален, но находился в файловой системе с квотой Если используется файловая система с ограничением (например, квоты пользователей или групп), возможно, квота пользователя исчерпана, и это мешает очистке. 🟠Как проверить Проверьте квоты:
quota -u <username>
🟠Как исправить Убедитесь, что квоты настроены правильно, или освободите больше места. 🚩Кэшированные данные или временные файлы Иногда удаленные файлы остаются в виде кэша, временных данных или не удаляются из корзины. 🟠Как проверить Очистите кэш или проверьте корзину. Например, для очистки временных файлов
sudo du -sh /tmp
sudo rm -rf /tmp/*
🟠Как исправить Удалите временные файлы, очистите кэш:
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
Ставь 👍 и забирай 📚 Базу знаний

Нужны актуальные вопросы с собеседований ? DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям.
Нужны актуальные вопросы с собеседований ? DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям. 🔊Обзоры собеседований c вилками на позиции: 🔵DevOps инженеров (Junior, Middle, Senior). 🔵С комментариями автора, как человека, который активно собеседует кандидатов. 🔊В ближайшее время: 🔵Записи реальных собеседований (не моки и открытые собеседования). 🔵Гайды и рекомендации по обходу частых ошибок при выступлении на техническом интервью. ➡️ Подписаться

🤔 Какие методы HTTP есть? - GET — получить данные. - POST — отправить (создать) данные. - PUT — заменить данные. - PATCH — частичное обновление. - DELETE — удалить. - HEAD, OPTIONS, TRACE — вспомогательные методы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний