Middle-уровень: инфраструктура продуктов Диск, Почта, Календарь, Телемост и других сервисов с многомиллионной аудиторией. Проверяют Linux «под капотом», сети, K8s, IaC, CI/CD, мониторинг и Python-автоматизацию.
Фишка: Hands-on секция на SSH-сервере с реальными сценариями (inode exhaustion, отладка бинарников) — фирменная часть процесса Яндекса, где проверяют практический troubleshooting, а не теорию.
| Этап | Длительность | Что проверяют |
|---|---|---|
| HR-скрининг | 30–45 мин | Опыт, мотивация, ожидания по грейду и зарплате, адекватность. Уточняют баланс между разработкой и администрированием. |
| Алгоритмы / код | 60 мин | Live-coding на Python (реже Go) в онлайн-редакторе без запуска. LeetCode Easy: массивы, хэш-таблицы, парсинг строк. Проверяют чистоту кода и O-нотацию. |
| Hands-on (SSH) | 60–90 мин | Доступ к удалённому серверу: найти и устранить реальные проблемы — исчерпание inode, диск, память, зависшие процессы. Нужно самостоятельно диагностировать, а не ждать подсказок. |
| DevOps-практика | 60 мин | Запуск кастомных бинарников, поиск причин падения/зависания. Отладка на уровне ОС и окружения. |
| Технические секции | 60–90 мин каждая | Linux, сети, Docker/K8s, CI/CD, мониторинг, PostgreSQL — глубокие вопросы по стеку вакансии. Могут быть 2–3 отдельных интервью. |
| Знакомство с командой | 45–60 мин | Культурный fit, day-to-day задачи Яндекс 360, поведенческие вопросы по STAR. Может повториться с разными командами. |
| System Design (опционально) | 60–90 мин | Для Middle+ — проектирование отказоустойчивого сервиса: масштабирование, HA, мониторинг, деплой. Типичные кейсы: хранилище файлов, сервис метрик, CI/CD-платформа. |
Обязательный минимум
Плюсом будет
Что такое inode?
Структура метаданных файла (права, размер, блоки). Имя — отдельная запись в каталоге. Исчерпание inode → «No space left» при свободном месте.
В чём разница между hardlink и symlink?
Hardlink — ещё одно имя для того же inode (только в одном FS). Symlink — отдельный файл с путём-указателем.
Что такое виртуальная память и зачем она нужна?
Абстракция адресного пространства: изоляция процессов, swap, demand paging. Позволяет использовать больше памяти, чем физически есть.
Как работает OOM Killer?
При нехватке памяти ядро выбирает процесс по oom_score (память, привилегии, oom_score_adj). SIGKILL, без graceful shutdown.
В чём разница между kill -15 и kill -9?
SIGTERM (15) — graceful shutdown, процесс может перехватить. SIGKILL (9) — немедленное убийство, нельзя перехватить. D-state процесс kill -9 не спасёт.
Как диагностировать «No space left on device»?
df -h (место), df -i (inode), du для поиска больших каталогов, lsof +L1 для удалённых но открытых файлов.
Load Average высокий, CPU низкий — что проверять?
iowait в top, iostat -xz, процессы в D-state, сеть (softirq), блокировки на диске.
Какие системные вызовы используются для создания процесса?
fork() — копия процесса; execve() — замена образа; wait() — ожидание завершения дочернего.
Что такое systemd?
Init-система и менеджер сервисов: unit-файлы, dependencies, journald, target-ы. systemctl start/stop/enable/status.
Когда используют SWAP?
Когда RAM заканчивается — вытеснение редко используемых страниц на диск. На prod-серверах часто отключают или минимизируют из-за latency.
Фишка: На hands-on секции Яндекса типичный кейс — исчерпание inode: нужно найти миллионы мелких файлов и устранить причину.
Ловушка: Процесс в D-state (Uninterruptible sleep) нельзя убить kill -9 — ждёт I/O. Ищите проблему на уровне диска/сети/NFS.
Совет: Для диагностики держите под рукой: top/htop, iostat, vmstat, dmesg, lsof, strace, ss/netstat.
Что за протокол ICMP, какого уровня OSI?
Сетевой уровень (L3). Диагностика: ping (echo), traceroute (TTL), unreachable. Не передаёт данные приложений.
Какие протоколы на 4-м уровне OSI?
TCP (надёжный, с установкой соединения) и UDP (без гарантий доставки). TCP: SYN-SYN/ACK-ACK, window, retransmit.
Как traceroute вычисляет задержки до hop?
Отправляет пакеты с TTL=1,2,3… Каждый роутер отвечает ICMP Time Exceeded. Замер RTT до каждого hop.
Как проверить доступность порта на удалённом сервере?
nc -zv host port, telnet, curl, nmap. Изнутри — ss -tlnp. Учитывайте firewall и security groups.
Как посмотреть сетевые соединения процесса?
ss -tnp | grep PID, lsof -i -P -n | grep PID. Для трафика — tcpdump -i any host/port.
В чём разница между L4 и L7 балансировкой?
L4 (IP/port) — быстрее, не смотрит в payload. L7 (HTTP headers, path, cookies) — умный роутинг, SSL termination, но дороже.
Что происходит при вводе URL в браузере?
DNS resolve → ARP/MAC → TCP handshake → TLS → HTTP request → response. Кэш DNS, CDN, redirects.
Совет: Яндекс часто углубляется в TCP: TIME_WAIT, slow start, tcp_tw_reuse — покажите понимание, а не только «ping работает».
Ловушка: ICMP может быть заблокирован firewall — ping не пройдёт, но сервис доступен по TCP.
Что такое слои в Docker?
Каждая инструкция Dockerfile создаёт read-only слой. Copy-on-Write при записи. Общие слои экономят место между образами.
Что такое OverlayFS в Docker?
Union FS: нижние слои read-only, верхний writable (container layer). При удалении контейнера writable слой удаляется.
В чём разница между контейнеризацией и виртуализацией?
VM — полная изоляция с guest OS (hypervisor). Контейнер — общее ядро, изоляция через namespaces + cgroups. Легче и быстрее.
Как уменьшить размер Docker-образа?
Multi-stage build, alpine/slim base, объединение RUN, удаление кэша пакетного менеджера, .dockerignore.
Совет: Свяжите Docker с Linux: namespaces (PID, NET, MNT) и cgroups — основа изоляции контейнеров.
Ловушка: Alpine использует musl — бинарники, собранные под glibc, могут не работать. Проверяйте совместимость.
Какие компоненты Control Plane и Data Plane?
Control: API Server, etcd, Scheduler, Controller Manager. Data: kubelet, kube-proxy, container runtime на каждой node.
В чём разница Deployment, StatefulSet и DaemonSet?
Deployment — stateless, rolling update. StatefulSet — стабильные имена/volumes, порядок. DaemonSet — по одному pod на каждую node.
Разница liveness, readiness и startup probes?
Liveness — жив ли контейнер (restart). Readiness — готов принимать трафик (убирает из Service). Startup — для медленного старта, блокирует другие probes.
Как разместить pod на определённой node?
nodeSelector, nodeAffinity/antiAffinity, taints + tolerations. Для hard constraint — requiredDuringScheduling.
Что произойдёт при превышении CPU limits?
Throttling (CFS quota), не OOMKill. CPU — compressible ресурс. Memory limit превышение → OOMKill.
CrashLoopBackOff — ваши шаги?
kubectl describe pod (Events), logs --previous, проверка OOMKilled, env/secrets, probes, image pull, resource limits.
Что такое etcd в Kubernetes?
Distributed KV store — единственный source of truth для состояния кластера. Бэкапы критичны. Проблемы etcd = проблемы всего кластера.
Фишка: Для Яндекс 360 важны probes, HPA, graceful shutdown и zero-downtime deploy — сервисы с миллионами пользователей.
Совет: Знайте путь трафика: Ingress → Service → Endpoints → Pod. CoreDNS для service discovery внутри кластера.
Как Terraform хранит state и зачем locks?
State file — актуальное состояние ресурсов. Remote backend (S3+ DynamoDB, Terraform Cloud). Lock предотвращает concurrent apply.
Что такое идемпотентность?
Повторное применение даёт тот же результат. Ключевое свойство Ansible/Terraform — можно запускать многократно без побочных эффектов.
Rolling update vs Canary vs Blue-Green?
Rolling — постепенная замена. Canary — малая доля трафика на новую версию. Blue-Green — два окружения, мгновенный switch.
Что такое GitOps?
Git — source of truth для инфраструктуры/деплоя. ArgoCD/Flux следят за репо и синхронизируют кластер. Declarative + audit trail.
Как встроить безопасность в CI/CD?
SAST, сканирование образов (Trivy/Grype), secret scanning, DAST, подпись образов, policy-as-code.
Совет: Вакансия Яндекс 360 явно требует Terraform, CI/CD и GitOps (ArgoCD/Flux — плюс). Приведите пример своего pipeline end-to-end.
Pull vs Push модель сбора метрик?
Prometheus scrape (pull) — targets, service discovery, нагрузка на scraper. Push (Pushgateway, StatsD) — для batch/краткоживущих jobs.
Четыре золотых сигнала мониторинга?
Latency, Traffic, Errors, Saturation (Google SRE). Алерты на симптомы, а не причины — меньше alert fatigue.
SLI, SLO, SLA — в чём разница?
SLI — метрика (availability, latency p99). SLO — целевое значение SLI. SLA — контракт с последствиями при нарушении.
Как организовать сбор логов в K8s?
DaemonSet агент (Fluent Bit/Vector) → Loki/ELK. Structured logging (JSON), labels, retention policy. Не хранить логи вечно.
Что такое TTL кеша?
Time To Live — время жизни записи. По истечении инвалидируется. Баланс freshness vs нагрузка на backend.
Фишка: Стек вакансии: Prometheus/VictoriaMetrics + Grafana + Alertmanager, Vector/Fluent Bit + Loki/ELK — повторите типовые PromQL-запросы и правила алертов.
Ловушка: Алерт на CPU > 80% без контекста — плохая практика. Лучше: error rate, latency p99, saturation ресурса с impact на пользователей.
Как работает VACUUM в PostgreSQL?
Удаляет dead tuples после UPDATE/DELETE, предотвращает bloat и transaction ID wraparound. autovacuum — фоновый процесс.
Синхронная vs асинхронная репликация?
Sync — commit ждёт реплику, zero data loss, выше latency. Async — быстрее, риск потери при падении primary.
В чём разница шардирования и партиционирования?
Партиционирование — деление таблицы внутри одной БД (по дате/ключу). Шардирование — распределение данных между независимыми БД/серверами.
Совет: ClickHouse и Kafka — плюс для вакансии. Знайте, когда columnar DB лучше для аналитики логов.
Какие языки программирования знаете?
Python — основной для автоматизации в вакансии. Покажите опыт: скрипты, API-клиенты, парсинг логов, утилиты для CI.
Как найти top-N IP в лог-файле на 100 ГБ с ограниченной RAM?
Streaming: построчное чтение, Counter/dict, не загружать файл целиком. При необходимости — external sort или MapReduce.
Фишка: На код-секции Яндекса — LeetCode Easy на Python: массивы, хэш-таблицы, строки. Код без запуска — проговаривайте edge cases вслух.
Совет: Знайте модули: os, sys, subprocess, json, collections, re. Обсуждайте сложность: set lookup O(1) vs list O(n).
Диагностика исчерпания inode
На сервере команда падает с «No space left on device», но df -h показывает свободное место. Найдите причину и устраните проблему.
# 1. Проверить inode df -i # 2. Найти каталог с миллионами мелких файлов for d in /*; do echo "$(find "$d" -xdev -type f 2>/dev/null | wc -l) $d"; done 2>/dev/null | sort -rn | head # 3. Детализировать проблемный каталог cd /path/to/dir && find . -type f | head # 4. Удалить лишние файлы / настроить logrotate / исправить приложение # 5. Проверить: df -i && touch /tmp/testfile
Сложность: O(n) по количеству файлов при поиске
Top-10 IP из access.log
Дан access.log (>10 ГБ). Напишите Python-скрипт, который находит 10 IP-адресов с наибольшим числом запросов. Память ограничена.
import collections
def top_ips(path: str, n: int = 10):
counter = collections.Counter()
with open(path) as f:
for line in f:
parts = line.split()
if parts:
counter[parts[0]] += 1
return counter.most_common(n)
# Обсудить: regex для IP, обработка битых строк, streaming без загрузки в RAMСложность: O(n) по строкам, O(k) память где k — уникальные IP
CrashLoopBackOff после деплоя
После обновления Deployment новые pod'ы в CrashLoopBackOff. Опишите пошаговую диагностику и возможные причины.
1. kubectl get pods -o wide 2. kubectl describe pod <name> — секция Events 3. kubectl logs <pod> --previous 4. Проверить: OOMKilled (kubectl describe, dmesg), image pull, env/secrets, configmap 5. Проверить probes (liveness/readiness слишком агressive?) 6. kubectl exec для ручной проверки 7. Откат: kubectl rollout undo deployment/<name>
Сложность: N/A — troubleshooting playbook
Слияние интервалов (алгоритм)
Дан список интервалов [(start, end)] — времена работы серверов. Объедините перекрывающиеся интервалы.
def merge_intervals(intervals):
if not intervals:
return []
intervals.sort(key=lambda x: x[0])
merged = [list(intervals[0])]
for start, end in intervals[1:]:
if start <= merged[-1][1]:
merged[-1][1] = max(merged[-1][1], end)
else:
merged.append([start, end])
return merged
# O(n log n) из-за сортировкиСложность: O(n log n)
Каркас ответа
3 дня
7 дней
14 дней
| Блок | Готов, если... |
|---|---|
| Linux | можешь диагностировать No space (место vs inode), объяснить OOM Killer и D-state |
| Сети | можешь описать TCP handshake, traceroute, разницу L4/L7 LB |
| Kubernetes | можешь отладить CrashLoopBackOff и объяснить probes + Deployment/StatefulSet |
| IaC/CI/CD | можешь описать Terraform state/locks и rolling vs canary deploy |
| Мониторинг | можешь назвать 4 golden signals и написать простой PromQL rate() |
| Python | можешь за 20 мин написать streaming парсер логов с Counter |
| Поведение | есть 2–3 STAR-истории про инциденты с измеримым результатом |
В день собеседования