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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Где хранится название файла?

Название файла хранится в записи каталога, который указывает на соответствующий inode, содержащий метаданные файла.

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

В Linux права доступа к файлам и папкам регулируются с помощью команд chmod и chown.

🟠Назначение всех прав (777)
Если вам нужно дать полный доступ ко всем файлам и папкам, используйте
chmod -R 777 /путь/к/папке

-R (recursive) — применяет права ко всем вложенным файлам и каталогам.
777 означает:
7 (чтение, запись, выполнение) для владельца
7 (чтение, запись, выполнение) для группы
7 (чтение, запись, выполнение) для всех остальных

🟠Передача владения (если нет прав)
Если текущий пользователь не владеет файлами, назначьте нового владельца
chown -R username:group /путь/к/папке

username — новый владелец
group — новая группа

🟠Лучший вариант — более безопасные права
Вместо 777 лучше дать только нужные права:
Для исполняемых файлов: chmod 755
Для конфигураций и данных: chmod 644
Для приватных ключей и чувствительных файлов: chmod 600

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

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

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

Установка Microsoft ODBC Driver for SQL Server (msodbcsql) на Astra Linux требует выполнения нескольких шагов, включая настройку репозиториев, установку необходимых пакетов и принятие лицензионного соглашения.

🟠Подготовка системы
Перед началом убедитесь, что ваша система обновлена и имеет необходимые инструменты для установки:
sudo apt update
sudo apt install -y curl apt-transport-https


🟠Добавление репозитория Microsoft
Microsoft предоставляет собственные репозитории для своих пакетов. Поскольку Astra Linux основана на Debian, мы будем использовать соответствующий репозиторий:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/debian/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list


🟠Установка msodbcsql
После добавления репозитория обновите список пакетов и установите драйвер:
sudo apt update
sudo ACCEPT_EULA=Y apt install -y msodbcsql18


🟠Установка дополнительных инструментов (опционально)
Если вам нужны инструменты командной строки, такие как sqlcmd и bcp, установите пакет mssql-tools:
sudo ACCEPT_EULA=Y apt install -y mssql-tools18


Чтобы эти инструменты были доступны из любого места в терминале, добавьте их в переменную PATH
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc


🟠Проверка установки
Убедитесь, что драйвер установлен корректно, выполнив команду:
odbcinst -q -d -n "ODBC Driver 18 for SQL Server"


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👀1
🤔 Как на этапе сборки образа передать в контейнер внешнее значение, например, Build ID, сгенерированную CI, чтобы оно там стало env?

Используйте аргументы сборки (--build-arg):
1. Укажите переменную через ARG в Dockerfile.
2. Передайте значение аргумента с помощью флага --build-arg при сборке.
Это значение можно сохранить как переменную окружения внутри контейнера.


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

Обычно хранятся в каталоге /var/log. Также многие современные дистрибутивы используют систему журналирования systemd для управления и просмотра логов.

🚩Способы просмотра

🟠Просмотр логов в /var/log
Каталог /var/log содержит логи большинства системных сервисов и приложений.

Логи системных сообщений
/var/log/syslog: Содержит общие системные логи. /var/log/messages: Содержит общие системные сообщения (не во всех дистрибутивах).
cat /var/log/syslog
less /var/log/syslog
tail -f /var/log/syslog


Логи конкретных сервисов
Apache: /var/log/apache2/ или /var/log/httpd/ Логи доступа: /var/log/apache2/access.log или /var/log/httpd/access_log Логи ошибок: /var/log/apache2/error.log или /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log


Nginx: /var/log/nginx/ Логи доступа: /var/log/nginx/access.log Логи ошибок: /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log


MySQL: /var/log/mysql/ или /var/log/mysqld.log
tail -f /var/log/mysql/error.log 


SSH: /var/log/auth.log или /var/log/secure
tail -f /var/log/auth.log 


🟠Использование `journalctl` для системных логов
journalctl — это утилита для просмотра и управления журналами systemd. Она позволяет фильтровать логи по различным критериям, таким как время, сервис и уровень логирования.

