Sobes.tech

Golang

Avito'dagi loyiha haqida batafsilroq aytib bering — bu uch yil ichida yagona loyiha edimi?

Senior
226

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() }

Senior
220

Goroutine'dagi msg ning turi nima va nima uchun uni argument sifatida o'tkazish kerak?

Senior
213

/* Dasturchiga bildirishnoma yuborish xizmatini yozish vazifasi berildi. Talablar: - Send metodi xabarlarni parallel tarzda yuborishi kerak. - Bir vaqtning o'zida maksimal maxworkers HTTP so'rovlari bajarilishi mumkin. - Agar kamida bir yuborish xato bilan tugasa, qolganlarini to'xtatish va xato qaytarish kerak. - Metod kontekst bekor qilishni to'g'ri ishlov berishi kerak. - Barcha resurslar to'g'ri bo'shatilishi kerak. - Metod turli gorutinalardan konkurent ravishda chaqirilishi mumkin. - Client muvaffaqiyatli yuborilgan xabarlar sonini saqlashi kerak. Kod ko'rib chiqishni amalga oshiring, muammolarni toping va kodni tuzating.

Senior
194

Nima uchun resultErr to'g'ridan-to'g'ri gorutindən qaytarilmaydi?

Senior
192

Qaysi joyda defer resp.Body.Close() qilish kerak?

Senior
191

Boshqa ish beruvchilar bilan kelishuvlar mavjudmi yoki hozirda suhbat bosqichlaridasizmi?

Senior
190

Go bilan dasturlash bo'yicha umumiy tijoriy tajribangiz qanday?

Senior
181

HammaAsboblar haqida gapir — nima uchun kelding va nima uchun ketding?

Senior
177

Ingliz tilida texnik hujjat bilan ishlash qulay bo'ladimi?

Senior
177

SQL bilan qanday tajribangiz bor? So'rovlarni yozish va optimallashtirishni bilasizmi?

Senior
171

Ushbu kodda kontekstlar qayerda tugaydi?

Senior
170

Tezkor o'yinlar nima?

Senior
162

sentCount sinxronizatsiya qilmasdan uzatilyapti — buni qanday tuzatish mumkin?

Senior
157

Yangi loyihada nima qidiryapsiz? Qaysi texnologiyalar sizni qiziqtiradi? Yangi ish joyida nima ko'rishni istamaysiz?

Senior
156

Ma'lumotlar bazasiga so'rov yuborishda kontekstni o'tkazmasangiz nima bo'ladi?

Senior
154

Qachon indeks yordam bermaydi yoki hatto zarar keltiradi?

Senior
134

Go-xizmat uchun CI/CD pipelineida odatda qanday bosqichlar (stages) mavjud?

Senior
129
uchun savollar Golang tayyorlash - sobes.tech