Skip to content

Обо мне / Подготовка к assesment

Список озвученных вопросов на assesment

Вопрос Ответ
Ты узнал о проблеме, что страница какого‑то ресурса не открывается, как будешь дебажить? Пошаговый план:

1. Проверить доступность с разных устройств/сетей (исключить локальную проблему).
2. ping и traceroute до домена — проверить сетевую связность.
3. nslookup/dig — проверить DNS‑резолюцию.
4. curl -I <URL> или wget — посмотреть HTTP‑статус и заголовки.
5. Проверить логи веб‑сервера (/var/log/nginx/access.log, /var/log/apache2/error.log).
6. Проверить статус и логи бэкенда (приложение, БД).
7. Проверить балансировщики нагрузки, CDN, файрволы.
8. Проверить сертификаты SSL/TLS (openssl s_client -connect <host>:<port>).
В каком случае выдаётся 502, а в каком 504? * 502 Bad Gateway: прокси/балансировщик получил некорректный ответ от бэкенда (бэкенд упал, вернул невалидный HTTP, зависает).

504 Gateway Timeout:* прокси/балансировщик не получил ответа от бэкенда в течение таймаута (бэкенд слишком долго отвечает или недоступен).
По какой причине при обращении к бэкенду получаем connection refused? Основные причины:

сервис не запущен;
слушает не на том порту/интерфейсе (0.0.0.0 vs 127.0.0.1)
файрвол блокирует соединение;
превышено максимальное число подключений (backlog);
* процесс бэкенда аварийно завершился.
Зачем нужен EXPOSE в Dockerfile и где он используется? EXPOSE <порт>документационная метка, указывающая, какой порт использует контейнер.

Не открывает порт автоматически.
Информирует пользователя и системы оркестрации (Docker Compose, Kubernetes).
* Порт нужно пробросить явно: -p <хост>:<контейнер> или -P (публиковать все EXPOSE‑порты).
Чем отличается ENTRYPOINT от CMD в Dockerfile?** * ENTRYPOINT: определяет основную команду, которая всегда выполняется при запуске контейнера (не перезаписывается без флага --entrypoint). Подходит для фиксированного поведения (например, запуск веб‑сервера).

CMD: задаёт аргументы по умолчанию* для ENTRYPOINT. Может быть легко переопределена при запуске (docker run <образ> <новые аргументы>).

Если ENTRYPOINT не задан, CMD выполняет команду.
В каком случае процесс убивается по OOM? Процесс убивается OOM Killer (Out Of Memory Killer), когда система исчерпала:

оперативную память (RAM);
swap.

Ядро пытается освободить память, убивая процессы.
Как система понимает, кого убить по OOM? OOM Killer вычисляет OOM score для каждого процесса:

выше балл — выше шанс быть убитым;
учитываются: потребление памяти, время жизни, приоритет (nice), дочерние процессы;
* можно повлиять: echo -1000 > /proc/<PID>/oom_score_adj (снизить шанс убийства).
Как узнать, какое количество оперативки жрёт процесс не в процентах, а в абсолютном выражении? Что за память RES и VIRT в выводе команды top? * Абсолютное потребление: top, затем столбец RES (Resident Set Size).

RES (Resident): физическая RAM, реально используемая процессом (в КБ/МБ).
VIRT (Virtual): общий объём виртуальной памяти, запрошенной процессом (включая swap, shared libraries, mapped files). Не равно реальному потреблению.
Как посмотреть размер каталога? Команды:

du -sh <каталог> — общий размер в человекочитаемом формате (-h), суммировано (-s).
du -h --max-depth=1 <каталог> — размер подкаталогов 1‑го уровня.
* В файловых менеджерах (Nautilus, Dolphin) — ПКМ → «Свойства».
Какие знаешь команды из двух символов? Примеры:

ls — список файлов;
cd — смена директории;
cp — копирование;
mv — перемещение/переименование;
rm — удаление;
ps — список процессов;
df — свободное место на дисках;
du — использование диска;
* vi/ed — редакторы.
Какой шаблонизатор использует Helm? Go templates (шаблонизатор языка Go).

Helm использует его для генерации YAML‑манифестов Kubernetes из шаблонов с подстановкой значений из values.yaml.
Какие типы systemd юнитов бывают и чем simple отличается от forking? Основные типы: .service, .socket, .timer, .mount, .target, .path и др.

Отличия:

Type=simple: systemd считает сервис запущенным сразу после запуска процесса. Процесс не должен демонизироваться (остаётся на переднем плане).
Type=forking: процесс создаёт дочерний процесс и завершается. systemd отслеживает дочерний (демонизированный) процесс. Используется для классических демонов (например, sshd, nginx).