Основные команды journalctl
Просмотр всех журналов
journalctl  



Логов конкретного сервиса
journalctl -u nginx.service  


Последних логов и продолжение просмотра в реальном времени
journalctl -f
journalctl -u nginx.service -f


Логов за определённый период
journalctl --since "2024-07-25 12:00:00" --until "2024-07-25 13:00:00" 


Логов с определённым уровнем логирования
journalctl -p err
journalctl -p warning


🚩Примеры использования

🟠Просмотр логов Apache
Логи доступа
tail -f /var/log/apache2/access.log  


Логи ошибок
tail -f /var/log/apache2/error.log 


🟠Просмотр логов Nginx
Логи доступа
tail -f /var/log/nginx/access.log


Логи ошибок
tail -f /var/log/nginx/error.log  


🟠Использование `journalctl` для просмотра логов Nginx
Все логи Nginx
journalctl -u nginx.service  


Последние логи Nginx в реальном времени
journalctl -u nginx.service -f  


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

1. Публикация артефактов: Загружаем успешно протестированные образы в репозиторий Docker (например, Docker Hub).
2. Деплой: Разворачиваем приложение в тестовой, staging или production среде.
3. Мониторинг: Настраиваем мониторинг и сбор метрик для развернутых компонентов.


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

Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (main).

🟠Переключаемся на вашу текущую ветку
Допустим, вы работаете в ветке feature-branch:
git checkout feature-branch


🟠Выполняем rebase на `main`
Сначала убедимся, что main обновлена:
git checkout main
git pull origin main


Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main


🟠Разрешение конфликтов (если есть)
Если у вас есть конфликты, Git остановит процесс и попросит их решить.
Откройте файлы с конфликтами, исправьте их.
Добавьте исправленные файлы:
   git add <файл>


Продолжите rebase:
   git rebase --continue


🟠Обновление удалённого репозитория
Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Swipe right or swipe left

Что делать, если твои мэтчи в жизни не такие точные, как твой код?

Спокойно, 14 февраля в 19:00 по МСК мы разберём, как ML анализирует speed dating и предсказывает match.

📌 Мы возьмем реальные данные со speed dating.

📌 Обучим модель, которая скажет: match или swipe left.

📌 Разберём, какие признаки реально важны (спойлер: работа в IT — не прям гарантия успеха (наши маркетологи подтверждают 😥).

💡 Приходи, если хочешь прокачать свой Python, ML и, возможно, станешь идеальной парой, как самый стильные форсы.

👉 Записаться
🤔 Если запускаем приложение в контейнере, какой-то микросервис, чем будет отличаться под в данном случае?

1. Контейнер: Это единичная инстанция приложения, работающая в изолированном окружении.
2. Под: В Kubernetes под может содержать один или несколько контейнеров, которые работают вместе, делят ресурсы (например, сеть, volume) и рассматриваются как единая сущность для оркестрации.


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

Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
docker logs <container_id>


или
docker logs <container_name>


🚩Основные флаги

🟠`-f` (follow)
следить за логами в реальном времени (как tail -f):
  docker logs -f <container_id>


🟠`--tail N`
показать только последние N строк:
  docker logs --tail 100 <container_id>


🟠`-t` (timestamps)
добавить метки времени:
docker logs -t <container_id>


🚩Просмотр логов через `docker-compose`

Если контейнер запущен через docker-compose, можно использовать:
docker-compose logs -f


или для конкретного сервиса:
docker-compose logs -f <service_name>


🚩Логи для контейнера с systemd (если Docker пишет в `journald`)

journalctl -u docker -f


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

1. Настройка сервиса:
- Создайте Kubernetes Service типа NodePort или LoadBalancer.
2. Ingress:
- Настройте Ingress для маршрутизации трафика с использованием доменного имени.
3. Проброс портов:
- Используйте kubectl port-forward, чтобы связать локальный порт с портом контейнера.


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

В Python лямбда-выражение — это анонимная (безымянная) функция, создаваемая с помощью ключевого слова lambda.

Синтаксис
lambda аргументы: выражение


🚩Примеры

Простая лямбда-функция
add = lambda x, y: x + y
print(add(3, 5)) # Выведет: 8


Эквивалентно обычной функции
def add(x, y):
return x + y


Лямбда внутри map()
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, nums))
print(squares) # [1, 4, 9, 16]


