29 Nov

Conceptos Fundamentales de Desarrollo y Arquitectura

Bases de Datos y ORM

  1. ¿Cuál es la diferencia fundamental entre la navegación de datos en Java (POO) y en bases de datos relacionales?

    En Java, la navegabilidad es unidireccional, mientras que en las bases de datos es bidireccional mediante consultas y subconsultas.

  2. Explica el problema de «granularidad» en el mapeo objeto-relacional (ORM).

    La granularidad consiste en que podemos tener más modelos (clases) con un mayor número de clases que tablas en una base de datos.

  3. Explica el problema de las asociaciones bidireccionales vs. unidireccionales en el mapeo objeto-relacional.

    El problema radica en encontrar un equilibrio entre la simplicidad del mantenimiento del código y la eficiencia de la navegación. Por ejemplo, en Java (POO) las relaciones son unidireccionales, mientras que en las BBDD son bidireccionales mediante consultas y subconsultas.

  4. ¿Qué significa ACID en el contexto de bases de datos relacionales y por qué es importante?

    ACID significa: Atomicidad, Consistencia, Aislamiento y Durabilidad. Es importante porque asegura que una BD mantenga los datos precisos y consistentes, sin inconsistencias ni datos corruptos, y permite realizar operaciones complejas.

Patrones Arquitectónicos y Control

  1. ¿Qué problema resuelve el patrón arquitectónico MVC y cómo se distribuyen las responsabilidades entre sus tres componentes?

    Resuelve la separación de la lógica de negocio del acceso a los datos y de la presentación. Encontramos:

    • Modelos: Acceso a datos (no solo las entidades, sino la gestión de datos).
    • Vistas: Presentación de datos y acciones (front-end).
    • Controladores: Eventos del usuario y lógica (back-end).
  2. Explica el concepto de «inversión de control» (IoC) que diferencia a un Framework de una biblioteca.

    Los frameworks tienen un flujo de control propio (IoC), mientras que en las bibliotecas el flujo de control es inherente del cliente.

  3. ¿Qué problema resuelve el patrón arquitectónico Event Based y qué ventaja aporta al desarrollo de software?

    Aumenta el desacoplamiento entre componentes del sistema y permite extender el software sin tener que modificar el código existente.

Requisitos y Reglas de Negocio

  1. ¿Cuáles son los tres tipos de requisitos principales que se deben capturar en la fase de análisis y cómo se documentan?

    Debemos capturar:

    • Requisitos funcionales: Documentados mediante Casos de uso.
    • Requisitos de información: Documentados mediante Diagramas (conceptuales).
    • Requisitos tecnológicos (o no funcionales).
  2. ¿Qué son las reglas de negocio reactivas y en qué se diferencian de las proactivas?

    • Proactivas: Son comprobaciones previas antes de realizar una acción.
    • Reactivas: El sistema debe comprobarlas repetidamente (o reaccionar a eventos).
  3. Explica la diferencia entre requisitos funcionales y requisitos no funcionales, dando un ejemplo de cada uno.

    Los requisitos funcionales definen las acciones que debe realizar el sistema (funcionalidades implementadas), por ejemplo: “Crear un Usuario”. Los requisitos no funcionales no definen un comportamiento directo del sistema, sino un aspecto a tener en cuenta, como la seguridad o el rendimiento.

Metodologías Ágiles: Scrum y Enfoques de Desarrollo

  1. Define qué es una «historia de usuario» en Scrum y qué elementos debe contener.

    Una historia de usuario son requisitos expresados en “pocas palabras” que tienen una dificultad asociada y un valor añadido, denominados story points.

  2. ¿Qué significa el término «Done» en Scrum y por qué es importante definirlo claramente?

    El Definition of Done (DoD) indica cuándo una tarea ha sido terminada por completo, con el fin de no dejar trabajo sin hacer o incompleto.

  3. Define qué es el Product Backlog en Scrum y quién es el responsable de gestionarlo.

    El Product Backlog es una lista priorizada de las tareas a realizar. El Product Owner es el encargado de gestionarlo, y el cliente participa en su definición.

  4. Escribe la diferencia entre un enfoque de desarrollo predictivo y uno adaptable.

    El enfoque predictivo se centra en la planificación detallada y secuencial para obtener un objetivo fijo y bajo cambio. El enfoque adaptable o ágil es iterativo e incremental, aceptando la incertidumbre y cambios en los requisitos con el fin de realizar entregas de valor continuas.

  5. ¿Qué es un Sprint en Scrum y cuál es su duración recomendada?

    Un Sprint son iteraciones de entre 2 a 4 semanas para desarrollar una nueva funcionalidad o mejora en el código.

  6. ¿Qué son los «story points» en las historias de usuario de Scrum?

    Los story points son una estimación de la dificultad/esfuerzo asignada a las historias de usuario.

