← Усі теми

Питання на співбесіді з Docker і CI/CD з відповідями

Контейнери й образи, Dockerfile і кешування шарів, multi-stage збирання, томи й мережі, Docker Compose, CI-пайплайни в GitHub Actions і GitLab CI, стратегії деплою, основи Kubernetes і безпека ланцюга постачання.

225 запитань для співбесіди з теми Docker і CI/CD з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.

Запитання за рівнями

Приклади запитань

Кілька запитань із кожного рівня з правильною відповіддю й поясненням.

Docker і CI/CD · Junior

  1. Чим контейнер відрізняється від віртуальної машини?

    Правильна відповідь: Він використовує ядро хоста замість власної ОС

    Контейнери - це ізольовані процеси на ядрі хоста (namespaces і cgroups), тож вони стартують за мілісекунди й споживають мало пам'яті. VM завантажує цілу гостьову ОС на віртуальному залізі.

  2. Чим образ відрізняється від контейнера?

    Правильна відповідь: Образ - шаблон лише для читання; контейнер - його запущений екземпляр

    Як клас і його об'єкти: з одного образу можна запустити багато контейнерів. Кожен контейнер додає поверх образу власний тонкий шар для запису.

  3. Що таке Dockerfile?

    Правильна відповідь: Текстовий файл із кроками для збирання образу

    Кожна інструкція (FROM, COPY, RUN, CMD...) описує крок збирання. docker build виконує їх і створює образ.

  4. Що робить FROM node:22-alpine у Dockerfile?

    Правильна відповідь: Задає базовий образ, з якого починається збирання

    Кожне збирання починається з базового образу, тут - офіційного образу Node.js 22 на Alpine Linux. Ваші інструкції додають шари поверх нього.

Усі 75 запитань з відповідями →

Docker і CI/CD · Middle

  1. Яка головна перевага багатоетапного (multi-stage) збирання?

    Правильна відповідь: Інструменти збирання лишаються в ранніх етапах; фінальний образ має лише файли для роботи

    Етап builder ставить dev-залежності й компілює; фінальний етап копіює лише результат через COPY --from=builder. Образи стають меншими й безпечнішими.

  2. Чому цей Dockerfile перевстановлює всі залежності при кожній зміні коду? ``dockerfile COPY . . RUN npm ci

    Правильна відповідь: Зміна будь-якого файлу інвалідує COPY . . і npm ci

    Інвалідація кешу каскадна: щойно шар змінився, перезбирається кожен наступний. Скопіюйте package.json і lock-файл, запустіть npm ci, а потім копіюйте решту.

  3. Навіщо об'єднувати apt-get update і apt-get install в одному RUN?

    Правильна відповідь: Кешований шар update ставив би пакети із застарілого індексу

    Якщо update - окремий кешований шар, пізніша зміна рядка встановлення використає старий індекс пакетів. Також очищайте /var/lib/apt/lists у тому самому RUN.

  4. Чому RUN rm -rf /tmp/build у пізнішому шарі не зменшує образ?

    Правильна відповідь: Попередні шари досі містять файли; видалення лише ховає їх

    Шари накопичуються. Прибирайте в тому самому RUN, що створив файли, або використовуйте multi-stage, щоб тимчасові файли не дійшли до фінального образу.

Усі 75 запитань з відповідями →

Docker і CI/CD · Senior

  1. На які можливості ядра спираються контейнери для ізоляції й обмеження ресурсів?

    Правильна відповідь: Namespaces для ізоляції та cgroups для обмеження ресурсів

    Namespaces PID, мережі, монтувань, користувачів та інші дають кожному контейнеру власний погляд; cgroups обмежують CPU, пам'ять і I/O. Окремого ядра немає, тому вразливості ядра важливі.

  2. Як пов'язані Docker, containerd і runc?

    Правильна відповідь: Docker керує контейнерами через containerd; runc їх запускає

    runc реалізує специфікацію OCI runtime і створює процес з namespaces і cgroups. containerd керує образами й життєвим циклом; Kubernetes працює з containerd напряму без Docker.

  3. З чого складається OCI-образ?

    Правильна відповідь: Маніфест, що вказує на конфіг і список tar-архівів шарів

    Усе адресується вмістом через digest. Мультиплатформний образ додає індекс, що вказує на окремий маніфест для кожної ОС та архітектури.

  4. Чому дописати один рядок у файл на 2 ГБ у контейнері може бути повільно?

    Правильна відповідь: Overlay-сховище спершу копіює весь файл у шар для запису

    Copy-up стається при першому записі у файл з нижнього шару. Дані з інтенсивним записом (бази, логи) мають жити у volume, що оминає драйвер сховища.

Усі 75 запитань з відповідями →

Задачі на код

Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор), серверна логіка на Node.js (middleware, обмеження частоти, черги задач), SQL-запити в справжньому PostgreSQL і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.

Відкрити задачі →