Питання на співбесіді з Docker і CI/CD (Middle) з відповідями
75 запитань для співбесіди з теми Docker і CI/CD (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Яка головна перевага багатоетапного (multi-stage) збирання?
- 2.Чому цей Dockerfile перевстановлює всі залежності при кожній зміні коду?
``
dockerfile COPY . . RUN npm ci - 3.Навіщо об'єднувати
apt-get updateіapt-get installв одномуRUN? - 4.Чому
RUN rm -rf /tmp/buildу пізнішому шарі не зменшує образ? - 5.Чим відрізняються
CMD ["node", "server.js"]іCMD node server.js? - 6.Чому процес, що працює як PID 1 у контейнері, може поводитися дивно?
- 7.Що має зробити сервер на Node.js, отримавши SIGTERM?
- 8.Чому
CMD ["npm", "start"]не радять у продакшн-образах? - 9.Після
USER nodeзастосунок не може писати в/app. Яке типове виправлення? - 10.Як використати npm-токен під час збирання, не лишивши його в образі?
- 11.Що дає
RUN --mount=type=cache,target=/root/.npm npm ci? - 12.Що BuildKit робить із незалежними етапами multi-stage збирання?
- 13.Чим digest образу відрізняється від тегу?
- 14.Що таке образи
<none>:<none>(висячі)? - 15.Для чого
compose.override.yaml? - 16.Для чого потрібні профілі Compose?
- 17.Ви монтуєте проєкт через bind mount у контейнер Node, і застосунок не знаходить модулі. Чому?
- 18.Чим у Compose відрізняються файл
.envіenv_file:? - 19.Контейнер зупинився з кодом виходу 137. Яка ймовірна причина?
- 20.Чому Node.js може ігнорувати ліміт пам'яті контейнера й бути вбитим OOM?
- 21.Що робить
--network host? - 22.Чому контейнери мають писати логи в stdout і stderr?
- 23.Що не дає типовим логам Docker
json-fileзаповнити диск? - 24.Що дає запуск з
--read-only? - 25.Що таке distroless-образ?
- 26.Навіщо ставити у фінальний образ лише продакшн-залежності?
- 27.Що перевіряє сканер образів на кшталт Trivy?
- 28.Чому монтувати
/var/run/docker.sockу контейнер ризиковано? - 29.Образ, зібраний на Mac з Apple Silicon, падає на x86-сервері з
exec format error. Чому? - 30.Що робить
exec "$@"наприкінці entrypoint-скрипту? - 31.Чи використовує Kubernetes
HEALTHCHECKз Dockerfile? - 32.Який ключ кешу добрий для
node_modulesчи кешу npm у CI? - 33.Кеш проти артефактів у CI: у чому різниця?
- 34.Що робить цей код?
``
yaml concurrency: group: deploy-${{ github.ref }} cancel-in-progress: true - 35.Як у монорепо не запускати пайплайн backend, коли змінився лише frontend?
- 36.Для чого
workflow_dispatch? - 37.Навіщо явно задавати
permissions:дляGITHUB_TOKEN? - 38.Чому workflow, запущені
pull_requestз форків, не отримують секретів репозиторію? - 39.Що додають оточення розгортання з обов'язковими рев'юерами?
- 40.Що таке reusable workflow?
- 41.Що таке composite action?
- 42.Навіщо закріплювати сторонні actions на повний SHA коміту, а не на
@v3? - 43.Що дає OIDC пайплайну CI, який розгортає в хмару?
- 44.Як один job передає значення, наприклад тег образу, іншому?
- 45.Як запускати step розгортання лише для push у
main? - 46.Що змінює
fail-fast: falseу матриці? - 47.Чому self-hosted runner ризиковані для публічних репозиторіїв?
- 48.Чому збирання Docker на свіжих CI-runner часто повільні й що допомагає?
- 49.Навіщо тегувати образи SHA коміту?
- 50.Як пришвидшити повільний пайплайн, не прибираючи перевірок?
- 51.Як інтеграційні тести в GitHub Actions можуть отримати справжній PostgreSQL?
- 52.Що робить Testcontainers?
- 53.Чому міграції бази мають лишатися зворотно сумісними під час деплою?
- 54.Що таке canary-реліз?
- 55.Що робить rolling update?
- 56.Як feature flags змінюють зв'язок між деплоєм і релізом?
- 57.Для чого smoke-тести після деплою?
- 58.Які класичні метрики DORA?
- 59.Що вимірює «lead time for changes»?
- 60.Чому CI і довгоживучі гілки фіч заважають одне одному?
- 61.Що таке infrastructure as code?
- 62.У чому основна ідея GitOps?
- 63.Readiness чи liveness проба в Kubernetes: у чому різниця?
- 64.Чому зазвичай створюють Deployment, а не Pod напряму?
- 65.Чи зашифровані Secrets у Kubernetes за замовчуванням?
- 66.Requests і limits ресурсів у Kubernetes: що вони роблять?
- 67.Що контролюють
maxSurgeіmaxUnavailable? - 68.Що роблять Dependabot чи Renovate?
- 69.Чому не варто перезаписувати наявний тег образу на кшталт
1.4.0? - 70.Що змінює
needs:у job GitLab CI? - 71.CI маскує значення секретів у логах. Чому секрет все одно може витекти?
- 72.Чому кожен продакшн-деплой має йти через пайплайн, а не ручним
docker pushз ноутбука? - 73.Що допомагає знайти
docker history my-app? - 74.Що друкує
docker compose config? - 75.Що
restore-keysдодає кроку кешу?