Desarrollador Go: pregunta de entrevista

¿Cómo usas context en servicios Go?

context.Context transporta deadlines, cancelación y valores de solicitud entre límites de API. Debe ser el primer parámetro, propagarse en vez de guardarse en una struct y no sustituirse por context.Background dentro del trabajo de la solicitud.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Un context viaja con la solicitud: lleva el deadline, la señal de cancelación y algunos valores de alcance de solicitud como un ID de traza. Cada capa deriva un context hijo con un deadline más ajustado o una función cancel que posee y difiere. Guardar un context en un struct o pasar context.Background desde el fondo de un handler rompe la cadena: una desconexión del cliente o un timeout ya no detiene el trabajo que inició.

Ejemplo

Cuando se cancela una solicitud HTTP, pasar r.Context() a la base de datos permite detener también la consulta. Una llamada que debe terminar aunque el cliente se vaya, como escribir un registro de auditoría, recibe context.WithoutCancel o un context nuevo con su propio timeout corto.

Errores frecuentes

  • Poner datos de negocio en valores del context en lugar de parámetros de función.
  • Olvidar llamar a la función cancel que devuelve WithTimeout, lo que fuga el temporizador hasta que dispara.
  • Usar un solo context para todo un trabajo por lotes, de modo que un elemento lento cancela a todos los demás.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Go