Sobes.tech

Golang

Rääkige mulle rohkem Avito projektist — kas see oli ainus projekt kolme aasta jooksul?

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

Milline on msg tüüp gorutinas ja miks on vaja seda argumentina edasi anda?

Senior
184

/* Programmeerijale anti on ülesandeks kirjutada teavituste saatmise teenus. Nõuded: - Send meetod peab saatma sõnumeid paralleelselt. - Samal ajal ei tohi olla käimas rohkem kui maxworkers HTTP-päringuid. - Kui vähemalt üks saatmine ebaõnnestub, tuleb ülejäänud peatada ja tagastada viga. - Meetod peab õigesti käsitlema konteksti tühistamist. - Kõik ressursid peavad olema õigesti vabastatud. - Meetod võib olla kutsutud konkurentsivõimeliselt erinevatest gorutinest. - Client peab jälgima edukalt saadetud sõnumite arvu. Vajalik on teha koodireview, leida probleemid ja parandada kood.

Senior
183

Kus tuleks teha defer resp.Body.Close()?

Senior
182

Milline on sinu üldine kaubanduslik kogemus Go arendamisel?

Senior
172

Kas on mugav töötada tehnilise dokumentatsiooniga inglise keeles?

Senior
168

Räägi mulle kõigistTööriistadest — miks sa tulid ja miks läksid?

Senior
163

Kas teil on kokkulepped teiste tööandjatega või olete veel intervjuu etappidel?

Senior
161

Mis on kiire mängud?

Senior
157

Milline kogemus sul on SQL-iga? Kas oskad kirjutada ja optimeerida päringuid?

Senior
157

Kus lõppevad kontekstid selles koodis?

Senior
156

Mis juhtub, kui andmebaasi päringus konteksti ei edastata?

Senior
151

sentCount edastatakse ilma sünkroniseerimiseta — kuidas seda parandada?

Senior
145

Miks resultErr ei tagastata otse goroutine'ist?

Senior
143

Mida otsid uues projektis? Millised tehnoloogiad sind huvitavad? Mida sa ei tahaks näha uuel töökohal?

Senior
143

Millal indeks ei aita või isegi kahjustab?

Senior
125

Millised etapid (stages) on tavaliselt CI/CD pipeline'is Go-teenuse jaoks?

Senior
90