Vertel me meer over het project bij Avito — was het het enige project in drie jaar?
Golang
Wat voor type heeft msg in de goroutine en waarom moet het als argument worden doorgegeven?
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() }
/* Aan de ontwikkelaar is de taak toegewezen om een notificatieservice te schrijven. Vereisten: - De Send-methode moet berichten parallel verzenden. - Er mogen niet meer dan maxworkers HTTP-verzoeken gelijktijdig worden uitgevoerd. - Als ten minste één verzending mislukt, moeten de andere worden gestopt en moet een fout worden geretourneerd. - De methode moet correct omgaan met het annuleren van de context. - Alle bronnen moeten correct worden vrijgegeven. - De methode kan gelijktijdig worden aangeroepen vanuit verschillende goroutines. - Client moet het aantal succesvol verzonden berichten bijhouden. Voer een code review uit, vind problemen en corrigeer de code.
Op welke plek moet je defer resp.Body.Close() doen?
Heb je afspraken met andere werkgevers of ben je nog bezig met sollicitatiegesprekken?
Waarom wordt resultErr niet rechtstreeks uit de goroutine geretourneerd?
Wat is je algemene commerciële ervaring met ontwikkeling in Go?
Zal het comfortabel zijn om met technische documentatie in het Engels te werken?
Vertel me over AlleGereedschappen — waarom ben je gekomen en waarom ben je vertrokken?
Waar eindigen de contexten in deze code?
Welke ervaring heb je met SQL? Kun je queries schrijven en optimaliseren?
Wat zijn snelle spellen?
sentCount wordt zonder synchronisatie verzonden — hoe los je dit op?
Wat gebeurt er als je de context niet doorgeeft in een databasequery?
Wat zoek je in een nieuw project? Welke technologieën interesseren je? Wat zou je niet willen zien op een nieuwe werkplek?
Wanneer helpt de index niet of schaadt zelfs?
Welke fasen (stages) zitten er meestal in een CI/CD-pipeline voor een Go-service?