Preguntas sobre experiencia laboral y proyectos
Describe un proyecto relevante en el que hayas participado, incluyendo su contexto, tecnologías utilizadas y tu rol dentro del equipo.
¿Cuántos microservicios formaban parte del sistema? ¿Cómo se implementaron las transacciones distribuidas?
¿Qué rol cumplió Dubbo en la comunicación entre servicios? ¿Se tomaron en cuenta escenarios de alta concurrencia?
Arquitectura y componentes clave
¿Qué tecnologías se utilizaron para implementar el gateway? ¿Cuál es la funcionalidad del gateway en Apollo?
Optimización de parámetros en la JVM: ¿cómo se ajustan los valores para mejorar el rendimiento?
Sobre el uso de máquinas virtuales: ¿qué prácticas se siguen para evitar fugas de memoria o desbordamientos?
Gestión de hilos y sincronización
Explica los cinco parámetros principales de un pool de hilos. ¿Cómo se determina el número máximo y mínimo de hilos?
Diferencia entre Lock y synchronized. ¿Por qué pueden ocurrir fugas de memoria en entornos multihilo?
Spring Boot y desarrollo de starters
¿Cómo llega una solicitud HTTP hasta un controlador en Spring Boot?
¿Has desarrollado algún starter personalizado? ¿Cómo se implementa?
¿Qué mecanismos de propagación existen en las anotaciones de transacción (@Transactional)?
Bases de datos y optimización
¿Cuál es la dfierencia entre las transacciones en Redis y MySQL?
¿Cómo se configuran los límites de conexiones simultáneas en una base de datos?
¿Qué son los índices? Explica cómo se implementa una estructura B+ tree.
¿Cómo se optimizan las consultas SQL? ¿Qué información proporciona el comando EXPLAIN?
Mensajería y colas
¿Qué middleware de mensajería has utilizado (Kafka, RabbitMQ)? ¿Cómo se evita la pérdida o duplicación de mensajes?
// Ejemplo de configuración para evitar pérdida de mensajes en Kafka
props.put("acks", "all");
props.put("retries", Integer.MAX_VALUE);
props.put("enable.idempotence", true);
Kafka garantiza orden en mensajes dentro de una partición, pero no entre particiones distintas. ¿Cómo afecta esto al diseño del sistema?
Colecciones y estructuras internas
¿Cómo funcoina el mecanismo de redimensionamiento en ArrayList?
// Simulación simplificada del crecimiento de ArrayList
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1); // Aproximadamente 1.5x
En caso de colisiones en HashMap, ¿qué técnica se utiliza? ¿Cuál es su implementación interna?
Patrones de diseño y Netty
¿Qué patrones se aplican en los flujos de entrada/salida (IO streams)?
¿Has trabajado con Netty para flujos no bloqueantes?
Ejecución asíncrona en Spring
@EnableAsync
@Configuration
public class AsyncConfig {
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(4);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("Async-");
executor.initialize();
return executor;
}
}
Principios de recolección de basura
¿Cuál es el recolector por defecto en la JVM? ¿En qué se diferencia G1 y cuáles son sus características?
G1 introduce regiones en lugar de espacios generacionales tradicionales. ¿Qué implica esto para la gestión de memoria?
Principios de autoconfiguración y beans
¿Cómo funciona la autoconfiguración en Spring Boot?
¿Qué es un bean ID y cómo se define?
¿Cuáles son los mecanismos de propagación en transacciones?
Evolución arquitectónica
¿Qué implicaciones tiene migrar de una arquitectura monolítica a microservicios?