Junior vs Senior: как отвечают на вопрос «что такое Docker?»
«Что такое Docker?» — этот вопрос встречается в подавляющем большинстве бэкенд-вакансий на HH.ru. Большинство кандидатов считают его разминочным. Это ловушка. По ответу на этот «простой» вопрос интервьюер за 60 секунд определяет твой реальный уровень.
Что на самом деле проверяет этот вопрос
Когда интервьюер спрашивает «что такое Docker?», он не ждёт определение из документации. Он проверяет три вещи: понимаешь ли ты, какую проблему Docker решает, работал ли ты с ним в продакшене, и думаешь ли ты об инфраструктуре как инженер, а не как пользователь туториалов.
Вопрос простой. Ответ — рентген.
Как отвечает джуниор
Типичный джуниорский ответ звучит примерно так:
«Docker — это платформа для контейнеризации. Контейнер — это как легковесная виртуальная машина. Он изолирует приложение и его зависимости. В отличие от VM, контейнеры разделяют ядро хост-системы, поэтому они запускаются быстрее и потребляют меньше ресурсов.»
Формально всё верно. Но этот ответ — пересказ первых трёх абзацев из любого туториала. Он не показывает опыт. Интервьюер помечает в блокноте: «теорию читал, в бою не использовал».
Красные флаги в джуниорском ответе:
- «Как легковесная VM» — сравнение, которое скорее путает, чем объясняет. Контейнер — не VM, даже «легковесная». Это изолированный процесс. Если ты не можешь объяснить разницу без костыля «ну это как VM, только...», ты не понимаешь, как контейнеры работают.
- Ни одного конкретного примера — ни use case, ни проблемы, которую Docker решил в реальном проекте. Ответ мог бы быть о любой технологии — просто подставь другое название.
- Фокус на «что это», а не на «зачем нужно» и «где ломается». Джуниор описывает технологию. Сеньор описывает решение проблемы.
Как отвечает сеньор
Сеньор не начинает с определения. Он начинает с проблемы:
«Docker решает проблему воспроизводимости окружения. Раньше у нас классика — "у меня на машине работает". Контейнер — это по сути изолированный процесс в Linux namespace с собственным деревом файловой системы, сетевым стеком и ограничениями ресурсов через cgroups. Не VM — он разделяет ядро хоста.
На практике это даёт три вещи: одинаковое окружение от dev до prod, быстрый CI/CD — потому что образы иммутабельны и кешируются послойно, и простую горизонтальную масштабируемость.
Но есть нюансы. Образы нужно держать тонкими — multi-stage build обязателен, иначе получишь полуторагигабайтный образ с gcc внутри. Для stateful-сервисов Docker не идеален — volumes добавляют сложности с правами и бэкапами. И если у тебя больше десятка сервисов, голый Docker Compose — это потолок, дальше нужен оркестратор.»
Почему это уровень сеньора:
- Начинает с проблемы, а не с определения. Показывает, что понимает контекст, в котором Docker появился.
- Знает внутреннее устройство — namespaces, cgroups, слои образов. Не «я прочитал статью», а «я дебажил проблему с правами в volume и знаю, почему она возникает».
- Называет ограничения. Джуниор продаёт технологию. Сеньор показывает, где она ломается. Это ключевой маркер зрелости на собесе.
- Практические детали — multi-stage builds, иммутабельность, кеширование слоёв. Знания из реальной работы, которые не выучишь по документации за вечер.
Конкретный пример: Dockerfile
Разница в уровне видна даже в том, как человек описывает Dockerfile.
Джуниор:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3 python3-pip
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["python3", "app.py"]
Сеньор:
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.12 /usr/local/lib/python3.12
COPY . .
USER nobody
CMD ["python3", "app.py"]
Первый образ: ubuntu:latest (~800 МБ), один stage, root-пользователь, зависимости и код в одном слое. Второй: multi-stage build, slim-образ (~120 МБ), кеширование зависимостей отдельным слоем, USER nobody для безопасности, --no-cache-dir для минимального размера. Разница в 6 раз по весу — и это видно в одном ответе.
Где проходит граница
Вот ключевые точки, по которым интервьюер определяет уровень:
- Определение. Джуниор: «контейнерная платформа, как легковесная VM». Сеньор: «изоляция процессов через namespaces и cgroups для воспроизводимости окружения».
- Ограничения. Джуниор: не упоминает. Сеньор: stateful-сервисы, размер образов, пределы Compose без оркестратора.
- Безопасность. Джуниор: не задумывается. Сеньор: минимальный base image, non-root user, сканирование уязвимостей.
- Оркестрация. Джуниор: «Docker Compose для всего». Сеньор: «Compose для dev, Kubernetes для prod — и вот почему».
- Аргументация. Джуниор: пересказывает факты. Сеньор: объясняет trade-off'ы.
Похожую разницу в глубине ответов мы разбирали в посте про REST API — паттерн тот же: джуниор даёт определение, сеньор показывает мышление.
Что с этим делать
Если ты узнал себя в джуниорском ответе — это нормально, все через это проходят. Но переход на следующий уровень — это не «прочитать ещё 10 статей». Это решать реальные задачи. Подними проект с Docker Compose, сломай его, почини. Оптимизируй образ с гигабайта до ста мегабайт. Разберись, почему контейнер падает с OOMKilled, а docker logs молчит.
Собес по Docker — не проверка памяти. Это проверка того, как ты думаешь об инфраструктуре. Разница между «я знаю, что такое Docker» и «я решаю задачи с Docker» — это разница между оффером и «мы вам перезвоним».
А если хочешь проверить, как звучат твои ответы прямо сейчас — Sobes AI разберёт каждый ответ и покажет, где ты на уровне джуниора, а где уже тянешь на сеньора. Лучше узнать это до собеса, а не после.
Готовитесь к собеседованию?
Sobes AI слушает вопросы интервьюера и генерирует ответы в реальном времени.
Скачать Sobes AI