Найти в Дзене
AERONYTE

DevOps-шпаргалка для подготовки к собеседованиям в Яндекс и VK

Готовишься к собеседованию в Яндекс, VK, Сбер или другой IT-компании? Тогда тебе нужна не просто справка по Linux, а практичная и жёстко отобранная шпаргалка, чтобы пройти техническое интервью с первого раза. В этой статье — команды, которые реально задают в вопросах по Linux, Bash, Git, Docker, Kubernetes и безопасности. Всё чётко, по делу и на senior-уровне. Эта шпаргалка создана для тех, кто хочет уверенно пройти DevOps собеседование на позицию в топовых компаниях России. Подходит как для повторения перед собеседованием, так и для подготовки к тестам. Команды, советы, подводные камни, безопасные удаления и что на самом деле спрашивают на интервью — всё в одном месте. 🧪 Часто спрашивают: Как быстро вернуться назад в предыдущую директорию? Чем отличается ls -l от ls -a? 🧪 Часто спрашивают: Как удалить все .pyc файлы во всей директории? Как скопировать каталог и переименовать его? 🧪 Часто спрашивают: Как найти и удалить все пустые каталоги? Как найти строку в нескольких файлах
Оглавление

Вступление

Готовишься к собеседованию в Яндекс, VK, Сбер или другой IT-компании?

Тогда тебе нужна не просто справка по Linux, а практичная и жёстко отобранная шпаргалка, чтобы пройти техническое интервью с первого раза.

В этой статье — команды, которые реально задают в вопросах по Linux, Bash, Git, Docker, Kubernetes и безопасности. Всё чётко, по делу и на senior-уровне.

Описание поста

Эта шпаргалка создана для тех, кто хочет уверенно пройти DevOps собеседование на позицию в топовых компаниях России.

Подходит как для повторения перед собеседованием, так и для подготовки к тестам.

Команды, советы, подводные камни, безопасные удаления и что на самом деле спрашивают на интервью — всё в одном месте.

💡 DevOps - Шпаргалка

1. Основы Linux и Bash (для собеседований)

📁 Навигация по файловой системе

  • pwd — показать текущую директорию (Print Working Directory)
  • cd — сменить директорию
  • cd .. — на уровень вверх
  • cd ~ или просто cd — в домашнюю директорию
  • cd / — в корень системы
  • cd - — вернуться в предыдущую директорию
  • ls — вывести список файлов
  • ls -l — в виде таблицы
  • ls -a — с учётом скрытых файлов
  • ls -alt — по дате изменения, включая скрытые файлы
  • realpath файл — показать абсолютный путь до файла
  • basename путь — имя файла из пути
  • dirname путь — директория из пути
🧪 Часто спрашивают:
Как быстро вернуться назад в предыдущую директорию?
Чем отличается ls -l от ls -a?

🗂 Работа с файлами и папками

  • mkdir имя — создать папку
  • mkdir -p a/b/c — создать вложенные директории
  • rmdir имя — удалить пустую папку
  • rm -r имя — удалить папку с содержимым (ОПАСНО)
  • rm -rf имя — удалить без подтверждения (только если понимаешь, что делаешь)
  • touch файл — создать пустой файл
  • cp исходный целевой — скопировать файл
  • cp -r папка1 папка2 — рекурсивно папку
  • mv имя1 имя2 — переименовать/переместить
  • rm файл — удалить файл
  • rm -i файл — с подтверждением удаления
  • tee файл — записать вывод команды в файл и в терминал одновременно
🧪 Часто спрашивают:
Как удалить все .pyc файлы во всей директории?
Как скопировать каталог и переименовать его?

📄 Работа с содержимым файлов

  • cat файл — вывести содержимое
  • less файл — постраничный просмотр (q — выход)
  • head -n 10 файл — первые строки
  • tail -n 10 файл — последние строки
  • wc -l файл — количество строк в файле
  • cut -d':' -f1 файл — вырезать поля

🔍 Поиск и фильтрация

  • find . -name '*.py' — найти все .py файлы
  • find . -type f -name '*.log' -delete — удалить все .log файлы
  • grep 'слово' файл — поиск строк по шаблону
  • grep -r 'main()' . — рекурсивный поиск
  • xargs — передача аргументов команде (в связке с find/grep)
🧪 Часто спрашивают:
Как найти и удалить все пустые каталоги?
Как найти строку в нескольких файлах?

