Питання на співбесіді з Docker і CI/CD з відповідями
Контейнери й образи, Dockerfile і кешування шарів, multi-stage збирання, томи й мережі, Docker Compose, CI-пайплайни в GitHub Actions і GitLab CI, стратегії деплою, основи Kubernetes і безпека ланцюга постачання.
225 запитань для співбесіди з теми Docker і CI/CD з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.
- Docker
- Compose
- GitHub Actions
- Деплой
- Kubernetes
Запитання за рівнями
Junior
Базові поняття та синтаксис · 50 запитань
Middle
Практика, нюанси й оптимізація · 50 запитань
Senior
Архітектура, внутрішня будова, edge cases · 50 запитань
Приклади запитань
Кілька запитань із кожного рівня з правильною відповіддю й поясненням.
Docker і CI/CD · Junior
- Чим контейнер відрізняється від віртуальної машини?
Правильна відповідь: Він використовує ядро хоста замість власної ОС
Контейнери - це ізольовані процеси на ядрі хоста (namespaces і cgroups), тож вони стартують за мілісекунди й споживають мало пам'яті. VM завантажує цілу гостьову ОС на віртуальному залізі.
- Чим образ відрізняється від контейнера?
Правильна відповідь: Образ - шаблон лише для читання; контейнер - його запущений екземпляр
Як клас і його об'єкти: з одного образу можна запустити багато контейнерів. Кожен контейнер додає поверх образу власний тонкий шар для запису.
- Що таке Dockerfile?
Правильна відповідь: Текстовий файл із кроками для збирання образу
Кожна інструкція (
FROM,COPY,RUN,CMD...) описує крок збирання.docker buildвиконує їх і створює образ. - Що робить
FROM node:22-alpineу Dockerfile?Правильна відповідь: Задає базовий образ, з якого починається збирання
Кожне збирання починається з базового образу, тут - офіційного образу Node.js 22 на Alpine Linux. Ваші інструкції додають шари поверх нього.
Docker і CI/CD · Middle
- Яка головна перевага багатоетапного (multi-stage) збирання?
Правильна відповідь: Інструменти збирання лишаються в ранніх етапах; фінальний образ має лише файли для роботи
Етап
builderставить dev-залежності й компілює; фінальний етап копіює лише результат черезCOPY --from=builder. Образи стають меншими й безпечнішими. - Чому цей Dockerfile перевстановлює всі залежності при кожній зміні коду?
``
dockerfile COPY . . RUN npm ciПравильна відповідь: Зміна будь-якого файлу інвалідує
COPY . .іnpm ciІнвалідація кешу каскадна: щойно шар змінився, перезбирається кожен наступний. Скопіюйте
package.jsonі lock-файл, запустітьnpm ci, а потім копіюйте решту. - Навіщо об'єднувати
apt-get updateіapt-get installв одномуRUN?Правильна відповідь: Кешований шар
updateставив би пакети із застарілого індексуЯкщо
update- окремий кешований шар, пізніша зміна рядка встановлення використає старий індекс пакетів. Також очищайте/var/lib/apt/listsу тому самомуRUN. - Чому
RUN rm -rf /tmp/buildу пізнішому шарі не зменшує образ?Правильна відповідь: Попередні шари досі містять файли; видалення лише ховає їх
Шари накопичуються. Прибирайте в тому самому
RUN, що створив файли, або використовуйте multi-stage, щоб тимчасові файли не дійшли до фінального образу.
Docker і CI/CD · Senior
- На які можливості ядра спираються контейнери для ізоляції й обмеження ресурсів?
Правильна відповідь: Namespaces для ізоляції та cgroups для обмеження ресурсів
Namespaces PID, мережі, монтувань, користувачів та інші дають кожному контейнеру власний погляд; cgroups обмежують CPU, пам'ять і I/O. Окремого ядра немає, тому вразливості ядра важливі.
- Як пов'язані Docker, containerd і runc?
Правильна відповідь: Docker керує контейнерами через containerd; runc їх запускає
runc реалізує специфікацію OCI runtime і створює процес з namespaces і cgroups. containerd керує образами й життєвим циклом; Kubernetes працює з containerd напряму без Docker.
- З чого складається OCI-образ?
Правильна відповідь: Маніфест, що вказує на конфіг і список tar-архівів шарів
Усе адресується вмістом через digest. Мультиплатформний образ додає індекс, що вказує на окремий маніфест для кожної ОС та архітектури.
- Чому дописати один рядок у файл на 2 ГБ у контейнері може бути повільно?
Правильна відповідь: Overlay-сховище спершу копіює весь файл у шар для запису
Copy-up стається при першому записі у файл з нижнього шару. Дані з інтенсивним записом (бази, логи) мають жити у volume, що оминає драйвер сховища.
Задачі на код
Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор), серверна логіка на Node.js (middleware, обмеження частоти, черги задач), SQL-запити в справжньому PostgreSQL і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.
Відкрити задачі →