¿Puedes contarme más sobre el proyecto en Avito? ¿Fue el único proyecto en tres años?
Golang
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() }
¿Qué tipo tiene msg en la gorutina y por qué es necesario pasarlo como argumento?
¿En qué lugar se debe hacer defer resp.Body.Close()?
/* Se le asignó al desarrollador la tarea de escribir un servicio de envío de notificaciones. Requisitos: - El método Send debe enviar mensajes en paralelo. - No puede haber más de maxworkers solicitudes HTTP ejecutándose simultáneamente. - Si al menos un envío falla, se deben detener los demás envíos y devolver un error. - El método debe manejar correctamente la cancelación del contexto. - Todos los recursos deben liberarse correctamente. - El método puede ser llamado concurrentemente desde diferentes goroutines. - Client debe mantener la cantidad de mensajes enviados con éxito. Se requiere hacer una revisión de código, encontrar problemas y corregir el código.
¿Cuál es tu experiencia comercial general en desarrollo con Go?
¿Será cómodo trabajar con la documentación técnica en inglés?
Cuéntame sobre Todoslosinstrumentos: ¿por qué viniste y por qué te fuiste?
¿Tienes acuerdos con otros empleadores o estás en proceso de entrevistas?
¿Qué experiencia tienes con SQL? ¿Sabes escribir y optimizar consultas?
¿Qué son los juegos rápidos?
¿Qué sucede si no se pasa el contexto en una consulta a la base de datos?
sentCount se transmite sin sincronización — ¿cómo corregir esto?
¿Dónde terminan los contextos en este código?
¿Qué buscas en un nuevo proyecto? ¿Qué tecnologías te interesan? ¿Qué no te gustaría ver en un nuevo lugar de trabajo?
¿Por qué resultErr no se devuelve directamente desde la gorutina?
¿Cuándo el índice no ayuda o incluso perjudica?
¿Qué etapas (stages) suelen estar en un pipeline CI/CD para un servicio Go?