🔐 Права и доступ

  • chmod 755 файл — полный доступ владельцу, чтение другим
  • chmod +x скрипт.sh — сделать исполняемым
  • chown user:group файл — сменить владельца
  • umask — базовые права при создании новых файлов
  • stat файл — подробная информация
  • getfacl, setfacl — работа с ACL-правами

🛠️ Полезные команды

  • man команда — руководство
  • команда --help — краткая справка
  • alias ll='ls -la' — создать псевдоним
  • unalias ll — удалить псевдоним
  • which команда — путь к бинарнику
  • type команда — тип (встроенная, alias и т.п.)
  • command -v — универсальный способ узнать, где лежит команда
  • env, printenv — переменные окружения
  • export, unset — экспорт/удаление переменных
  • history, !!, !git, Ctrl+R — история команд
🧪 Часто спрашивают:
Как создать алиас, чтобы ll вызывал ls -la?
Где посмотреть переменные окружения?
⚠️ Удаление через rm и rmdir не попадает в корзину. Используй rm -i или установи trash-cli: sudo apt install trash-cli && trash-put файл

2. Git и GitHub (для собеседований)

⚙️ Базовая настройка

  • git config --global user.name "Имя Фамилия" — задать имя
  • git config --global user.email "you@example.com" — задать email
  • git config --list — проверить текущие настройки
  • git init — инициализация локального репозитория
  • git clone URL — клонировать репозиторий (HTTPS или SSH)

📄 Работа с файлами

  • git status — текущее состояние
  • git add файл — добавить файл в индекс
  • git add . / git add --all — добавить всё
  • git rm --cached файл — убрать из индекса
  • git commit -m "сообщение" — создать коммит
  • git commit --amend -m "новое сообщение" — изменить последний коммит

🚀 Работа с удалённым репозиторием

  • git remote -v — список подключений
  • git push — отправить в origin по умолчанию
  • git push -u origin ветка — задать ветку по умолчанию
  • git pull — получить изменения
  • git pull --rebase — получить изменения с rebase вместо merge
  • git fetch — только забрать изменения

🌿 Ветвление и слияние

  • git branch — список локальных веток
  • git checkout -b имя — создать и перейти в ветку
  • git switch имя — перейти (современный способ)
  • git merge ветка — влить ветку в текущую
  • git rebase ветка — перенести текущую ветку поверх указанной
  • git mergetool — помощь в разрешении конфликтов (при наличии GUI-инструментов)

🧠 Работа с историей

  • git log --oneline — краткий журнал коммитов
  • git log --graph --oneline --all — визуализация истории
  • git show <hash> — подробности коммита
  • git diff — различия между коммитами/файлами
  • git reflog — локальная история HEAD (даже после reset)
  • git blame файл — кто последний редактировал строки файла
  • git tag v1.0 — создать тег
  • git push origin v1.0 — отправить тег
  • git tag -d v1.0 — удалить локальный тег

🧰 Устранение проблем и откаты

  • git reset --soft HEAD~1 — откатить коммит (оставить изменения)
  • git reset --hard HEAD~1 — откатить и удалить изменения (опасно)
  • git revert <hash> — создать коммит, отменяющий изменения
  • git cherry-pick <hash> — перенести один коммит в текущую ветку

💼 Stash и рабочие процессы

  • git stash — временно сохранить изменения
  • git stash list — список сохранённых состояний
  • git stash apply — применить без удаления из stash
  • git stash pop — применить и удалить из stash

📘 Термины и указатели

  • HEAD — текущий коммит, на который указывает рабочая директория
  • HEAD~1 — предыдущий коммит
  • origin/ветка — последняя известная копия ветки на сервере
  • FETCH_HEAD — результат последнего fetch

🧪 Часто спрашивают на собеседованиях:

В чём разница между merge и rebase?
Как отменить последний коммит без потери изменений?
Как работать с конфликтами при слиянии?
Что такое HEAD и origin/main?
Как вытащить конкретный коммит из другой ветки?
Что делать при ошибке push? Как отменить push?
Как найти коммит, в котором была удалена строка или файл?
Что такое detached HEAD и чем он опасен?
⚠️ Используй git status, git log, git diff и git reflog перед каждым push, merge или reset — это спасёт тебя и команду от многих проблем.

3. Docker (для собеседований)

