# Docker & Containerization (Go) > Dockerfile, multi-stage builds, image optimization, docker-compose, container orchestration - 20 questions d'entretien - Senior - [Questions d'entretien: Go](https://sharpskill.dev/fr/technologies/go/questions-entretien.md) ## 1. Quelle est la principale raison d'utiliser un multi-stage build pour une application Go ? **Réponse** Le multi-stage build permet de séparer l'environnement de compilation de l'image finale. L'étape de build contient le SDK Go complet (plusieurs centaines de Mo), tandis que l'image finale ne contient que le binaire compilé. Cela réduit drastiquement la taille de l'image (de ~800MB à quelques MB) et minimise la surface d'attaque en éliminant les outils de compilation inutiles en production. ## 2. Quelle image de base est recommandée pour une application Go en production pour minimiser la taille et la surface d'attaque ? **Réponse** L'image scratch est une image vide sans système d'exploitation. Go compile en binaires statiques qui n'ont pas besoin de libc ou d'autres dépendances système, ce qui permet d'utiliser scratch. Cela produit les images les plus petites possibles (quelques MB) et offre la meilleure sécurité car il n'y a aucun outil ni shell exploitable. Distroless et alpine sont des alternatives valides mais moins optimales. ## 3. Quels flags de compilation Go sont nécessaires pour créer un binaire compatible avec une image scratch ? **Réponse** CGO_ENABLED=0 désactive cgo, forçant Go à utiliser des implémentations pure Go pour les packages comme net et os/user. Sans cela, le binaire aurait des dépendances dynamiques vers libc. GOOS et GOARCH spécifient la plateforme cible. Ces flags combinés produisent un binaire entièrement statique sans dépendances externes, idéal pour scratch. ## 17 questions supplémentaires disponibles - Comment optimiser le cache des layers Docker lors du build d'une application Go ? - Quel est l'avantage d'utiliser les images Google Distroless pour Go par rapport à scratch ? S'inscrire gratuitement: https://sharpskill.dev/fr/login ## Autres sujets d'entretien Go - [Les bases de Go](https://sharpskill.dev/fr/technologies/go/questions-entretien/go-basics.md): 25 questions, Junior - [Structures de données Go](https://sharpskill.dev/fr/technologies/go/questions-entretien/go-data-structures.md): 20 questions, Junior - [Interfaces Go](https://sharpskill.dev/fr/technologies/go/questions-entretien/go-interfaces.md): 18 questions, Junior - [Gestion des erreurs](https://sharpskill.dev/fr/technologies/go/questions-entretien/error-handling.md): 20 questions, Junior - [Goroutines basiques](https://sharpskill.dev/fr/technologies/go/questions-entretien/goroutines-basics.md): 20 questions, Junior - [Channels](https://sharpskill.dev/fr/technologies/go/questions-entretien/channels.md): 22 questions, Junior - [Go Modules](https://sharpskill.dev/fr/technologies/go/questions-entretien/go-modules.md): 18 questions, Confirmé - [Serveur HTTP](https://sharpskill.dev/fr/technologies/go/questions-entretien/http-server.md): 24 questions, Confirmé - [Client HTTP](https://sharpskill.dev/fr/technologies/go/questions-entretien/http-client.md): 18 questions, Confirmé - [Encodage JSON](https://sharpskill.dev/fr/technologies/go/questions-entretien/json-encoding.md): 20 questions, Confirmé - [Database/SQL](https://sharpskill.dev/fr/technologies/go/questions-entretien/database-sql.md): 22 questions, Confirmé - [Package context](https://sharpskill.dev/fr/technologies/go/questions-entretien/context-package.md): 20 questions, Confirmé - [Testing](https://sharpskill.dev/fr/technologies/go/questions-entretien/testing.md): 22 questions, Confirmé - [Patterns de concurrence](https://sharpskill.dev/fr/technologies/go/questions-entretien/concurrency-patterns.md): 24 questions, Confirmé - [Primitives de synchronisation](https://sharpskill.dev/fr/technologies/go/questions-entretien/sync-primitives.md): 22 questions, Confirmé - [Frameworks web Go](https://sharpskill.dev/fr/technologies/go/questions-entretien/go-web-frameworks.md): 20 questions, Confirmé - [Design d'API REST](https://sharpskill.dev/fr/technologies/go/questions-entretien/rest-api-design.md): 20 questions, Confirmé - [gRPC](https://sharpskill.dev/fr/technologies/go/questions-entretien/grpc.md): 22 questions, Confirmé - [Reflection](https://sharpskill.dev/fr/technologies/go/questions-entretien/reflection.md): 20 questions, Senior - [Gestion mémoire](https://sharpskill.dev/fr/technologies/go/questions-entretien/memory-management.md): 24 questions, Senior - [Optimisation des performances](https://sharpskill.dev/fr/technologies/go/questions-entretien/performance-optimization.md): 22 questions, Senior - [Generics](https://sharpskill.dev/fr/technologies/go/questions-entretien/generics.md): 20 questions, Senior - [Design Patterns Go](https://sharpskill.dev/fr/technologies/go/questions-entretien/design-patterns.md): 24 questions, Senior - [Microservices](https://sharpskill.dev/fr/technologies/go/questions-entretien/microservices.md): 24 questions, Senior - [Sécurité & Authentication](https://sharpskill.dev/fr/technologies/go/questions-entretien/security-authentication.md): 24 questions, Senior - [Kubernetes Basics](https://sharpskill.dev/fr/technologies/go/questions-entretien/kubernetes-basics.md): 22 questions, Senior - [Go Avancé](https://sharpskill.dev/fr/technologies/go/questions-entretien/advanced-go.md): 20 questions, Senior - [Développement CLI](https://sharpskill.dev/fr/technologies/go/questions-entretien/cli-development.md): 20 questions, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/fr/technologies/go/questions-entretien/docker-containerization