
Golang Mülakat Soruları
Golang (Go), Google tarafından geliştirilen, basitliği, performansı ve eşzamanlı işlem (concurrency) desteğiyle öne çıkan modern bir programlama dilidir. Backend geliştirme, mikroservis mimarileri, veritabanı entegrasyonları ve yüksek performanslı uygulamalar gibi birçok alanda yaygın olarak kullanılmaktadır.
Bu yazıda; golang mülakat soruları, golang interview questions and answers, golang backend mülakat soruları, golang concurrency mülakat soruları, golang microservices mülakat soruları, golang database integration mülakat soruları, golang performance optimization mülakat soruları, golang error handling mülakat soruları gibi anahtar alanlara dair örnek sorular, ipuçları ve örnek kodlarla zenginleştirilmiş açıklamalar bulacaksınız.
1. Go Dilinin Temelleri Nelerdir?
Go statik tipli, derlemeli ve yüksek performanslı bir dildir. Basit sözdizimi, hızlı derlenme süresi ve eşzamanlı işlem kabiliyetiyle dikkat çeker.
Neden Golang?
- Statik tip kontrolü: Derleme zamanında hata tespiti
- Hafif syntax: Kolay okunabilir ve öğrenilebilir
- Garbage collection: Otomatik bellek yönetimi
- Goroutines & Channels: Concurrency desteği
- Cross-platform binary üretme: Tek komutla farklı işletim sistemlerine derleme
Basit bir Go programı:
package main
import "fmt"func main() {
fmt.Println("Merhaba Golang!")
}
2. Goroutines ve Channels Nedir? Nasıl Kullanılır?
- Goroutines, Go'daki hafif iş parçacıklarıdır. go anahtar kelimesiyle başlatılırlar.
- Channels, goroutine'ler arasında veri aktarımı yapmak için kullanılır.
Örnek:
package main
import (
“fmt”
“time”
)func yaz(mesaj string) {
for i := 0; i < 3; i++ {
fmt.Println(mesaj)
time.Sleep(time.Millisecond * 500)
}
}func main() {
go yaz("Techcareer")
yaz("Golang")
}
Bu kodda yaz("Techcareer") bir goroutine olarak ayrı çalışır.
Channel örneği:
func mesajGonder(ch chan string) {
ch <- “Merhaba Channel!”
}func main() {
ch := make(chan string)
go mesajGonder(ch)
fmt.Println(<-ch)
}
3. Golang'de Hata Yönetimi (Error Handling)
Go'da istisna (exception) mekanizması yoktur. Bunun yerine error tipi ile hata kontrolü yapılır.
Örnek:
import “errors”
func bol(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("bölen sıfır olamaz")
}
return a / b, nil
}
Kullanım:
sonuc, err := bol(10, 0)
if err != nil {
fmt.Println("Hata:", err)
} else {
fmt.Println("Sonuç:", sonuc)
}
4. Veritabanı Entegrasyonu
Go, veritabanlarına bağlanmak için database/sql ve sürücü paketlerini kullanır.
PostgreSQL bağlantısı örneği:
import (
“database/sql”
_ “github.com/lib/pq”
)db, err := sql.Open("postgres", "user=foo dbname=bar sslmode=disable")
Veri çekme:
rows, err := db.Query("SELECT id, name FROM users")
5. Performans Optimizasyonu Teknikleri
Golang, doğal olarak hızlıdır. Ancak özellikle büyük sistemlerde performansı daha da artırmak için dikkat edilmesi gereken bazı noktalar vardır:
Optimizasyon için öneriler:
- Gereksiz goroutine kullanımından kaçının.
- Yapılarınızda pointer kullanın (gereksiz kopyalamayı önlemek için).
- Veri yapısı seçimine dikkat edin: map, slice, array gibi yapılar arasında uygun olanı seçin.
- Profiling yapın: pprof paketi ile uygulamanızın CPU ve memory kullanımını ölçebilirsiniz.
- sync.Pool: Sık kullanılan nesneleri yeniden kullanarak allocation maliyetini düşürür.
Örnek:
var pool = sync.Pool{
New: func() interface{} {
return new(bytes.Buffer)
},
}
buf := pool.Get().(*bytes.Buffer)
defer pool.Put(buf)
6. Golang ile Mikroservis Mimarisi
Mikroservisler küçük, bağımsız ve belirli bir işlevi yerine getiren servislerdir. Go’nun hızı ve concurrency modeli, mikroservis mimarileri için oldukça uygundur.
Mikroservis geliştirme için:
- net/http veya gin-gonic gibi framework’ler kullanılır.
- Docker ve Kubernetes ile containerize edilir.
- gRPC ile daha performanslı haberleşme sağlanabilir.
Basit REST Servis Örneği (net/http):
import (
“fmt”
“net/http”
)func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Merhaba Mikroservis!")
}func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
7. JSON İşleme
Go'da JSON verileri encoding/json paketi ile kolayca işlenir.
JSON Parse Etme:
type Kullanici struct {
Ad string `json:"ad"`
Yas int `json:"yas"`
}veri := `{"ad": "Ahmet", "yas": 30}`
var k Kullanici
json.Unmarshal([]byte(veri), &k)
8. Unit Test ve Benchmark
Go, yerleşik test araçları (testing paketi) ile gelir. Kodun doğruluğu ve performans ölçümü yapılabilir.
Unit Test Örneği:
func Topla(a, b int) int {
return a + b
}
func TestTopla(t *testing.T) {
sonuc := Topla(2, 3)
if sonuc != 5 {
t.Errorf("Beklenen 5, gelen %d", sonuc)
}
}
Benchmark Testi:
func BenchmarkTopla(b *testing.B) {
for i := 0; i < b.N; i++ {
Topla(2, 3)
}
}
9. Sık Sorulan Golang Mülakat Soruları
- Go pointer nedir? Nasıl kullanılır?
A pointer, bir değişkenin bellekteki adresini tutar.
- Defer ne işe yarar?
Fonksiyon bitiminde çalıştırılacak işlemler için kullanılır (örneğin dosya kapama).
- Channel ve buffered channel farkı nedir?
Buffered channel belli kapasiteye kadar veri tutabilir. Normal channel sadece eşzamanlı veri aktarır.
- Interface nedir?
Go’da interface, davranış tanımıdır. Birden fazla yapının aynı davranışı göstermesini sağlar.
- Go'da struct nedir? Neden kullanılır?
Struct, veri modelleri tanımlamak için kullanılır. JSON işleme, veri transfer objeleri için yaygındır.
10. İpuçları & Best Practices
- Kodunuzu go fmt ile otomatik biçimlendirin.
- Error handling’i her zaman önemseyin, if err != nil kontrolünü asla atlamayın.
- Büyük projelerde modüler mimari tercih edin.
- context paketini kullanarak HTTP isteklerini daha kontrollü yönetin.
- go vet, golint, staticcheck gibi araçlarla kodunuzu analiz edin.
Golang, hem başlangıç hem de ileri seviye yazılımcılar için performans ve sürdürülebilirlik açısından güçlü bir tercihtir. Bu yazıda golang mülakat soruları, golang concurrency mülakat soruları, golang database integration mülakat soruları, golang microservices mülakat soruları, golang error handling mülakat soruları gibi alanlara dair detaylı bilgi ve örnekler sunduk.
Techcareer.net’in eğitim programlarına katılarak Golang becerilerini geliştirebilir, iş ilanlarına göz atarak yeni kariyer fırsatları yakalayabilirsin.
Hemen kayıt ol ve Techcareer.net’in sunduğu fırsatlarla kariyerini bir üst seviyeye taşı! 🚀
Ücretsiz eğitimlerimiz seni bekliyor.
Her biri alanında uzman eğitmenler tarafından hazırlanmış eğitimlerimizden sana uygun olanı keşfedip, hemen eğitime başlayabilirsin. Süre kısıtlaması olmayan eğitimlerimizi, hiç bir ücret ödemeden hemen keşfetmeye başla.



