Entrevistas Senior — Golang y Microservicios
This content is not available in your language yet.
Banco de preguntas y casos de producción para entrevistas técnicas de nivel senior en Go con arquitectura de microservicios. Cada pregunta incluye una respuesta resumen (lo que dirías en 30–60 segundos) y una respuesta detallada (código realista, trade-offs, errores comunes y qué espera oír el entrevistador).
🎓 ¿Te faltan bases para responder esto? El curso Go senior enseña exactamente lo necesario, con laboratorios y autoevaluación. Ver también: índice completo · plan de estudio · glosario · inicio
Archivos
Sección titulada «Archivos»| Archivo | Contenido | Preguntas |
|---|---|---|
| 01-go-core-avanzado.md | Runtime, concurrencia, memoria y lenguaje en profundidad | 21 |
| 02-microservicios-en-go.md | HTTP, gRPC, mensajería, patrones distribuidos, testing y operación | 18 |
| 03-casos-y-problemas.md | Casos de producción: diagnóstico paso a paso con pprof, trace y race detector | 16 |
Total: 55 preguntas (16 de ellas de tipo [CASO] en el archivo 3, más 2 [CASO] adicionales en el archivo 1).
Índice de preguntas
Sección titulada «Índice de preguntas»01 — Go Core Avanzado
Sección titulada «01 — Go Core Avanzado»- Explica el modelo GMP del scheduler de Go
- ¿Por qué las goroutines son más baratas que los threads del OS?
- Channels buffered vs unbuffered: semántica y cuándo usar cada uno
select: semántica, patrones y trampas- Patrones de concurrencia: pipeline, fan-out y fan-in
- El paquete
sync: Mutex, RWMutex, WaitGroup, Once — usos y trampas errgroup: qué aporta sobre WaitGroup y cómo usarlo biensync/atomicvs Mutex: cuándo y por quécontext.Context: cancelación, deadlines y valores — reglas de uso- Escape analysis, stack vs heap, y cómo reducir allocaciones
- El GC de Go: cómo funciona, GOGC y GOMEMLIMIT
- Slices internals: capacidad, aliasing, append y sus gotchas
- Maps internals: buckets, iteración aleatoria y concurrencia
- Interfaces internals: iface/eface y el gotcha del “typed nil”
- Generics en Go: type parameters, constraints y cuándo usarlos
- Error handling idiomático: wrapping, errors.Is/As, sentinel vs typed errors
defer: semántica precisa y sus gotchasfor range, closures y goroutines: el bug clásico de captura de variables- Stack growth,
sync.Pooly presión de GC en hot paths - [CASO]
-raceen CI reporta una data race en un map de caché - [CASO] Procesar 10M de registros contra una API externa con límite de 100 concurrentes
02 — Microservicios en Go
Sección titulada «02 — Microservicios en Go»- Diseño de un servidor HTTP de producción con
net/http: timeouts y configuración - Middleware en Go: patrón, orden y ejemplos reales
- gRPC en Go: unary vs streaming, deadlines y manejo de errores
- Interceptors de gRPC: para qué y cómo implementarlos
- Graceful shutdown completo de un microservicio en Go
- Worker pools y control de concurrencia en servicios
- Rate limiting en Go: algoritmos e implementación
- Circuit breakers: por qué, cómo funcionan y su implementación en Go
- Kafka en Go: consumer groups, rebalancing y elección de librería
- Patrón Outbox e idempotencia: publicar eventos sin perder ni duplicar
- Patrón Saga: transacciones distribuidas sin 2PC
- Estructura de proyecto en Go:
internal/, hexagonal y organización de paquetes - Inyección de dependencias en Go: manual, wire, fx — criterio
- Observabilidad en Go: OpenTelemetry, métricas y pprof en producción
- Testing en microservicios Go: table-driven, testcontainers, mocks y race detector
- Timeouts, retries y hedging entre servicios: presupuesto de latencia end-to-end
- Versionado y evolución de APIs y eventos en microservicios Go
- Configuración y secretos en microservicios Go
03 — Casos y Problemas de Producción (todos [CASO])
Sección titulada «03 — Casos y Problemas de Producción (todos [CASO])»- Goroutine leak en producción: goroutines y memoria crecen sin parar
- La memoria RSS crece y el pod es OOM-killed, pero el heap de pprof se ve pequeño
- Deadlock: el servicio se congela por completo bajo carga
- El race detector señala una race que “nunca ha dado problemas”
- p99 degradado con p50 normal: ¿GC o contención?
- El servidor HTTP agota file descriptors: “too many open files”
- Contexto cancelado que no se propaga: trabajo huérfano y efectos fantasma
- Datos corruptos intermitentes por aliasing de slices
- Un panic en una goroutine tumba todo el proceso
- Consumer de Kafka con lag creciente
- Timeouts en cascada entre servicios gRPC: incidente pequeño → outage general
- Connection pool de
database/sqlagotado - Procesar un archivo de 20GB tumba el servicio: diseño de streaming
- Migración de un servicio Java/Node a Go: qué evaluar y cómo ejecutarla
- El servicio consume 100% CPU con tráfico normal
- Tras un deploy, errores 502/connection reset intermitentes solo durante los rollouts
Cómo usar este material
Sección titulada «Cómo usar este material»- Preparación rápida: lee solo las respuestas resumen de los tres archivos (≈1 hora) para refrescar antes de una entrevista.
- Preparación profunda: trabaja las respuestas detalladas escribiendo el código de memoria y explicándolo en voz alta.
- Simulacro de casos: para el archivo 03, lee solo el título del caso, resuelve el diagnóstico por tu cuenta (herramientas, hipótesis, pasos) y compara con la respuesta.
Herramientas que aparecen recurrentemente
Sección titulada «Herramientas que aparecen recurrentemente»pprof (CPU, heap, goroutine, mutex, block) · go tool trace · race detector (-race) · GODEBUG (gctrace, schedtrace) · runtime/metrics · errgroup · x/time/rate · testcontainers-go · OpenTelemetry · GOMEMLIMIT/GOGC