DevOps | Вопросы собесов
5.2K subscribers
29 photos
818 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Каким бы образом организовали дистрибуцию нескольких ролей на Ansible в банковском секторе?

Для дистрибуции ролей в банковском секторе важно учитывать стандарты безопасности и централизованное управление конфигурациями. Роли можно распределять по окружениям (dev, staging, prod) с использованием динамических инвентаризаций. Каждая роль должна быть изолирована, иметь чёткие зависимости и документацию для поддержки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52👾2
Forwarded from easyoffer
Ищу работу пол года

Практически под каждым постом в этом канале я вижу комментарии от людей, которые ищут работу по полгода. Это перерастает в обсуждение того, как нужно (или не нужно) искать работу, почему процесс найма сломан и как они откликались на фейковые вакансии.

Честно говоря, искать работу полгода — это нонсенс. Очевидно, что человек делает что-то не так. Главная ошибка, которую совершают многие, — это создание иллюзии поиска работы.

То есть человек вроде бы ищет работу, но делает это неэффективно, тратя время на нецелевые действия. Например:

Просматривает вакансии перед откликом.
Пытается понять, подходит ли он под вакансию. Если считает, что не подходит — не откликается.
Пишет сопроводительные письма (иногда даже уникальные под каждую вакансию).
Заполняет анкеты, проходит тесты.

Все эти действия отнимают время, но не приводят к результату.

Почему это не работает?

HR-менеджер не может вручную отсмотреть 2000 откликов, оценить каждое резюме и прочитать сопроводительные письма. Поэтому компании используют ATS-системы (системы автоматического подбора), которые анализируют резюме и определяют процент его соответствия вакансии.

Что делать, чтобы повысить шансы?

1️⃣ Добавить ключевые навыки в резюме — и в основной текст, и в теги. Возьмите их с easyoffer.ru

2️⃣ Убрать нерелевантный опыт, оставить только подходящий.

3️⃣ Оформить опыт так, чтобы он выглядел релевантным. Если у вас его нет, укажите проекты, стажировки или другой опыт, который можно представить как работу от 1 года. Если опыт слишком большой, сузьте его до 6 лет.

4️⃣ Откликаться на все вакансии без разбору. Если вы Junior, не ищите только стажер или Junior-вакансии — пробуйте везде. Не отказывайте себе сами, пусть это решит HR

5️⃣ Сделать резюме публичным, потому что HR-менеджеры часто ищут кандидатов не только среди откликов, но и в базе резюме.

6️⃣ Используйте ИИ по минимуму – ATS-системы считывают это и помечают "сгенерировано ИИ"

‼️ Главное правило: чем больше откликов — тем выше шанс получить оффер. Делайте резюме удобным для ATS-систем, и вас заметят.

1. Посмотрите видео о том как я вывел свою резюме в Топ1 на HH
2. Посмотрите видео как я нашел первую работу
3. Прочитайте этот кейс про оптимизацию резюме

Если прям вообще тяжело.

Создайте несколько разных резюме. Создайте 2, 3 да хоть 10 резюме. Настройте авто-отлики и ждите приглашения на собесы.

Не нужно создавать иллюзию поиска работы, сделайте несколько простых и актуальных действий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😁4🔥2
🤔 Что такое basic auth?

Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.

🟠Как работает Basic Auth?
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:

   HTTP/1.1 401 Unauthorized  
WWW-Authenticate: Basic realm="Restricted Area"


Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:

   Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=


🟠Пример запроса с Basic Auth
В curl
curl -u username:password http://example.com/protected


В Python (requests):
import requests
from requests.auth import HTTPBasicAuth

response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)


В JavaScript (fetch):
fetch("http://example.com/protected", {
headers: {
"Authorization": "Basic " + btoa("username:password")
}
})
.then(response => response.text())
.then(data => console.log(data));


🚩Минусы

Не безопасен без HTTPS
данные передаются в открытом виде (Base64 — это не шифрование!).
Логин и пароль передаются в каждом запросе
что делает систему уязвимой.
Нет механизма разлогинивания
браузеры кэшируют креды, и их сложно сбросить.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🤔 Как версионировать несколько ролей на Ansible в банковском секторе?

Версионирование ролей осуществляется через Git, используя теги для указания стабильных версий. Можно создать отдельные репозитории для каждой роли либо хранить их в монорепозитории, где каждая роль имеет свой файл версионирования. Также целесообразно использовать Ansible Galaxy для удобства управления.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👀5🔥3🤔2👍1
🤔 Для чего используется 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;


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 В чём главное отличие Docker Swarm от Kubernetes?

