# Docker & Containerization (Go) > Dockerfile, multi-stage builds, оптимізація образів, docker-compose, оркестрація контейнерів - 20 питань зі співбесід - Senior - [Питання зі співбесід: Go](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy.md) ## 1. Яка основна причина використання multi-stage build для Go-застосунку? **Відповідь** Multi-stage build відокремлює середовище компіляції від фінального образу. Етап build містить повний Go SDK (кілька сотень МБ), тоді як фінальний образ містить лише скомпільований бінарний файл. Це різко зменшує розмір образу (з ~800МБ до кількох МБ) і мінімізує поверхню атаки, усуваючи непотрібні build-інструменти у продакшені. ## 2. Який базовий образ рекомендується для Go-застосунку в продакшені, щоб мінімізувати розмір і поверхню атаки? **Відповідь** Образ scratch — це порожній образ без операційної системи. Go компілюється у статичні бінарні файли, яким не потрібні libc чи інші системні залежності, що дозволяє використовувати scratch. Це створює найменші можливі образи (кілька МБ) і забезпечує найкращу безпеку, оскільки немає жодних інструментів чи shell, які можна було б експлуатувати. Distroless та alpine — це валідні, але менш оптимальні альтернативи. ## 3. Які прапорці компіляції Go необхідні для створення бінарного файлу, сумісного з образом scratch? **Відповідь** CGO_ENABLED=0 вимикає cgo, змушуючи Go використовувати чисто Go-реалізації для пакетів на кшталт net та os/user. Без цього бінарний файл мав би динамічні залежності від libc. GOOS та GOARCH визначають цільову платформу. Поєднання цих прапорців створює повністю статичний бінарний файл без зовнішніх залежностей, ідеальний для scratch. ## Ще 17 доступних питань - Як оптимізувати кешування шарів Docker під час збірки Go-застосунку? - Яка перевага використання образів Google Distroless для Go порівняно зі scratch? Зареєструйся безкоштовно: https://sharpskill.dev/uk/login ## Інші теми співбесід Go - [Основи Go](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/go-basics.md): 25 запитань, Junior - [Структури даних Go](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/go-data-structures.md): 20 запитань, Junior - [Інтерфейси Go](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/go-interfaces.md): 18 запитань, Junior - [Обробка помилок](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/error-handling.md): 20 запитань, Junior - [Основи goroutines](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/goroutines-basics.md): 20 запитань, Junior - [Channels](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/channels.md): 22 запитань, Junior - [Go Modules](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/go-modules.md): 18 запитань, Mid-Level - [HTTP-сервер](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/http-server.md): 24 запитань, Mid-Level - [HTTP-клієнт](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/http-client.md): 18 запитань, Mid-Level - [Кодування JSON](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/json-encoding.md): 20 запитань, Mid-Level - [Database/SQL](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/database-sql.md): 22 запитань, Mid-Level - [Пакет context](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/context-package.md): 20 запитань, Mid-Level - [Testing](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/testing.md): 22 запитань, Mid-Level - [Патерни конкурентності](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/concurrency-patterns.md): 24 запитань, Mid-Level - [Примітиви синхронізації](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/sync-primitives.md): 22 запитань, Mid-Level - [Веб-фреймворки Go](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/go-web-frameworks.md): 20 запитань, Mid-Level - [Проєктування REST API](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/rest-api-design.md): 20 запитань, Mid-Level - [gRPC](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/grpc.md): 22 запитань, Mid-Level - [Reflection](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/reflection.md): 20 запитань, Senior - [Керування пам'яттю](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/memory-management.md): 24 запитань, Senior - [Оптимізація продуктивності](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/performance-optimization.md): 22 запитань, Senior - [Generics](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/generics.md): 20 запитань, Senior - [Go Design Patterns](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/design-patterns.md): 24 запитань, Senior - [Microservices](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/microservices.md): 24 запитань, Senior - [Безпека та автентифікація](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/security-authentication.md): 24 запитань, Senior - [Kubernetes Basics](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/kubernetes-basics.md): 22 запитань, Senior - [Просунутий Go](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/advanced-go.md): 20 запитань, Senior - [Розробка CLI](https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/cli-development.md): 20 запитань, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/uk/technologies/go/pytannia-spivbesidy/docker-containerization