Entrevistas Técnicas — Java Senior con Microservicios
Banco de preguntas de entrevista para posiciones Java Senior con arquitectura de microservicios. Cada pregunta incluye una respuesta resumen (30–60 segundos) y una respuesta detallada con código realista, trade-offs, errores comunes y lo que el entrevistador espera oír.
🎓 ¿Te faltan bases para responder esto? El curso Java senior + Spring 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-java-core-avanzado.md | JVM internals, GC, JMM, concurrencia avanzada, Loom, colecciones, Java moderno, Streams | 15 |
| 02-spring-y-microservicios.md | Spring Boot/Cloud internals, transacciones, resiliencia, Kafka, patrones distribuidos, observabilidad, testing | 16 |
| 03-casos-y-problemas.md | Casos de producción [CASO]: diagnóstico paso a paso, herramientas, solución y prevención | 15 |
Total: 46 preguntas.
Índice de preguntas
Sección titulada «Índice de preguntas»01 — Java Core Avanzado
Sección titulada «01 — Java Core Avanzado»- ¿Cómo funciona G1 GC internamente y qué parámetros clave usarías para hacer tuning?
- ¿Cuándo elegirías ZGC o Shenandoah en lugar de G1? ¿Qué sacrificas?
- Explica el Java Memory Model: ¿qué es happens-before y por qué importa?
volatilevssynchronizedvsAtomicLong/VarHandle: ¿cuándo usar cada uno?- ¿Qué garantías especiales dan los campos
finaly qué es la publicación segura (safe publication)? CompletableFuture: composición, manejo de errores y sus pitfalls principales- ForkJoinPool y work-stealing: ¿cómo funciona y qué problemas causa el commonPool?
- Virtual threads (Project Loom): ¿cómo funcionan, cuándo usarlos y qué es el pinning?
- Structured concurrency: ¿qué problema resuelve frente a ExecutorService y CompletableFuture?
- HashMap por dentro: hashing, resize, treeification y por qué es peligroso en concurrencia
- ConcurrentHashMap: ¿cómo logra thread-safety sin un lock global y qué garantías da?
- Records: ¿qué aportan realmente, qué limitaciones tienen y cuándo NO usarlos?
- Sealed classes + pattern matching: ¿cómo cambian el diseño de dominio en Java moderno?
- Streams paralelos: ¿cuándo ayudan, cuándo perjudican y cuáles son sus pitfalls?
- Streams secuenciales: pitfalls avanzados que delatan a un desarrollador junior
02 — Spring y Microservicios
Sección titulada «02 — Spring y Microservicios»- ¿Cómo funciona la auto-configuración de Spring Boot por dentro?
- @Transactional: propagación, rollback y los pitfalls del proxy
- ¿Cómo implementarías circuit breakers con Resilience4j y qué configuración importa de verdad?
- Comunicación síncrona vs asíncrona entre microservicios: ¿cómo decides?
- Kafka: consumer groups y rebalancing — ¿qué pasa exactamente y cómo lo controlas?
- Kafka: ¿qué significa exactly-once realmente y cómo se consigue con Java?
- Patrón Saga: orquestación vs coreografía para transacciones distribuidas
- Patrón Outbox: ¿cómo publicas eventos de forma atómica con tu transacción de BD?
- Proxies en Spring (JDK vs CGLIB) y ciclo de vida de beans: ¿qué errores reales causan?
- Spring Cloud Config y configuración dinámica: ¿cómo refrescas configuración sin redeploy y qué riesgos tiene?
- Spring Cloud Gateway: ¿qué papel juega y cómo implementarías rate limiting y resiliencia en el borde?
- CQRS y Event Sourcing: ¿qué resuelven, cómo se implementan y cuándo son una mala idea?
- Service discovery: ¿Eureka, DNS de Kubernetes o service mesh? ¿Client-side o server-side?
- Observabilidad en microservicios Java: Micrometer, OpenTelemetry y qué instrumentar
- Testcontainers: ¿cómo testeas integración real (BD, Kafka) sin mocks y sin flakiness?
- Contract testing con Pact: ¿cómo evitas romper consumidores sin tests E2E?
03 — Casos y Problemas de Producción (todos [CASO])
Sección titulada «03 — Casos y Problemas de Producción (todos [CASO])»- Memory leak en producción: el heap crece hasta OOM cada 3 días
- Latencia p99 alta en un servicio Spring Boot con p50 normal: ¿cómo lo investigas?
- Thread pool exhaustion: Tomcat deja de responder pero la CPU está al 10%
- Deadlock en producción: dos funcionalidades se congelan a la vez de forma intermitente
- Consumer lag creciente en Kafka: el consumidor procesa pero cada vez va más atrás
- Mensajes duplicados: facturación cobró dos veces el mismo pedido
- Transacción distribuida que deja datos inconsistentes: pedido pagado sin stock reservado
- N+1 queries con JPA/Hibernate: un listado que hace 400 queries
- OutOfMemoryError: Metaspace tras varios redeploys o en un servicio con mucha reflection
- Un servicio degradado tumba en cascada a toda la plataforma: anatomía y defensa
- Migrar un monolito a microservicios: ¿por dónde empiezas y cómo evitas el desastre?
- Full GC pauses de varios segundos: los health checks fallan y los pods se reinician
- HikariCP agotado: “Connection is not available, request timed out after 30000ms”
- Pérdida de mensajes: un evento de pedido nunca llegó a facturación
- Hot partition en Kafka: una partición concentra el tráfico y un consumer va ahogado
Cómo usar este material
Sección titulada «Cómo usar este material»- Repaso rápido antes de la entrevista: leer solo las secciones “📝 Respuesta resumen” — están calibradas para responderse en 30–60 segundos.
- Estudio profundo: las secciones “📖 Respuesta detallada” incluyen el código, los trade-offs y los matices que distinguen una respuesta senior.
- Práctica de casos: en el archivo 03, tapar la respuesta y practicar el diagnóstico en voz alta: hipótesis → herramientas (jstack, jmap, async-profiler, MAT, GC logs, métricas) → solución → prevención.