Sobes.tech

Golang

Papasakokite daugiau apie projektą Avitoje — ar tai buvo vienintelis projektas per tris metus?

Senior
221

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
185

Koks yra msg tipas gorutinoje ir kodėl jį reikia perduoti kaip argumentą?

Senior
184

/* Programuotojui buvo pavesta parašyti pranešimų siuntimo paslaugą. Reikalavimai: - Send metodas turi siųsti žinutes lygiagrečiai. - Vienu metu negali būti vykdomi daugiau nei maxworkers HTTP užklausų. - Jei bent viena siuntimas nepavyksta, kiti turi būti sustabdyti ir grąžintas klaidos pranešimas. - Metodas turi teisingai tvarkyti konteksto atšaukimą. - Visi ištekliai turi būti teisingai atlaisvinti. - Metodas gali būti kviečiamas konkurencingai iš skirtingų gorutinių. - Klientas turi stebėti sėkmingai išsiųstų žinučių skaičių. Reikia atlikti kodo peržiūrą, rasti problemas ir pataisyti kodą.

Senior
183

Kur reikia daryti defer resp.Body.Close()?

Senior
182

Kokia yra jūsų bendra komercinė patirtis su Go kūrime?

Senior
172

Ar bus patogu dirbti su technine dokumentacija anglų kalba?

Senior
167

Papaskink man apie VisusĮrankius — kodėl atėjai ir kodėl išėjai?

Senior
163

Ar turite susitarimų su kitais darbdaviais ar dar esate interviu etapų procese?

Senior
158

Kokia tavo patirtis su SQL? Ar mokate rašyti ir optimizuoti užklausas?

Senior
157

Kas yra greiti žaidimai?

Senior
156

Kur baigiasi kontekstai šiame kode?

Senior
155

Kas nutiks, jei užklausos į duomenų bazę metu nepateiksite konteksto?

Senior
151

sentCount perduodamas be sinchronizacijos — kaip tai ištaisyti?

Senior
145

Ką ieškai naujame projekte? Kokios technologijos tave domina? Ko nenorėtum matyti naujame darbo vietoje?

Senior
143

Kodėl resultErr nėra grąžinamas tiesiogiai iš goroutine?

Senior
141

Kada indeksas nepadeda arba netgi pakenkia?

Senior
125

Kokios dažniausiai yra CI/CD pipeline etapai (stages) Go paslaugai?

Senior
90