P
prepair.app
Comenzar entrevista →
EnglishУкраїнськаРусскийDeutsch
🦫

Middle Go BackendPreguntas de entrevista Golang

Middle · 2–4 años de experiencia

Las entrevistas de Go se enfocan en goroutines, channels, interfaces, y manejo de errores — el lenguaje es pequeño, así que las preguntas van a fondo en vez de ir a lo ancho. Aquí están las más comunes con respuestas modelo. Middle: comprensión más profunda, optimización y situaciones reales de trabajo.

Pruébalo — sin cuenta necesaria
Preparando tu pregunta…

Temas para prepararte

Goroutines y el scheduler
Channels y select
Interfaces y composición
Manejo de errores
Slices y maps
Context y cancelación

7 preguntas de nivel Middle con respuestas

1

¿Cuál es la diferencia entre un channel con buffer y uno sin buffer?

Respuesta

Un channel sin buffer sincroniza: el envío se bloquea hasta que un receptor toma el valor, así que ambos lados se encuentran. Un channel con buffer acepta hasta su capacidad sin un receptor, y se bloquea solo cuando está lleno. Sin buffer es el default más seguro porque hace el handoff explícito; un buffer es una decisión sobre cuánto trabajo puede acumularse.

2

¿Cuándo se filtra una goroutine, y cómo lo notarías?

Respuesta

Cuando se bloquea para siempre en un channel que nadie va a leer o escribir, o espera en un context que nunca se cancela. Lo notas por un conteo de goroutines que sube y nunca baja — runtime.NumGoroutine() o el perfil de goroutines de pprof, que muestra exactamente dónde están aparcadas. La causa usual es un productor que retorna temprano y deja a un consumidor esperando.

3

¿Para qué es `context`?

Respuesta

Llevar un deadline, una señal de cancelación y valores con alcance de request a través de los límites de la API. Su trabajo real es la cancelación: cuando se abandona un request, todo lo que empezó debería parar en vez de seguir trabajando para nadie. La regla que lo mantiene útil es que context es el primer parámetro y nunca se guarda en un struct.

4

¿Cómo se comporta un `select` con `default` diferente de uno sin?

Respuesta

Sin default, select se bloquea hasta que uno de sus cases esté listo. Con default, toma el default inmediatamente si nada más lo está, haciendo la operación no bloqueante. Un default dentro de un loop sin ningún otro bloqueo es un busy-wait que hará girar un core, que es el error a vigilar.

5

¿Qué encuentra el race detector, y qué no?

Respuesta

Encuentra acceso concurrente a la misma memoria donde al menos uno es una escritura, en los caminos de código realmente ejecutados durante la corrida. Lo que no encuentra es la race que no ejercitaste — es una herramienta de runtime, no una prueba. Por eso pertenece al CI contra tests reales en vez de correrse una vez a mano.

6

¿Cómo decides entre un mutex y un channel?

Respuesta

Un mutex protege estado compartido; un channel transfiere la propiedad de datos. Si varias goroutines leen y escriben una estructura, un mutex es más simple y rápido. Si el trabajo se mueve de una goroutine a otra, un channel expresa eso directamente. Recurrir a un channel para proteger un contador es una sobrecomplicación común.

7

¿Qué garantiza `sync.WaitGroup`, y cómo se usa mal?

Respuesta

Que Wait retorna una vez que el contador llega a cero, así que sabes que cada goroutine rastreada terminó. Los dos usos incorrectos clásicos son llamar a Add dentro de la goroutine, lo que hace race con Wait, y pasar el WaitGroup por valor, lo que lo copia y deja el contador original intacto. Ambos compilan y ambos fallan intermitentemente.

🦎

Leer respuestas no es suficiente

En una entrevista real hablas bajo presión. Cam hace estas mismas preguntas, evalúa cada respuesta y muestra exactamente qué mejorar.

Practicar entrevista de Middle Go Backend →
Gratis · 3 entrevistas al mes

Otros niveles — Go Backend

Junior Go BackendSenior Go BackendTodas las preguntas de Go Backend

Otras especializaciones

🔍Middle Manual QA🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🔷Middle C++🟨Middle JavaScript⚛️Middle React Frontend