Tecnologías Web y Desarrollo Front-end

  1. Explica qué son los Service Workers en HTML5 y cuál es su principal función en las PWA.

    Los Service Workers trabajan en el background, interceptando peticiones de red y realizando la operación apropiada, permitiendo el acceso sin conexión y la gestión de caché en las PWA (Progressive Web Applications).

  2. ¿Cuál es la principal diferencia entre una aplicación CGI tradicional y una aplicación web AJAX en términos de dónde se procesa la información?

    La principal diferencia es que las webs que usan CGI cargan dicho programa completamente en cada iteración, degradando la eficiencia. Las aplicaciones web con AJAX delegan la renderización de HTML a JavaScript (en el cliente), mejorando la fluidez.

  3. ¿Qué ventaja proporciona WebSockets sobre técnicas como Polling o Long Polling?

    WebSockets permite una conexión full-dúplex (bidireccional persistente), mientras que Polling o Long Polling son fundamentalmente unidireccionales (iniciadas por el cliente).

  4. ¿Cuál es la principal limitación de las aplicaciones híbridas en comparación con las aplicaciones nativas puras?

    Las aplicaciones híbridas se renderizan dentro de un navegador de una aplicación nativa. Su limitación principal es un menor rendimiento y una experiencia de usuario menos fluida en comparación con las nativas puras.

  5. Explica qué es el DOM (Document Object Model) y por qué es importante para JavaScript.

    El DOM (Document Object Model) define en memoria la estructura jerárquica de la página web. Es crucial para JavaScript porque permite la manipulación dinámica del contenido y la estructura de la página.

  6. ¿Qué ventaja proporciona CSS3 mediante las media queries?

    CSS3 incluye la capacidad de realizar diseños de páginas web responsive (adaptables) a cualquier dispositivo.

  7. Define qué es un mockup y en qué fase del desarrollo web se utiliza.

    Un mockup es una representación fiel y real del diseño visual final de la página web, previo al desarrollo. Se utiliza en la fase de diseño.

  8. ¿Qué diferencia hay entre front-end y back-end en el desarrollo web?

    El front-end interactúa directamente con el navegador del usuario, consultando al back-end para realizar ciertas operaciones. El back-end es el lado del servidor, donde se gestionan los datos, la lógica de negocio y la persistencia de la información.

  9. Explica brevemente qué es WebRTC y para qué tipo de aplicaciones es útil.

    WebRTC permite crear APIs para realizar llamadas de voz, de video y comunicación P2P (Peer-to-Peer) directamente en el navegador. Es útil para aplicaciones de videollamadas (como Google Meets).

Control de Versiones y Colaboración (Git/GitHub)

  1. ¿Qué es GitHub y en qué sistema de control de versiones se basa?

    GitHub es una plataforma que almacena proyectos de software, basada en el sistema de control de versiones Git.

  2. Explica la diferencia entre un Issue y un Milestone en GitHub.

    • Issues: Definen tareas a realizar o problemas a resolver.
    • Milestones: Son agrupaciones de issues que representan un objetivo (como un sprint o una versión).
  3. ¿Qué función cumple GitHub Actions en el desarrollo de proyectos?

    GitHub Actions permite crear flujos de trabajo para automatizar una serie de acciones (CI/CD, pruebas, despliegues).

  4. Define qué es un Pull Request y para qué se utiliza.

    Un Pull Request (PR) es una solicitud de admisión de una modificación en el código (fusión de ramas).

