Inbox ve Outbox desenlerini kullandınız mı?
Golang
Görev: «Timeout ile ping-pong» pingPong adında bir fonksiyon yazın: - İki goroutine başlatın: biri "ping" mesajları üretir, diğeri — "pong". - Goroutine'ler, ortak bir kanal üzerinden sırayla mesaj alışverişi yapmalıdır. - Takas 3 saniye devam eder, ardından program düzgün şekilde kapanmalıdır. - Zaman aşımıyla iptal için bir bağlam kullanın. - Her mesajı ekranlara, başlangıçtan itibaren milisaniye cinsinden zamanla birlikte yazdırın. Beklenen çıktı örneği: 0ms: ping
Basit canlı kodlama görevi (temel eşzamanlılık) Koşul: fetchAll(urls []string) map[string]string fonksiyonunu yaz, her URL için eşzamanlı olarak HTTP GET isteği yap ve anahtar URL, değer ise yanıt gövdesi (string) olan bir harita döndür. İstek başarısız olursa (hata, 200 değilse), değer boş bir dize olacak. Kısıtlamalar: - Dış kütüphaneler kullanılamaz (sadece standartlar). - İmza değiştirilemez. - Program, http.Get'te panik olursa çökmemeli. Giriş örneği: ["[link]" "[link]" "[link]"]
package main import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }
Tüm 1000 öğeyi içerecek şekilde mutex olmadan dilim öğeleri doldurun.
İdempotansı nasıl sağladınız?
Loglar nerede saklandı?
Mülakatçıya ne söyleyebilirsiniz (sorarlarsa) "Fiks bir işçi sayısına sahip worker havuzu, görevler için bir kanal ve sync.WaitGroup kullanırdım. İşçiler istekleri yapacak, zaman aşımı ve iptal ise bağlam aracılığıyla kontrol edilecek. Sonuçları, bir mutex ile korunan bir tamponda toplayacağım (veya ayrı bir kanal aracılığıyla)." Şimdi sıra sende Bu sohbette kodu yaz. Kontrol edeceğim ve geri bildirimde bulunacağım. Nereden başlayacağınızı bilmiyorsanız, ipucu isteyin. İyi şanslar!
Dağıtılmış izleme hakkında duydun mu?
// tüm slice öğeleri benzersiz olmalı + toplamda 1000 öğe içermelidir // program, time.sleep nedeniyle gereksiz yere takılmamalıdır func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("kopya artış") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }
Bir işlevin argümanı işaretçi ise, işaretçi nedir ve ne olur?
DELETE ile TRUNCATE arasındaki fark nedir?
Postgres'teki kilitler hakkında konuş.
Redis'i nasıl kullandınız?
Son projen hakkında bana anlat.