DevOps | Вопросы собесов
前往频道在 Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+2P7cpjeyfDVlZjcy Вакансии t.me/+i5KFWEWJ21hhYWEy
显示更多5 511
订阅者
-224 小时
-47 天
-330 天
帖子存档
🤔 Как сделать отказоустойчивый кластер 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 февраля. Покупаешь сейчас один раз – пользуешься всю жизнь без лимита, включая все будущие функции.
Запланированные новые фичи на ближайшие пол года:
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 февраля
Где: Москва, офлайн
На митапе узнаете о запуске 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 | Собеседования - твой незаменимый помощник в подготовке к собеседованиям.
🔊Обзоры собеседований c вилками на позиции:
🔵DevOps инженеров (Junior, Middle, Senior).
🔵С комментариями автора, как человека, который активно собеседует кандидатов.
🔊В ближайшее время:
🔵Записи реальных собеседований (не моки и открытые собеседования).
🔵Гайды и рекомендации по обходу частых ошибок при выступлении на техническом интервью.
➡️ Подписаться
🤔 Какие методы HTTP есть?
- GET — получить данные.
- POST — отправить (создать) данные.
- PUT — заменить данные.
- PATCH — частичное обновление.
- DELETE — удалить.
- HEAD, OPTIONS, TRACE — вспомогательные методы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
