Sobes.tech

Golang

Parlami più dettagliatamente del progetto in Avito — è stato l'unico progetto in tre anni?

Senior
196

Qual è il tipo di msg nella goroutine e perché è necessario passarla come argomento?

Senior
177

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
175

Hai accordi con altri datori di lavoro o sei ancora in fase di colloqui?

Senior
158

In quale punto bisogna fare defer resp.Body.Close()?

Senior
156

Quale esperienza hai con SQL? Sai scrivere e ottimizzare le query?

Senior
155

/* Al sviluppatore è stato assegnato il compito di scrivere un servizio di invio notifiche. Requisiti: - Il metodo Send deve inviare i messaggi in parallelo. - Non devono essere in esecuzione più di maxworkers richieste HTTP contemporaneamente. - Se almeno una spedizione fallisce, le altre devono essere interrotte e deve essere restituito un errore. - Il metodo deve gestire correttamente l'annullamento del contesto. - Tutte le risorse devono essere rilasciate correttamente. - Il metodo può essere chiamato in modo concorrente da diverse goroutine. - Client deve tenere traccia del numero di messaggi inviati con successo. È necessario fare una revisione del codice, trovare problemi e correggere il codice.

Senior
151

Qual è la tua esperienza commerciale generale nello sviluppo con Go?

Senior
148

sentCount viene trasmesso senza sincronizzazione — come correggere?

Senior
144

Sarà comodo lavorare con la documentazione tecnica in inglese?

Senior
140

Perché resultErr non viene restituito direttamente dalla goroutine?

Senior
138

Cosa cerchi in un nuovo progetto? Quali tecnologie ti interessano? Cosa non vorresti vedere in un nuovo posto di lavoro?

Senior
138

Parlami di TuttiGliStrumenti — perché sei venuto e perché sei andato?

Senior
136

Dove terminano i contesti in questo codice?

Senior
131

Cosa sono i giochi veloci?

Senior
128

Cosa succede se non si passa il contesto in una query al database?

Senior
124

Quando l'indice non aiuta o addirittura danneggia?

Senior
124

Quali fasi (stages) ci sono di solito in una pipeline CI/CD per un servizio Go?

Senior
86