Sobes.tech

Golang

Pastāsti vairāk par projektu Avito — vai tas bija vienīgais projekts trīs gadu laikā?

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
222

Kāda veida ir msg gorutīnā un kāpēc to ir nepieciešams nodot kā argumentu?

Senior
213

/* Programētājam tika uzdots uzrakstīt paziņojumu sūtīšanas pakalpojumu. Prasības: - Send metode jānosūta ziņas paralēli. - Vienlaikus nedrīkst darboties vairāk par maxworkers HTTP pieprasījumiem. - Ja vismaz viens sūtījums neizdodas, pārējie jāaptur un jāatgriež kļūda. - Metode jāpareizi apstrādā konteksta atcelšanu. - Visi resursi jāatbrīvo pareizi. - Metode var tikt izsaukta konkurētspējīgi no dažādām gorutīnām. - Klients jāuztur veiksmīgi nosūtīto ziņojumu skaits. Jāveic koda pārskatīšana, jāatrod problēmas un jālabo kods.

Senior
194

Kāpēc resultErr netiek atgriezts tieši no goroutine?

Senior
194

Vai ir vieno darba devēja vienošanās ar citiem darba devējiem vai vēl turpināt intervijas?

Senior
192

Kur jāveic defer resp.Body.Close()?

Senior
191

Kāda ir jūsu kopējā komerciālā pieredze ar Go izstrādē?

Senior
181

Vai būs ērti strādāt ar tehnisko dokumentāciju angļu valodā?

Senior
179

Pastāsti man par VisusInstrumentus — kāpēc tu atnāci un kāpēc aizgāji?

Senior
177

Kāda ir tava pieredze ar SQL? Vai tu proti rakstīt un optimizēt vaicājumus?

Senior
171

Kur beidzas konteksti šajā kodā?

Senior
170

Kas ir ātrie spēles?

Senior
162

sentCount tiek bez sinhronizācijas — kā to labot?

Senior
157

Ko meklē jaunajā projektā? Kādas tehnoloģijas tevi interesē? Ko nevēlētos redzēt jaunajā darba vietā?

Senior
156

Kas notiks, ja neievadīsiet kontekstu datu bāzes vaicājumā?

Senior
154

Kad indekss nepalīdz vai pat kaitē?

Senior
136

Kādi posmi (stages) parasti ir CI/CD pipeline Go pakalpojumam?

Senior
131