Лямбда внутри sorted()
words = ["apple", "banana", "kiwi"]
sorted_words = sorted(words, key=lambda w: len(w))
print(sorted_words) # ['kiwi', 'apple', 'banana']


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Насколько плотно приходилось работать с Bamboo?

Если работали плотно:
- Настраивали пайплайны для CI/CD.
- Конфигурировали задачи для сборки, тестирования и деплоя.
- Использовали Bamboo для мониторинга состояния сборок и анализа ошибок. Если опыта мало:
- Работали с базовыми настройками и интеграцией с репозиториями.


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

Для измерения качества системы (особенно в DevOps, SRE и разработке) используют различные метрики производительности, надежности и доступности.

🚩Основные метрики качества системы

🟠Метрики "Четырёх ключевых показателей" (DORA)
Эти метрики помогают оценить эффективность процессов DevOps:
Lead Time for Changes (Время доставки изменений) — время от написания кода до его выхода в прод.
Deployment Frequency (Частота развертываний) — как часто изменения попадают в прод.
Mean Time to Restore (MTTR) (Среднее время восстановления) — как быстро исправляются инциденты.
Change Failure Rate (Процент неудачных изменений) — доля развертываний, вызывающих сбои.

🟠Метрики надежности и доступности (SRE)
Эти метрики помогают измерять надежность системы:
SLA (Service Level Agreement) — договорное время доступности (например, 99.9%).
SLO (Service Level Objective) — целевое значение доступности (например, 99.95%).
SLI (Service Level Indicator) — фактические измеренные показатели (например, 99.93%).
Error Rate — процент ошибок в системе (HTTP 500, таймауты и т. д.).
Latency (Задержка) — время ответа системы на запросы.

🟠Метрики производительности
Они показывают, насколько быстро работает система:
CPU Utilization — загрузка процессора.
Memory Usage — использование оперативной памяти.
Disk I/O — скорость чтения/записи на диск.
Network Throughput — пропускная способность сети.
Response Time — время отклика системы.

🟠Метрики пользовательского опыта
Оценивают удобство работы пользователей с системой:
Apdex (Application Performance Index) — индекс удовлетворенности пользователей (0–1).
TTFB (Time to First Byte) — время до получения первого байта ответа от сервера.
Page Load Time — время полной загрузки страницы.
Bounce Rate — процент пользователей, покинувших сайт без взаимодействия.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
🤔 Опишите обстоятельства, при которых потеряются данные внутри Docker-контейнера, чтобы они полностью исчезли.

1. Контейнер удален без сохранения данных в volume или bind mount.
2. Файлы хранятся в tmpfs, который очищается при остановке контейнера.
3. Используется ephemeral контейнер, данные которого существуют только в памяти.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
Forwarded from easyoffer
Привет, ребята!
1,5 года я учился на программиста, а сайт easyoffer.ru стал моим пет-проектом. Я создавал его, потому что:
а) нужно было добавить хоть какой-нибудь проект в резюме
б) подготовиться к прохождению собесов

И всё получилось! Благодаря еasyoffer я успешно прошёл собеседование и устроился Python Junior-разработчиком на удаленку с зарплатой 115 тысяч рублей.

Однако ещё во время разработки я понял, что у этого проекта есть потенциал. Казалось, что сайт может стать популярным и, возможно, превратиться в стартап.

По-этому я с самого начала заложил в проект минимальную бизнес-модель, на случай, если сайт начнёт набирать трафик. Я предложил пользователям полный доступ к сайту в обмен на подписку на Telegram-каналы. Это позволяло развивать аудиторию, а в будущем — зарабатывать на рекламе.

