Sobes.tech

Golang

Řekni mi víc o projektu v Avitu — byl to jediný projekt za tři roky?

Senior
222

Jaký typ má msg v gorutině a proč je třeba ho předat jako argument?

Senior
208

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
206

/* Vývojáři byla zadána úloha napsat službu pro odesílání oznámení. Požadavky: - Metoda Send by měla odesílat zprávy paralelně. - Současně nesmí být prováděno více než maxworkers HTTP požadavků. - Pokud alespoň jedno odeslání selže, ostatní je třeba zastavit a vrátit chybu. - Metoda by měla správně zpracovávat zrušení kontextu. - Všechny zdroje by měly být správně uvolněny. - Metoda může být volána konkurenčně z různých gorutin. - Client by měl sledovat počet úspěšně odeslaných zpráv. Je třeba provést revizi kódu, najít problémy a opravit kód.

Senior
190

Kde je třeba udělat defer resp.Body.Close()?

Senior
186

Jaké máte celkové obchodní zkušenosti s vývojem v Go?

Senior
173

Proč resultErr není přímo vrácen z gorutiny?

Senior
171

Bude vám pohodlné pracovat s technickou dokumentací v angličtině?

Senior
168

Pověz mi o VšechNástrojích — proč jsi přišel a proč odešel?

Senior
166

Existují dohody s jinými zaměstnavateli nebo právě procházíte fázemi pohovorů?

Senior
162

Kde končí kontexty v tomto kódu?

Senior
159

Co jsou to rychlé hry?

Senior
158

Jaké máš zkušenosti s SQL? Umíš psát a optimalizovat dotazy?

Senior
158

Co se stane, pokud v dotazu do databáze nepředáte kontext?

Senior
152

sentCount je přenášen bez synchronizace — jak to opravit?

Senior
149

Co hledáš v novém projektu? Jaké technologie tě zajímají? Co bys nechtěl vidět na novém pracovním místě?

Senior
147

Kdy index nepomůže nebo dokonce uškodí?

Senior
127

Jaké fáze (stages) jsou obvykle v CI/CD pipeline pro Go službu?

Senior
106