🐳 Основы работы с контейнерами

  • docker --version — проверка установленной версии
  • docker run hello-world — первый тестовый запуск
  • docker ps -a — список всех контейнеров
  • docker images — список локальных образов
  • docker start/stop/restart <id|name> — управление контейнерами
  • docker rm <id|name> — удалить контейнер
  • docker rmi <image> — удалить образ

🧱 Образы и Dockerfile

  • docker build -t имя_образа . — сборка образа из Dockerfile
  • Основные инструкции Dockerfile:
  • FROM, RUN, COPY, WORKDIR, EXPOSE, CMD, ENTRYPOINT
  • .dockerignore — исключения из сборки (аналог .gitignore)

🌐 Сеть, тома, переменные

  • docker run -p 8000:80 имя — проброс порта
  • docker run -e VAR=value — переменные окружения
  • docker volume ls / docker volume rm — работа с томами

🛠 Интерактив и дебаг

  • docker exec -it <id> bash — доступ внутрь контейнера
  • docker logs <id> — логи контейнера
  • docker inspect <id> — низкоуровневая информация
  • docker diff <id> — что изменилось внутри

📦 Docker Compose

  • docker-compose up -d — запустить в фоне
  • docker-compose down — остановить и удалить
  • docker-compose logs / exec — взаимодействие с сервисами

🧪 Часто спрашивают на собеседованиях:

Чем отличается CMD от ENTRYPOINT?
Что произойдёт, если в контейнере упал основной процесс?
Как пробросить несколько портов и томов?
Как уменьшить размер образа?
Что делает флаг --rm при docker run?
Как обновить контейнер без потери данных?
⚠️ Используй alpine или distroless образы, чтобы уменьшить размер и повестку безопасности. Всегда читай docker inspect перед деплоем в прод.

4. CI/CD (GitHub Actions и GitLab CI для собеседований)

🔁 Основы CI/CD

  • CI (Continuous Integration) — автоматическая сборка и проверка кода при каждом изменении
  • CD (Continuous Delivery/Deployment) — автоматическая доставка на сервер или в продакшн

📦 GitHub Actions

  • Конфигурация: .github/workflows/имя.yml
  • Структура:
-2

  • Полезные шаги:
  • actions/setup-python@v4
  • actions/cache@v3
  • docker/build-push-action@v5

🦊 GitLab CI

  • Конфигурация: .gitlab-ci.yml
  • Структура:
-3

⚙️ Переменные окружения и секреты

  • GitHub: Settings → Secrets → Actions
  • GitLab: Settings → CI/CD → Variables

🧪 Часто спрашивают на собеседованиях:

Чем отличается run от uses?
Как прокэшировать зависимости между сборками?
Как безопасно хранить секреты?
Как задеплоить в Kubernetes через GitLab CI?
Как реализовать build matrix?
Что такое артефакты и как их использовать?
⚠️ В CI/CD важно следить за безопасностью: никогда не хардкодь токены, не логируй секреты. Используй переменные окружения и внешние vault-системы.

5. Kubernetes (K8s для собеседований)

☸️ Основы

  • kubectl version — версии клиента и сервера
  • kubectl cluster-info — информация о кластере
  • kubectl get nodes/pods/services — список ресурсов
  • kubectl describe pod имя — подробности по поду
  • kubectl logs pod — логи пода
  • kubectl exec -it pod -- bash — доступ внутрь контейнера

📦 Применение манифестов

  • kubectl apply -f файл.yaml — применить конфигурацию
  • kubectl delete -f файл.yaml — удалить ресурс
  • kubectl get all -n имя_неймспейса — все ресурсы в namespace

📁 Основные объекты K8s

  • Pod — минимальная единица исполнения
  • Deployment — управляет созданием и масштабированием pod'ов
  • Service — предоставляет доступ к Pod'ам (ClusterIP, NodePort, LoadBalancer)
  • ConfigMap и Secret — конфигурация и чувствительные данные
  • Volume и PersistentVolumeClaim — хранилище данных

🔄 Обновления и масштабирование

  • kubectl scale deployment имя --replicas=3 — масштабирование
  • kubectl rollout restart deployment имя — перезапуск
  • kubectl rollout undo deployment имя — откат
  • kubectl rollout status deployment имя — статус обновления

🧪 Часто спрашивают на собеседованиях:

Что такое Pod и чем он отличается от Deployment?
Чем отличается ConfigMap от Secret?
Что произойдёт при удалении пода вручную?
Как происходит взаимодействие Service с Pod?
Как организовать zero-downtime деплой?
Как обновить секрет без рестарта подов?
⚠️ На проде не изменяй ресурсы руками через kubectl edit, используй apply через gitops или CI/CD пайплайн. Следи за статусом rollout и логами событий: kubectl get events

