Preguntas de entrevista de Diseño y buenas prácticas
65 preguntas de entrevista de Diseño y buenas prácticas con respuestas, de nivel junior a intermedio.
Fundamentos
- ¿Qué es la programación orientada a objetos (POO) en una frase?
- ¿Qué lista contiene los cuatro pilares clásicos de la POO?
- Librería frente a framework: ¿cuál es la diferencia clave?
- En software, ¿qué es una 'dependencia'?
- ¿Qué es un bug y qué es depurar (debugging)?
- ¿Qué es una code review?
- ¿Qué es SOLID?
- ¿Qué es la 'Gang of Four' (GoF)?
- ¿Qué es la 'deuda técnica'?
- Explica a alguien que empieza qué son una clase, un objeto, un campo y un método.
Base
- El Single Responsibility Principle dice que una clase debería…
- En la pirámide de tests, ¿de qué tipo de tests deberías tener más?
- El ciclo de TDD es…
- Un buen diseño modular busca…
- Con Semantic Versioning, eliminas una función pública de una librería en la versión 2.4.1. La siguiente versión es…
- ¿Cuál es la relación entre una clase y un objeto?
- ¿Qué significa encapsulación en POO?
class Dog(Animal):expresa, ¿qué relación?- ¿Qué es el polimorfismo?
- ¿Qué pasa si intentas
Shape()cuandoShapees una clase base abstracta con un@abstractmethod area()? - ¿Qué dice el principio DRY?
- ¿Qué es un patrón de diseño?
- ¿Qué es refactorizar?
- En Git, ¿cuál es la diferencia entre
commitypush? - ¿Por qué los desarrolladores crean una rama de Git para una función nueva?
- ¿Qué es un merge conflict?
- ¿Qué aconseja YAGNI ('You Aren't Gonna Need It')?
- ¿En qué tres categorías se agrupan los patrones de diseño clásicos del GoF?
- ¿Cuál es el anti-patrón conocido como "God object" (o God class)?
- ¿Qué es un patrón de diseño y por qué preguntan por ellos en las entrevistas?
Intermedio
- ¿Qué cambio sigue mejor el Open/Closed Principle?
SquareextiendeRectangle, yset_width()en un cuadrado también cambia su altura. El código que fija width=2, height=5 y espera área 10 se rompe. ¿Qué principio se viola?- Una interface
Workertienework(),eat()ysleep(). UnRobotdebe implementareat()conraise NotImplementedError. ¿Qué principio sugiere una solución? - Dependency Inversion significa…
- ¿Cuándo encaja mejor Builder que Factory?
- ¿Cuál es la principal crítica al patrón Singleton?
- ¿Qué problema resuelve el patrón Repository?
- ¿Cuál es la principal ventaja de la dependency injection?
- ¿Qué patrón es este?
- ¿Qué patrón encaja con 'avisar a los servicios de correo, analítica e inventario cada vez que se hace un pedido'?
- Debes usar un cliente de SMS de un tercero cuya interface difiere de tu
Notifier.send(to, text). ¿Qué patrón usas? - 'Favorecer la composición sobre la herencia' ayuda sobre todo a evitar…
- ¿Qué debería simular (mock) normalmente un unit test?
- ¿Por qué los objetos inmutables simplifican el código concurrente?
- ¿Qué patrón ofrece un único punto de entrada simplificado a un subsistema complejo (por ejemplo
VideoConverter.convert(file, "mp4")que oculta codecs, buffers y muxers)? - ¿Por qué debes evitar
git rebaseen una rama que otros ya descargaron? - Una clase tiene 3.000 líneas y se ocupa de parsear HTTP, reglas de facturación y generación de PDF. Este code smell se llama…
- Explica SOLID con un ejemplo corto para cada letra.
- ¿Cómo abordas una code review (como revisor)?
- ¿Cuál es la diferencia entre Factory Method y Abstract Factory?
- ¿Qué patrón ilustra
new BufferedReader(new FileReader("a.txt"))? - ¿Qué patrón hay detrás de
list.sort(Comparator.comparing(Person::getAge))? - ¿Qué es el patrón Template Method?
- ¿Qué patrón describe a Spring envolviendo tu bean para añadir transacciones, caché o seguridad sin cambiar su código?
- Los servlet filters y la filter chain de Spring Security son ejemplos de, ¿qué patrón?
- ¿Qué patrón te permite tratar de forma uniforme un objeto individual y un grupo de objetos (un árbol, como carpetas que contienen archivos y carpetas)?
- ¿Qué separa el patrón MVC?
- ¿Cuál es la diferencia entre un DAO y un Repository?
- ¿Qué patrones de diseño usas realmente en proyectos Java/Spring, y dónde?
Avanzado
- ¿En qué se diferencia el patrón Decorator del GoF de la herencia para añadir comportamiento?
- ¿Qué línea viola la Law of Demeter ('habla solo con tus amigos inmediatos')?
- ¿Qué patrón hace naturales el deshacer/rehacer y las colas de trabajos?
- Heredas un módulo legacy de 2.000 líneas sin tests y debes cambiarlo. ¿Cómo procedes de forma segura?
- ¿Cuál es la forma más segura de escribir un Singleton thread-safe en Java?
- La JVM guarda en caché objetos
Integerde -128 a 127 y reutiliza literales de texto del string pool. ¿Qué patrón es este?