Ecosistema Java y Herramientas

  1. ¿Cuál es la diferencia principal entre JDK y JRE?

    JDK (Java Development Kit) contiene las herramientas necesarias para desarrolladores (compilador, debugger), mientras que JRE (Java Runtime Environment) es el entorno de ejecución para aplicaciones Java.

  2. Explica brevemente qué es SdkMan y qué problema resuelve en el desarrollo Java.

    SdkMan es una herramienta que permite gestionar en paralelo múltiples versiones de un entorno de desarrollo SDK (como Java, Maven, Gradle).

  3. ¿Qué tres componentes principales incluye el Java Runtime Environment (JRE)?

    • ByteCode (ejecutor de bytecode)
    • JVM (Java Virtual Machine)
    • Clases y bibliotecas estándares
  4. ¿Cuál es la función de Apache Maven en el desarrollo de proyectos Java?

    Apache Maven es el estándar de facto para la gestión de proyectos Java (JEE). Se encarga de la gestión de dependencias, la compilación, la ejecución de pruebas y el empaquetado.

  5. Describe los tres ciclos de vida principales de Maven y su propósito.

    • Default: Construcción y despliegue del proyecto.
    • Clean: Borrar todos los binarios de ejecuciones anteriores.
    • Site: Generación del sitio web que aloja la documentación del proyecto.
  6. ¿Qué diferencia hay entre Java SE y Java EE (Jakarta EE) en términos de su enfoque?

    • Java SE (Standard Edition): Orientado a desarrollo estándar/general.
    • Java EE (Enterprise Edition, ahora Jakarta EE): Orientado a entornos distribuidos y escalables (aplicaciones empresariales).

Frameworks Java: Vaadin y Spring Boot

  1. ¿Qué es Vaadin Flow y qué ventaja proporciona a los desarrolladores Java?

    Vaadin Flow es un conjunto de APIs Java para controlar el DOM desde el servidor. La ventaja es que el desarrollador Java no necesita tocar HTML, CSS ni JavaScript.

  2. Explica qué son los Binders en Vaadin y qué problema resuelven.

    Los Binders en Vaadin enlazan objetos Java (datos) con formularios de Vaadin, facilitando la gestión de datos y la validación.

  3. ¿Qué facilita Spring Boot en comparación con Spring Framework tradicional?

    Spring Boot simplifica la configuración de dependencias necesarias de Maven, ofreciendo un POM starter e incluyendo un servidor web embebido (como Tomcat).

  4. Explica la diferencia entre las anotaciones @Component, @Service, @Repository y @Controller en Spring.

    • @Component: Marca la clase como un componente genérico gestionado por Spring.
    • @Service: Indica que la clase contiene la lógica de negocio.
    • @Repository: Indica que la clase es un componente de acceso a datos (persistencia).
    • @Controller: Define la clase como un controlador en el patrón MVC (maneja peticiones web).
  5. ¿Qué hace la anotación @Autowired en Spring y qué problema resuelve?

    @Autowired inyecta automáticamente las dependencias (Inversión de Control), resolviendo la necesidad de instanciar manualmente los objetos.

  6. ¿Cuál es la diferencia entre @PathVariable y @RequestParam en Spring?

    • @PathVariable: Extrae valores de la ruta de la URL (/user/{id}).
    • @RequestParam: Extrae parámetros de la query string (?param=valor).
  7. ¿Para qué se utiliza la anotación @RequestBody en Spring?

    @RequestBody se utiliza para mapear el cuerpo de una petición HTTP (generalmente JSON o XML) a un objeto Java.

  8. Explica qué significa que Spring Boot incluye un «Tomcat embebido» y qué ventaja aporta.

    Significa que tiene un servidor Web Apache Tomcat integrado, lo que permite crear JARs auto-arrancables sin necesidad de desplegar la aplicación en un servidor externo.

  9. ¿Qué indica la anotación @Configuration en una clase Spring?

    @Configuration indica que la clase actuará como fuente de definición de beans para el contexto de la aplicación.

  10. ¿Cuál es la diferencia entre @RequestMapping y @GetMapping/@PostMapping?

    • @RequestMapping: Mapea peticiones HTTP a métodos o clases de forma genérica (permite especificar el método HTTP).
    • @GetMapping/@PostMapping: Son atajos específicos para mapear peticiones GET o POST, respectivamente.