Результат превзошёл ожидания!
С момента запуска easyoffer посетило 400 тысяч человек. А когда доход с рекламы превысил мою зарплату программиста, я принял решение уйти с работы и полностью посвятить себя разработке новой версии сайта.

Вот так, зайдя в IT, через 4 месяца вышел через свой же пет-проект. Мне очень повезло

Уже год я работаю над easyoffer 2.0.
Это будет более масштабный и качественной новый проект:
– Появится тренажер
– Появятся задачи из собесов
– Фильтрация контента по грейдам
и еще очень много фич, о которых я расскажу позже.

Хочу, довести easyoffer до ума, чтобы сайт стал настоящим помощником для всех, кто готовится к собеседованиям.
По этому в ближайшее время я объявлю о старте краудфандинговой кампании, чтобы ускорить разработку и я готов щедро отблагодарить всех, кто поддержит проект.

А те, кто поддержат проект первыми, получат специальные лимитированные выгодные вознаграждения. Следите за этим телеграм каналом, если хотите стать первыми сапортерами.
🔥4
🤔 Как проще проверить есть ли на сервер nginx?

Проверить, установлен ли NGINX на сервере, можно несколькими способами:

Проверка запущенного процесса
ps aux | grep nginx


Если NGINX работает, будет вывод с процессами, например:
root      1234  0.0  0.1  123456  7890 ? Ss   10:00   0:00 nginx: master process /usr/sbin/nginx


Проверка через systemctl (если systemd)
systemctl status nginx


Если NGINX установлен и работает, будет что-то вроде:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since ...


Проверка через nginx -v (версия)
nginx -v


Если NGINX установлен, покажет версию, например:
nginx version: nginx/1.20.1


Проверка пакетов (dpkg или rpm)
Если сервер на Debian/Ubuntu:
dpkg -l | grep nginx


Если сервер на CentOS/RHEL:
rpm -qa | grep nginx


Проверка открытых портов (если сервер работает)
netstat -tulnp | grep :80


или
ss -tulnp | grep :80


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤯1
🤔 В чём отличие команд docker stop и docker pause?

1. docker stop:
- Корректно завершает процесс внутри контейнера.
- Отправляет сигнал SIGTERM, а затем SIGKILL, если процесс не завершился.
2. docker pause:
- Приостанавливает выполнение всех процессов в контейнере с помощью cgroups.
- Контейнер остается активным, но процессы заморожены.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥51
🤔 Почему выстрелил terraform а не salt?

Terraform стал популярнее, чем SaltStack, потому что он лучше решает задачи управления инфраструктурой как кодом (IaC) и обеспечивает декларативный и удобный подход.

🟠Разделение инфраструктуры и конфигурации
Terraform = управление инфраструктурой (создание виртуальных машин, баз данных, сетей и т. д.).
SaltStack = управление конфигурацией (разворачивание ПО, управление пользователями, файлами и т. д.).

🚩Почему Terraform выстрелил?

В современном DevOps важнее быстро и гибко создавать инфраструктуру (AWS, Kubernetes, облака).
Salt же больше заточен под настройку серверов, но это стало второстепенным.

🟠Декларативный подход
Terraform = декларативный язык HCL (HashiCorp Configuration Language)
  resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}


🟠Лёгкость и отсутствие агентов
Terraform = не требует агентов, просто вызывает API облачных провайдеров.
Salt = требует установки Salt Master и Minion'ов на серверах.

🟠Популярность облаков (AWS, Azure, GCP, Kubernetes)
Terraform нативно интегрируется с облаками (AWS, GCP, Azure, Kubernetes).
Salt тоже умеет работать с облаками, но его основное применение – настройка серверов.

🟠Лучшая экосистема и поддержка сообщества
- У Terraform больше модулей и провайдеров.
- Salt – сложнее настроить для облаков, и сообщество у него меньше.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3