Avito'daki proje hakkında daha detaylı anlat — üç yıl içinde tek proje miydi?
Golang
Goroutine'daki msg'nin tipi nedir ve neden argüman olarak geçirilmelidir?
func (c *Client) Send(ctx context.Context, messages []Message, maxWorkers int) error { sem := make(chan struct{}, maxWorkers) var wg sync.WaitGroup var resultErr error var once sync.Once for _, msg := range messages { wg.Add(1) go func(msg Message) { defer wg.Done() sem <- struct{}{} defer func() { <-sem }() body, err := json.Marshal(msg) if err != nil { once.Do(func() { resultErr = err; cancel() }) return } req, _ := http.NewRequestWithContext( ctx, http.MethodPost, c.url, bytes.NewReader(body), ) req.Header.Set("Content-Type", "application/json") resp, err := c.httpClient.Do(req) if err != nil { once.Do(func() { resultErr = err; cancel()}) return } defer resp.Body.Close() if resp.StatusCode >= 500 { once.Do(func() { resultErr = fmt.Errorf("server error") cancel()}) return } c.sentCount.Add(1) time.Sleep(time.Second) }(msg) } wg.Wait() }
Başka işverenlerle anlaşmalarınız var mı yoksa henüz mülakat aşamalarında mısınız?
Hangi noktada defer resp.Body.Close() yapılmalı?
SQL ile ilgili deneyiminiz nedir? Sorguları yazıp optimize edebiliyor musunuz?
/* Geliştiriciye bildirim gönderme servisi yazma görevi verildi. Gereksinimler: - Send yöntemi mesajları paralel olarak göndermeli. - Aynı anda en fazla maxworkers HTTP isteği çalışabilir. - En az bir gönderim hata verirse, diğerleri durdurulmalı ve hata döndürülmeli. - Yöntem, bağlam iptalini doğru şekilde işleyecek. - Tüm kaynaklar düzgün şekilde serbest bırakılmalı. - Yöntem, farklı goroutine'lerden eşzamanlı olarak çağrılabilir. - Client, başarıyla gönderilen mesajların sayısını tutmalı. Kod incelemesi yapmalı, sorunları bulmalı ve kodu düzeltmeli.
Go ile geliştirme konusunda genel ticari deneyiminiz nedir?
sentCount senkronizasyon olmadan iletiliyor — bunu nasıl düzeltebilirim?
İngilizce teknik dokümantasyonla çalışmak rahat olacak mı?
Neden resultErr doğrudan goroutine'den dönmüyor?
Yeni bir projede ne arıyorsun? Hangi teknolojiler ilgini çekiyor? Yeni iş yerinde görmek istemediğin şeyler nelerdir?
Bana TümAraçlar hakkında anlat — neden geldin ve neden gittin?
Bu kodda bağlamlar nerede sona eriyor?
Hızlı oyunlar nedir?
Veritabanı sorgusuna bağlam iletmezseniz ne olur?
İndeks ne zaman işe yaramaz veya hatta zarar verir?
Bir Go servisi için CI/CD boru hattında genellikle hangi aşamalar (stages) bulunur?