Это встроенная в Docker система оркестрации контейнеров, упрощённая и быстрая в настройке. Kubernetes, в свою очередь, предоставляет более мощные функции, такие как автоскейлинг, управление состоянием приложений, мониторинг и более сложная система работы с ресурсами.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤔1
🤔 Как посмотреть размер папки на диске?

Для того чтобы узнать размер папки на диске, можно воспользоваться различными методами в зависимости от операционной системы. Вот несколько способов для наиболее распространённых ОС:

🚩Windows

🟠Использование проводника (Explorer)
Откройте Проводник Windows.
Наведите на папку, размер которой вы хотите узнать.
Кликните правой кнопкой мыши и выберите "Свойства".
В открывшемся окне "Свойства" вы увидите размер папки в разделе "Размер".

🟠Использование командной строки
Откройте командную строку (Cmd) или PowerShell.
Введите следующую команду, заменив ПутьКПапке на путь к интересующей вас папке:
du -sh ПутьКПапке   


Для PowerShell можно использовать
      Get-ChildItem ПутьКПапке -Recurse | Measure-Object -Property Length -Sum


🚩macOS и Linux

Использование терминала
Откройте терминал.
Введите команду du, чтобы узнать размер папки. Вот пример команды, которая показывает размер папки в читаемом виде (суммарный размер всех файлов)
du -sh /путь/к/папке   


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Как в Docker Swarm делать автоскейлинг и возможно ли это?

Автоскейлинг в Docker Swarm отсутствует на уровне платформы. Его можно реализовать с помощью внешних инструментов, таких как Docker API, скрипты или сторонние решения для мониторинга нагрузки и автоматического увеличения количества реплик.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Какой инструмент нам может помочь в снятии метрик с продукта?

Если вам нужно собирать метрики (нагрузка, ошибки, задержки, бизнес-показатели) с вашего продукта, то вот лучшие инструменты

🟠Prometheus + Grafana
Prometheus – база данных временных рядов (time-series DB) для хранения метрик.
Grafana – мощная визуализация метрик.
Метрики собираются экспортерами (node_exporter, blackbox_exporter и т. д.).
Данные хранятся в Prometheus.
Grafana показывает красивые графики.
rate(http_requests_total[5m])  # Запросы в секунду за 5 минут


🟠Zabbix
Устанавливается агент на сервер (zabbix-agent). Сервер собирает метрики и генерирует алерты.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Что будет, если остановить Docker контейнер, данные пропадут или нет?

Если данные хранятся в монтированных volume, они сохраняются, даже если контейнер остановлен. Если данные находятся внутри контейнера, они будут потеряны после удаления контейнера.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Как дебажить поды в Kubernetes?

Когда под (Pod) не работает или ведёт себя странно, нужно уметь его дебажить.

🟠Проверить статус пода
Сначала смотрим, работает ли под вообще
kubectl get pods


🟠Посмотреть логи контейнера
Если под запустился, но работает странно, смотрим логи:
kubectl logs pod-name


Если в поде несколько контейнеров:
kubectl logs pod-name -c container-name

Если под перезапускается, а нам нужны старые логи:
kubectl logs pod-name --previous


🟠Проверить события (`describe`)
Смотрим подробную информацию о поде:
kubectl describe pod pod-name


🟠Зайти внутрь контейнера (`exec`)
Если под запущен, можно подключиться внутрь и посмотреть файлы, процессы:
kubectl exec -it pod-name -- /bin/sh


Если в контейнере есть только bash:
kubectl exec -it pod-name -- /bin/bash


Полезные команды внутри контейнера:
ps aux           # Смотрим запущенные процессы  
netstat -tulnp # Проверяем открытые порты
env # Проверяем переменные окружения
cat /etc/resolv.conf # Проверяем DNS


🟠Проверить манифест пода (`get pod -o yaml`)
Если под ведёт себя странно, можно посмотреть его полное описание:
kubectl get pod pod-name -o yaml


🟠Проверить ресурсы (describe node)
Иногда под не запускается из-за нехватки CPU или памяти. Проверяем узел (node):
kubectl describe node node-name


Если проблема с ресурсами, будет что-то вроде:
Warning  FailedScheduling  insufficient memory


