Sobes.tech

Golang

¿Puedes contarme más sobre el proyecto en Avito? ¿Fue el único proyecto en tres años?

Senior
220

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

¿Qué tipo tiene msg en la gorutina y por qué es necesario pasarlo como argumento?

Senior
184

¿En qué lugar se debe hacer defer resp.Body.Close()?

Senior
181

/* 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.

Senior
181

¿Cuál es tu experiencia comercial general en desarrollo con Go?

Senior
170

¿Será cómodo trabajar con la documentación técnica en inglés?

Senior
161

Cuéntame sobre Todoslosinstrumentos: ¿por qué viniste y por qué te fuiste?

Senior
160

¿Tienes acuerdos con otros empleadores o estás en proceso de entrevistas?

Senior
158

¿Qué experiencia tienes con SQL? ¿Sabes escribir y optimizar consultas?

Senior
157

¿Qué son los juegos rápidos?

Senior
156

¿Qué sucede si no se pasa el contexto en una consulta a la base de datos?

Senior
151

sentCount se transmite sin sincronización — ¿cómo corregir esto?

Senior
145

¿Dónde terminan los contextos en este código?

Senior
145

¿Qué buscas en un nuevo proyecto? ¿Qué tecnologías te interesan? ¿Qué no te gustaría ver en un nuevo lugar de trabajo?

Senior
143

¿Por qué resultErr no se devuelve directamente desde la gorutina?

Senior
141

¿Cuándo el índice no ayuda o incluso perjudica?

Senior
125

¿Qué etapas (stages) suelen estar en un pipeline CI/CD para un servicio Go?

Senior
90