Sobes.tech

Golang

Ispričaj više o projektu u Avitu — da li je to bio jedini projekat u tri godine?

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

Koji je tip msg u gorutini i zašto ga treba proslediti kao argument?

Senior
184

/* Programer je dobio zadatak da napiše servis za slanje obaveštenja. Zahtevi: - Metoda Send treba da šalje poruke paralelno. - Ne sme biti više od maxworkers HTTP zahteva istovremeno. - Ako bar jedno slanje ne uspe, ostali treba da se zaustave i da se vrati greška. - Metoda treba da pravilno obrađuje otkazivanje konteksta. - Svi resursi treba da budu pravilno oslobođeni. - Metoda može biti pozvana konkurentno iz različitih gorutina. - Client treba da prati broj uspešno poslatih poruka. Potrebno je izvršiti reviziju koda, pronaći probleme i ispraviti kod.

Senior
182

Na kojem mestu treba uraditi defer resp.Body.Close()?

Senior
181

Koje je vaše opšte komercijalno iskustvo u razvoju sa Go?

Senior
170

Da li će biti udobno raditi sa tehničkom dokumentacijom na engleskom jeziku?

Senior
167

Ispričaj mi o SveAlatima — zašto si došao i zašto si otišao?

Senior
163

Da li imate dogovore sa drugim poslodavcima ili još prolazite kroz faze intervjua?

Senior
158

Koje iskustvo imaš sa SQL-om? Znaš li da pišeš i optimizuješ upite?

Senior
157

Šta su brze igre?

Senior
156

Где се завршавају контексти у овом коду?

Senior
154

Šta će se desiti ako ne prosledite kontekst u upitu ka bazi podataka?

Senior
151

sentCount se prenosi bez sinhronizacije — kako to popraviti?

Senior
145

Šta tražiš u novom projektu? Koje tehnologije te zanimaju? Čega ne želiš da vidiš na novom radnom mestu?

Senior
143

Zašto resultErr nije direktno vraćen iz gorutine?

Senior
141

Када индекс не помаже или чак штети?

Senior
125

Koje faze (stages) obično postoje u CI/CD pipeline-u za Go servis?

Senior
90