6. Мониторинг и логи (для собеседований)

📈 Основные инструменты мониторинга

  • Prometheus — сбор метрик (pull-модель)
  • prometheus.yml — конфигурация целей
  • Метрики: node_exporter, cadvisor, blackbox_exporter
  • curl http://localhost:9090/metrics — ручная проверка
  • Grafana — визуализация метрик
  • Dashboards (JSON-конфигурации)
  • Подключение источников: Prometheus, Loki, PostgreSQL
  • Alerts: rule-based оповещения
  • Alertmanager — маршрутизация алертов из Prometheus
  • Поддерживает email, Slack, Telegram, Webhook и др.

📄 Работа с логами

  • journalctl -xe — просмотр системных логов
  • docker logs контейнер — логи контейнера
  • kubectl logs pod — логи пода
  • tail -f лог — просмотр последних строк лога в реальном времени
  • logrotate — автоматическая ротация и архивирование логов

🧪 Стек Loki + Promtail + Grafana

  • Loki — лог-агрегатор от Grafana Labs (аналог ELK, но без Elasticsearch)
  • Promtail — агент для сбора логов и отправки в Loki
  • Преимущества: дешёвое хранение, встроенная интеграция с Grafana, PromQL-подобный язык запросов

🧠 Альтернативы и дополнения

  • ELK Stack: Elasticsearch + Logstash + Kibana
  • Fluent Bit / Fluentd — прокси для логов
  • Vector.dev — лёгкий агент логирования и трансформаций

🧪 Часто спрашивают на собеседованиях:

Чем отличаются метрики от логов?
В чём разница push и pull модели мониторинга?
Как настроить алерты в Grafana или Prometheus?
Как посмотреть логи приложения в Kubernetes?
Что выбрать: Loki или ELK? Почему?
⚠️ Хороший мониторинг — это не только графики, но и оповещения. Без Alertmanager или Telegram-бота DevOps узнаёт о падении сервиса последним.

7. Безопасность DevOps-инфраструктуры (для собеседований)

🔐 SSH и удалённый доступ

  • ssh-keygen — генерация ключей (id_rsa / id_ed25519)
  • ssh-copy-id user@host — копирование публичного ключа на сервер
  • chmod 600 ~/.ssh/id_rsa — защита приватного ключа
  • ~/.ssh/config — удобная настройка алиасов для хостов
  • Fail2ban — защита от brute-force атак по SSH

🛡️ Права и ограничения

  • chmod, chown, umask — управление доступами
  • sudo, /etc/sudoers, visudo — управление правами root-доступа
  • setfacl, getfacl — расширенные списки прав (ACL)
  • Ограничение команд через rbash, chroot, AppArmor, SELinux

🧱 Секреты и переменные окружения

  • .env файлы — использовать вместе с dotenv или переменными окружения
  • Хранение секретов:
  • GitHub Secrets
  • GitLab CI/CD Variables
  • AWS Secrets Manager / HashiCorp Vault / Yandex Lockbox
  • Никогда не хардкодь токены/ключи в Git-репозитории

🔐 Сетевые уровни защиты

  • ufw, iptables, firewalld — настройка файрвола
  • VPN (WireGuard / OpenVPN) для закрытых окружений
  • Разделение доступа: bastion-хосты, jump-сервера

🔍 Безопасность в CI/CD

  • Не логируй секреты (используй ::add-mask:: в GitHub Actions)
  • Используй read-only токены
  • Подпись коммитов: git commit -S + GPG
  • Проверяй зависимости: snyk, trivy, grype, pip-audit

🧪 Часто спрашивают на собеседованиях:

Как ограничить доступ к продакшн-секретам?
Что такое SSH agent forwarding и чем он опасен?
Как ограничить права пользователя при запуске CI Job?
Как проверить, не утекают ли секреты в Git?
Как выбрать между Vault, KMS, .env?
⚠️ Безопасность — не фича, а настройка по умолчанию. Всё, что может быть скомпрометировано, будет. Автоматизируй аудит, не доверяй по умолчанию, логируй доступы и контролируй границы.

🏁 Заключение:

Если эта статья окажется полезной и наберёт просмотры, я подготовлю серию продолжений, предлагайте темы и ваши идеи.

📌 Подписывайся, чтобы не пропустить.