# Docker & Containerization (Go) > Dockerfile, multi-stage build, optimasi image, docker-compose, orkestrasi container - 20 pertanyaan wawancara - Senior - [Pertanyaan Wawancara: Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara.md) ## 1. Apa alasan utama menggunakan multi-stage build untuk aplikasi Go? **Jawaban** Multi-stage build memisahkan lingkungan kompilasi dari image akhir. Stage build berisi SDK Go lengkap (beberapa ratus MB), sedangkan image akhir hanya berisi binary yang telah dikompilasi. Ini secara drastis mengurangi ukuran image (dari ~800MB menjadi beberapa MB) dan meminimalkan permukaan serangan dengan menghilangkan build tools yang tidak diperlukan di produksi. ## 2. Base image mana yang direkomendasikan untuk aplikasi Go di produksi untuk meminimalkan ukuran dan permukaan serangan? **Jawaban** Image scratch adalah image kosong tanpa sistem operasi. Go dikompilasi menjadi binary statis yang tidak memerlukan libc atau dependensi sistem lainnya, sehingga scratch dapat digunakan. Ini menghasilkan image sekecil mungkin (beberapa MB) dan memberikan keamanan terbaik karena tidak ada tools atau shell yang dapat dieksploitasi. Distroless dan alpine adalah alternatif yang valid tetapi kurang optimal. ## 3. Flag kompilasi Go mana yang diperlukan untuk membuat binary yang kompatibel dengan image scratch? **Jawaban** CGO_ENABLED=0 menonaktifkan cgo, memaksa Go menggunakan implementasi pure Go untuk paket seperti net dan os/user. Tanpa ini, binary akan memiliki dependensi dinamis ke libc. GOOS dan GOARCH menentukan platform target. Kombinasi flag ini menghasilkan binary yang sepenuhnya statis tanpa dependensi eksternal, ideal untuk scratch. ## 17 pertanyaan lagi tersedia - Bagaimana cara mengoptimalkan caching layer Docker saat membangun aplikasi Go? - Apa keuntungan menggunakan image Google Distroless untuk Go dibandingkan dengan scratch? Daftar gratis: https://sharpskill.dev/id/login ## Topik wawancara Go lainnya - [Dasar-Dasar Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-basics.md): 25 pertanyaan, Junior - [Struktur Data Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-data-structures.md): 20 pertanyaan, Junior - [Interface Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-interfaces.md): 18 pertanyaan, Junior - [Penanganan Error](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/error-handling.md): 20 pertanyaan, Junior - [Dasar-Dasar Goroutine](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/goroutines-basics.md): 20 pertanyaan, Junior - [Channels](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/channels.md): 22 pertanyaan, Junior - [Go Modules](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-modules.md): 18 pertanyaan, Mid-Level - [Server HTTP](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/http-server.md): 24 pertanyaan, Mid-Level - [Klien HTTP](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/http-client.md): 18 pertanyaan, Mid-Level - [Enkoding JSON](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/json-encoding.md): 20 pertanyaan, Mid-Level - [Database/SQL](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/database-sql.md): 22 pertanyaan, Mid-Level - [Paket context](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/context-package.md): 20 pertanyaan, Mid-Level - [Testing](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/testing.md): 22 pertanyaan, Mid-Level - [Pola Concurrency](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/concurrency-patterns.md): 24 pertanyaan, Mid-Level - [Primitif Sinkronisasi](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/sync-primitives.md): 22 pertanyaan, Mid-Level - [Framework web Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-web-frameworks.md): 20 pertanyaan, Mid-Level - [Desain API REST](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/rest-api-design.md): 20 pertanyaan, Mid-Level - [gRPC](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/grpc.md): 22 pertanyaan, Mid-Level - [Reflection](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/reflection.md): 20 pertanyaan, Senior - [Manajemen Memori](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/memory-management.md): 24 pertanyaan, Senior - [Optimasi Performa](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/performance-optimization.md): 22 pertanyaan, Senior - [Generics](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/generics.md): 20 pertanyaan, Senior - [Go Design Patterns](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/design-patterns.md): 24 pertanyaan, Senior - [Microservices](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/microservices.md): 24 pertanyaan, Senior - [Keamanan dan Autentikasi](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/security-authentication.md): 24 pertanyaan, Senior - [Kubernetes Basics](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/kubernetes-basics.md): 22 pertanyaan, Senior - [Go Tingkat Lanjut](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/advanced-go.md): 20 pertanyaan, Senior - [Pengembangan CLI](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/cli-development.md): 20 pertanyaan, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/docker-containerization