🟠Проверить сеть (`nslookup`, `ping`, `curl`)
Если под не может достучаться до сервиса, тестируем сеть:
kubectl exec -it pod-name -- nslookup service-name
kubectl exec -it pod-name -- ping 8.8.8.8
kubectl exec -it pod-name -- curl http://service-name:8080


🟠Дебажить с помощью `kubectl debug` (Kubernetes 1.23+)
Если под не стартует, можно запустить дебажный контейнер
kubectl debug pod-name -it --image=busybox


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 Как реализовать логику CI/CD при работе с Git Flow?

В Git Flow для каждой ветки (feature, develop, release, hotfix) можно настроить отдельные CI/CD pipeline. Например, для ветки develop автоматизируется сборка и тестирование, а для release — развёртывание на staging.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что означают 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"


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
🤔 Как обозначить вэлью Git Flow для бизнеса?

Git Flow помогает минимизировать риски внедрения изменений, улучшить процесс разработки и стандартизировать релизный цикл. Это снижает вероятность ошибок и ускоряет вывод новых функций.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
🤔 Как linux выбирает, какой из процессов завершить?

Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.

🚩Как работает OOM Killer?

🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).

🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.

🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.

🚩Пример расчета OOM Score

🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)

🚩Настройка OOM Killer

Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге /proc. Например, для изменения приоритета процесса:
echo -1000 > /proc/<PID>/oom_score_adj


🚩Логирование и мониторинг

При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно /var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Насколько плотно приходится взаимодействовать с туллингом разработки (Maven, Gradle)?

Maven и Gradle используются для управления зависимостями, сборки проектов и настройки CI/CD pipeline. Уровень взаимодействия зависит от проекта, но обычно включает настройку профилей, управление плагинами и оптимизацию процесса сборки.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Какая самая главная питоновская библиотека?

Она идёт в комплекте с Python и включает всё необходимое: работу с файлами, сетью, регулярными выражениями, математикой и т. д.

🚩Примеры важных модулей из `stdlib`

🟠`os`
работа с файловой системой
🟠`sys`
доступ к системным параметрам
🟠`re`
регулярные выражения
🟠`math`
математика
🟠`datetime`
работа с датами
🟠`json`
парсинг JSON
🟠`logging`
логирование
🟠`asyncio`
асинхронность
🟠`http.server`
встроенный HTTP-сервер

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 LA10 — это хорошо или плохо?

LA10 (Load Average за 10 минут) отражает среднюю загрузку системы. Если LA10 меньше или равно количеству ядер, система справляется, если больше — это признак перегрузки.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5
🤔 Есть 1000 разработчиков, каждый создал по 1-2 уникальному приложению, как это все масштабировать?

Если у вас 1000 разработчиков и 2000 сервисов, то без автоматизации не обойтись.

🟠 Kubernetes для контейнеров
Организация:
Каждое приложение → отдельный Pod.
Namespaces → для команд и сред (dev, stage, prod).
Helm → для удобного управления.

Манифест деплоя
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-registry.com/my-app:v1


🟠CI/CD для автоматического деплоя
Инструменты: GitLab CI/CD, ArgoCD
stages:
- build
- deploy

build:
script:
- docker build -t my-registry.com/my-app:$CI_COMMIT_SHA .
- docker push my-registry.com/my-app:$CI_COMMIT_SHA

deploy:
script:
- kubectl set image deployment/my-app my-app=my-registry.com/my-app:$CI_COMMIT_SHA


🟠Мониторинг и логирование
Prometheus + Grafana → метрики, алерты
Loki / ELK (Elasticsearch + Kibana) → логи
Запрос ошибок API:
rate(http_requests_total{status="500"}[5m])


🟠Автоматическое масштабирование
Горизонтальный автоскейлинг (HPA)
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
minReplicas: 3
maxReplicas: 10
targetCPUUtilizationPercentage: 70


🟠Service Mesh (Istio) для управления трафиком
Разделение нагрузки между версиями:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
spec:
hosts:
- my-app.example.com
http:
- route:
- destination:
host: my-app
subset: v1
weight: 80
- destination:
host: my-app
subset: v2
weight: 20


🟠Безопасность (RBAC, Network Policies)
Ограничение доступа разработчиков:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dev-access
subjects:
- kind: User
name: dev-user
roleRef:
kind: Role
name: read-only
apiGroup: rbac.authorization.k8s.io


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🤔 Как версионировать плейбуки, если они в одной монорепе?

Используйте ветки или теги в Git для управления версиями плейбуков. Для сложных случаев можно настроить CI/CD pipeline, который будет проверять совместимость изменений.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2