Preguntas Tipo Test

  1. En el contexto de arquitecturas en capas, ¿cuál es la principal responsabilidad de la Capa de Negocio?

    • [x] Ejecutar la lógica necesaria para soportar las funcionalidades y controlar las reglas de negocio
  2. ¿Cuál de las siguientes NO es una característica distintiva de las Progressive Web Applications (PWA)?

    • [x] Requieren obligatoriamente una conexión persistente a internet
  3. En Scrum, ¿cuál es la función principal del Product Owner?

    • [x] Representar al cliente y priorizar las historias de usuario en el Product Backlog
  4. ¿Qué patrón arquitectónico es más adecuado para implementar aplicaciones adaptables basadas en productos con funcionalidades plug-and-play?

    • [x] Microkernel
  5. En JDBC, ¿cuál es el orden correcto de los componentes necesarios para ejecutar una consulta SQL y obtener resultados?

    • [x] DriverManager → Connection → Statement → ResultSet
  6. ¿Qué diferencia fundamental existe entre LocalStorage y SessionStorage en HTML5 Web Storage API?

    • [x] LocalStorage persiste al cerrar el navegador, SessionStorage no
  7. ¿Cuál es el principal problema de las aplicaciones CGI en términos de rendimiento?

    • [x] El programa CGI se carga completamente en cada petición, consumiendo muchos recursos
  8. En el ciclo de vida de Extreme Programming (XP), ¿qué ocurre en la fase de «Productización»?

    • [x] Se realizan pruebas extras antes de entregar al cliente
  9. ¿Cuál de los siguientes NO es un problema típico del mapeo objeto-relacional (ORM)?

    • [x] Problema de concurrencia en transacciones distribuidas
  10. En el modelo C4, ¿cuál es su principal ventaja sobre notaciones formales como UML?

    • [x] Usa diagramas simples basados en cajas y líneas, independientes de notación formal
  11. ¿Qué tipo de reunión en Scrum tiene como objetivo analizar las impresiones del equipo sobre el sprint finalizado?

    • [x] Sprint Retrospective Meeting
  12. ¿Cuál es la principal característica que diferencia a las Single Page Applications (SPA) de las aplicaciones web tradicionales?

    • [x] Toda la aplicación carga inicialmente en una única página HTML y las vistas se generan dinámicamente con JavaScript
  13. En Spring Data, ¿cuál es su principal aportación respecto a JPA puro?

    • [x] Proporciona un modelo de programación uniforme y creación rápida de la capa de persistencia
  14. ¿Qué técnica de comunicación cliente-servidor permite al servidor enviar eventos automáticamente a los navegadores mediante una conexión HTTP persistente?

    • [x] Server-Sent Events (SSE)
  15. En el contexto de JSP (JavaServer Pages), ¿cuál es su principal ventaja sobre los Servlets puros?

    • [x] Separan la parte dinámica de la estática mediante plantillas HTML con código Java incrustado
  16. ¿Cuál de las siguientes NO es una fase del ciclo de vida de Extreme Programming (XP)?

    • [x] Sprint Planning
  17. En el patrón MVC, ¿qué componente se encarga de manejar los eventos del usuario y la lógica del back-end?

    • [x] Controlador
  18. ¿Cuál de las siguientes es una característica fundamental del desarrollo de productos web según el documento?

    • [x] Desarrollo ultra rápido
  19. En Kanban, ¿qué representa el concepto de «Work in Progress» (WIP)?

    • [x] El número de tareas que quedan por hacer
  20. ¿Qué rol en el equipo de desarrollo web se encarga de definir el patrón de arquitectura y tomar decisiones técnicas principales?

    • [x] Arquitecto Web
  21. En el contexto de requisitos, ¿cómo se describen típicamente los requisitos de información?

    • [x] Mediante Diagramas Conceptuales
  22. ¿Cuál es la principal diferencia entre Polling y Long Polling?

    • [x] En Long Polling el servidor retiene la petición hasta tener datos disponibles
  23. ¿Qué característica tienen las entidades en la capa de negocio según el documento?

    • [x] Materializan los requisitos de información con adaptaciones necesarias
  24. En JDBC, ¿qué componente es responsable de cargar el driver de la base de datos?

    • [x] DriverManager
  25. ¿Cuál es la duración típica de una Daily Meeting en Scrum?

    • [x] 15 minutos
  26. ¿Qué patrón arquitectónico es natural para implementar sistemas de procesamiento de flujo de datos?

    • [x] Pipes & Filters
  27. En el ciclo de vida de una conexión JDBC, ¿qué ocurre después de enviar las consultas SQL mediante Statement?

    • [x] Se reciben los datos mediante ResultSet
  28. ¿Qué tecnología Java permite separar la parte dinámica de la estática mediante plantillas HTML o XML?

    • [x] JSP (JavaServer Pages)
  29. ¿Cuál de los siguientes NO es un tipo de requisito según el documento?

    • [x] Requisitos financieros
  30. En Scrum, ¿qué artefacto contiene el registro de elementos del producto a realizar en el sprint actual?

    • [x] Sprint Backlog
  31. ¿Cuál es la principal ventaja de las aplicaciones web AJAX sobre las CGI tradicionales?

    • [x] Proporcionan mayor fluidez delegando la renderización del HTML al JavaScript
  32. ¿Qué framework de diseño web se menciona en el documento como ejemplo de componentes visuales y sistemas grid?

    • [x] Tailwind CSS
  33. En el modelo de capas, ¿qué capa se encarga de gestionar la información persistente en la base de datos?

    • [x] Capa de Acceso de Datos
  34. ¿Cuál es el objetivo principal de la fase de Formulación en el desarrollo web?

    • [x] Establecer objetivos y alcance del proyecto respondiendo a motivación, necesidad y perfil de usuarios
  35. ¿Qué tipo de framework gestiona la capa de presentación y los componentes UI en el navegador?

    • [x] Framework front-end
  36. En el contexto de WebSockets, ¿qué tipo de comunicación permite?

    • [x] Full-dúplex bidireccional persistente
  37. ¿Qué herramienta se utiliza en la gestión clásica de proyectos para visualizar la planificación temporal?

    • [x] Diagramas de Gantt
  38. ¿Cuál es la principal función de JPA en el desarrollo Java?

    • [x] Automatizar el mapping entre bases de datos y atributos de clases Java
  39. En Scrum, ¿qué reunión se realiza para decidir los objetivos del siguiente sprint?

    • [x] Sprint Planning Meeting
  40. ¿Qué permite WebRTC según el documento?

    • [x] Realizar llamadas de voz, chat de video y P2P sin plugins
  41. ¿Cuál de las siguientes NO es una ventaja del modelo en cascada?

    • [x] Alta adaptabilidad a cambios de requisitos
  42. En el contexto de CSS3, ¿qué permiten crear las transiciones y animaciones?

    • [x] Efectos visuales dinámicos en la página
  43. ¿Qué problema aborda el patrón arquitectónico Reflection?

    • [x] La capacidad de un programa de manipular su comportamiento en tiempo de ejecución
  44. ¿Cuál es la principal responsabilidad del Scrum Master?

    • [x] Hacer cumplir las reglas y buenas prácticas, eliminar impedimentos
  45. En HTML5, ¿dónde se ejecuta principalmente el código JavaScript?

    • [x] En el navegador del cliente
  46. ¿Qué framework de persistencia se menciona en el documento como ejemplo de ORM?

    • [x] Hibernate
  47. ¿Cuál es la principal característica de los Servlets en Java?

    • [x] Son objetos Java especializados que reciben peticiones y generan contenido dinámico
  48. En el desarrollo ágil, ¿cuál es la mayor prioridad según el Manifiesto Ágil?

    • [x] Satisfacer al cliente mediante entregas tempranas y continuas de software valioso
  49. ¿Qué requisito no funcional está relacionado con la facilidad de uso del sistema?

    • [x] Requisitos de operabilidad
  50. ¿Cuál es la principal diferencia entre aplicaciones web estáticas y dinámicas según el documento?

    • [x] Las dinámicas incorporan JavaScript para añadir comportamiento

Deja un comentario