Mülakat Sorularında
Donup Kalmaya Son!
Kod yazabiliyor ama mülakatta teorik kavram sorulduğunda tıkanıyor musun? Günlük hayat analojileri, nokta atışı mülakat cevapları ve topluluktan gelen gerçek sorularla refleks kazan.
Go (Golang) Kavramları
4 TerimGoroutines & Go Runtime Scheduler: GMP Modeli
Go'nun 2 KB bellek ile milyonlarca mikro iş parçacığını yönetme sırrı: G, M, P.
Bir restoranda: G (Müşteri siparişi/Goroutine), M (Fiziksel aşçı/OS Thread), P (Aşçının çalıştığı tezgah/Processor bağlamı). Bir aşçı yemeğin kaynamasını beklerken diğer tezgahtaki siparişi çalar (Work Stealing).
"Go scheduler işletim sistemi çekirdeğinde değil, kullanıcı alanında (User-space) çalışan işbirlikçi ve öncelikli (cooperative & preemptive) bir planlayıcıdır. Syscall veya kanal beklemesinde M bloke olursa P hemen başka bir M ile eşleşerek diğer goroutine'leri koşturmaya devam eder."
Go Kanalları (Channels): Buffered vs Unbuffered & Select İfadesi
"Belleği paylaşarak iletişim kurma; iletişim kurarak belleği paylaş!"
Unbuffered: El sıkışmadır; sen elini uzattığında karşı taraf tutana kadar havada donup beklersin. Buffered: Posta kutusudur; kutu dolana kadar mektupları atıp gidersin, kutu dolunca postacı bekler.
"Unbuffered kanallar kesin senkronizasyon garantisi verirken, Buffered kanallar kuyruk işlevi görerek anlık yük patlamalarını dengeler. Kapanmış (closed) bir kanala veri göndermek panic fırlatır; ancak kapalı kanaldan veri okumak sıfır değer (zero value) ve false döner."
Go Context Paketi: WithCancel, WithTimeout & Graceful Shutdown
Kullanıcı sayfayı kapattığında arkadaki tüm veritabanı sorgularını anında iptal etme emri.
Merkezden gelen "Geri çekilin!" telsiz anonsudur. Bir operasyon iptal edildiğinde (Cancel/Timeout) operasyona bağlı tüm askerler (alt goroutine'ler) derhal işi bırakır.
"Context, dağıtık sistemlerde kaynak israfını önleyen en kritik Go yapısıdır. Bir HTTP isteği kesildiğinde veya 2 saniye kuralı aşıldığında context.Done() kanalı kapanır; altındaki veritabanı ve HTTP istekleri erken sonlandırılarak sunucu kaynakları kurtarılır."
Escape Analysis: Belleğin Stack mi Heap mi Olduğuna Karar Verme
Go derleyicisinin "Bu değişken fonksiyondan kaçtı mı?" dedektifliği.
Bir toplantıda aldığın geçici not masada kalır (Stack). Ama toplantıdan sonra patrona verdiğin rapor şirketin ortak arşivine kaldırılır (Heap).
"Stack tahsisleri sıfır maliyetlidir çünkü fonksiyon bitince Stack pointer geri çekilir. Heap tahsisleri ise GC yükü yaratır. Go derleyicisi bir nesnenin ömrünün fonksiyon kapsamını aştığını tespit ederse onu otomatik olarak Heap'e taşır."
Topluluk Mülakat Akışı
Adayların dün veya yakın zamanda girdikleri mülakatlarda karşılaştıkları gerçek sorular: