Java EE/Jakarta EE y plataforma .NET — Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Test de 30 preguntas con explicaciones justificadas.
Pregunta 1: ¿Qué tecnología de Java EE/Jakarta EE permite crear páginas web dinámicas utilizando etiquetas HTML con código Java incrustado?
- A) JSP
- B) Servlet
- C) JSF
- D) Thymeleaf
JavaServer Pages (JSP) es una tecnología de la plataforma Java EE/Jakarta EE que permite crear páginas web dinámicas mediante la inserción de código Java en etiquetas HTML.
Pregunta 2: ¿Qué directiva de JSP se utiliza para incluir un archivo en tiempo de compilación?
- A) @page
- B) @include
- C) @taglib
- D) @import
La directiva <%@ include %> se utiliza en JSP para incluir un archivo en tiempo de compilación, fusionando el contenido antes de que la página sea convertida en un servlet.
Pregunta 3: ¿Qué tipo de Enterprise JavaBeans (EJB) se utiliza para procesar mensajes de forma asíncrona en un sistema de mensajería?
- A) Entity Bean
- B) Message-Driven Bean
- C) Session Bean
- D) Stateless Bean
Los Message-Driven Beans (MDB) son un tipo de EJB que permiten procesar mensajes de forma asíncrona, típicamente desde colas JMS (Java Message Service).
Pregunta 4: ¿Qué interfaz de JPA es el punto de entrada principal para realizar operaciones de persistencia?
- A) EntityFactory
- B) PersistenceManager
- C) EntityManager
- D) Session
En la especificación Jakarta Persistence API (JPA), la interfaz EntityManager es el punto de entrada principal para manejar entidades y realizar operaciones de persistencia.
Pregunta 5: ¿Qué anotación de CDI se utiliza para definir un bean que vive durante toda la ejecución de la aplicación?
- A) @RequestScoped
- B) @SessionScoped
- C) @ApplicationScoped
- D) @Dependent
La anotación @ApplicationScoped de CDI define un bean cuyo ciclo de vida coincide con el de la aplicación web, siendo creado una vez y compartido por todas las sesiones y peticiones.
Pregunta 6: ¿Qué anotación de JAX-RS se utiliza para mapear una clase o método a una ruta URI relativa?
- A) @GET
- B) @Path
- C) @POST
- D) @PUT
La anotación @Path de JAX-RS se utiliza para especificar la ruta URI relativa a la que responde un recurso web o un método.
Pregunta 7: ¿Cuál de los siguientes servidores de aplicaciones es una implementación de Java EE/Jakarta EE completa?
- A) Apache Tomcat
- B) Jetty
- C) Nginx
- D) WildFly
WildFly (antes JBoss) es un servidor de aplicaciones que implementa el perfil completo de Java EE/Jakarta EE, incluyendo EJB, JPA, CDI, etc.
Pregunta 8: ¿Qué archivo de configuración define la estructura del proyecto y las dependencias en Maven?
- A) build.gradle
- B) pom.xml
- C) package.json
- D) web.xml
En Apache Maven, el archivo pom.xml (Project Object Model) es el archivo de configuración principal que define la estructura, dependencias y build del proyecto.
Pregunta 9: ¿Qué herramienta de construcción utiliza un archivo llamado 'build.gradle' para su configuración?
- A) Maven
- B) Ant
- C) Gradle
- D) NuGet
Gradle es una herramienta de construcción que utiliza un archivo de script llamado build.gradle, escrito en un DSL basado en Groovy o Kotlin, para configurar el proyecto.
Pregunta 10: ¿Qué lenguaje de programación es el principal para el desarrollo en la plataforma .NET?
- A) Java
- B) C#
- C) F#
- D) Visual Basic
C# es el lenguaje principal y más utilizado para el desarrollo en la plataforma .NET, aunque también soporta otros como F# y Visual Basic.
Pregunta 11: ¿Qué framework de .NET se utiliza principalmente para desarrollar aplicaciones de escritorio con interfaz gráfica en Windows?
- A) Windows Forms
- B) ASP.NET
- C) ADO.NET
- D) Entity Framework
Windows Forms es un framework de .NET para crear aplicaciones de escritorio con interfaz gráfica de usuario (GUI) en Windows, utilizando un modelo de eventos y controles.
Pregunta 12: ¿Qué enfoque de Entity Framework permite generar las clases de dominio a partir de una base de datos existente?
- A) Model First
- B) Code First
- C) Schema First
- D) Database First
El enfoque Database First de Entity Framework permite diseñar la base de datos primero y luego generar automáticamente las clases de entidad (dominio) a partir de ella.
Pregunta 13: ¿Qué componente de .NET es responsable de la gestión de memoria, compilación JIT y ejecución del código?
- A) CLR
- B) CTS
- C) CLI
- D) NuGet
El CLR (Common Language Runtime) es el entorno de ejecución de .NET que se encarga de la gestión de memoria, compilación Just-In-Time (JIT), seguridad y ejecución del código.
Pregunta 14: ¿Qué gestor de paquetes se utiliza en el ecosistema .NET para manejar dependencias?
- A) Maven
- B) npm
- C) NuGet
- D) Gradle
NuGet es el gestor de paquetes oficial para la plataforma .NET, utilizado para agregar, actualizar y eliminar bibliotecas y dependencias en un proyecto.
Pregunta 15: ¿En qué se diferencia principalmente Java EE/Jakarta EE de .NET en términos de licencia y multiplataforma?
- A) Java EE es propietario, .NET es open source
- B) Ambos son completamente open source
- C) .NET es solo para Windows, Java EE es multiplataforma
- D) Java EE es multiplataforma, .NET históricamente era para Windows pero ahora es multiplataforma
Java EE/Jakarta EE ha sido siempre multiplataforma, mientras que .NET Framework originalmente estaba ligado a Windows, pero con .NET Core y .NET 5+ se ha convertido en multiplataforma y open source.
Pregunta 16: ¿Cuál de los siguientes es un caso típico de uso para Java EE/Jakarta EE?
- A) Aplicaciones móviles nativas para iOS
- B) Aplicaciones empresariales multiplataforma de gran escala
- C) Aplicaciones de escritorio en Windows
- D) Aplicaciones de inteligencia artificial con Python
Java EE/Jakarta EE está orientado a aplicaciones empresariales de gran escala que requieren escalabilidad, transacciones y integración, y es multiplataforma.
Pregunta 17: ¿Qué lenguaje de consulta utiliza JPA para realizar consultas sobre las entidades?
- A) SQL
- B) JPQL
- C) HQL
- D) JQL
JPQL (Jakarta Persistence Query Language) es el lenguaje de consulta de la especificación JPA, orientado a objetos y basado en las entidades.
Pregunta 18: ¿Qué anotación de JPA se utiliza para inyectar un EntityManager en un componente Java EE?
- A) @Inject
- B) @EJB
- C) @Resource
- D) @PersistenceContext
La anotación @PersistenceContext de JPA se utiliza para inyectar un EntityManager en un componente Java EE/Jakarta EE, gestionando automáticamente las transacciones en un entorno contenedor.
Pregunta 19: ¿Qué scope de CDI es el predeterminado si no se especifica ninguno?
- A) @Dependent
- B) @RequestScoped
- C) @SessionScoped
- D) @ApplicationScoped
El scope @Dependent es el predeterminado en CDI si no se especifica ninguna anotación de scope, lo que significa que el bean tendrá el ciclo de vida del objeto que lo contiene.
Pregunta 20: ¿Qué anotación de JAX-RS se utiliza para especificar el tipo MIME de la respuesta que produce un método?
- A) @GET
- B) @Path
- C) @Consumes
- D) @Produces
La anotación @Produces de JAX-RS se utiliza para indicar el tipo de medio MIME (como application/json) que un método de recurso web puede producir y enviar en la respuesta.
Pregunta 21: ¿Cuál es el puerto por defecto en el que escucha Apache Tomcat?
- A) 80
- B) 443
- C) 8080
- D) 8443
Apache Tomcat, por defecto, escucha en el puerto 8080 para conexiones HTTP no seguras.
Pregunta 22: ¿Qué herramienta se utiliza para administrar el servidor WildFly a través de una interfaz web?
- A) Admin Console
- B) Tomcat Manager
- C) JBoss CLI
- D) WildFly Management Console
WildFly proporciona una consola de administración web llamada WildFly Management Console para configurar y gestionar el servidor.
Pregunta 23: ¿Qué comando de Maven se utiliza para compilar el proyecto?
- A) mvn compile
- B) mvn build
- C) mvn package
- D) mvn install
El comando 'mvn compile' de Maven compila el código fuente del proyecto y lo coloca en el directorio target/classes.
Pregunta 24: ¿En qué lenguaje se escribe normalmente el archivo build.gradle de Gradle?
- A) XML
- B) JSON
- C) Groovy o Kotlin
- D) YAML
Los scripts de Gradle se escriben en un DSL basado en Groovy o Kotlin, siendo Groovy el tradicional y Kotlin una opción más reciente.
Pregunta 25: ¿Qué palabra clave de C# se utiliza dentro de un método asíncrono para esperar la finalización de una tarea sin bloquear el hilo principal?
- A) async
- B) await
- C) task
- D) yield
La palabra clave 'await' se utiliza en C# dentro de métodos marcados como 'async' para esperar la finalización de una tarea asíncrona sin bloquear el hilo de ejecución.
Pregunta 26: ¿Qué tecnología de ASP.NET utiliza un modelo de eventos basado en controles y postbacks, similar a las aplicaciones de escritorio?
- A) ASP.NET MVC
- B) ASP.NET Web API
- C) ASP.NET Core
- D) ASP.NET Web Forms
ASP.NET Web Forms utiliza un modelo de eventos y controles que se ejecutan en el servidor, con postbacks para manejar la interacción del usuario, similar al desarrollo de aplicaciones de escritorio.
Pregunta 27: ¿Qué tecnología de .NET permite escribir consultas integradas en el lenguaje contra colecciones de objetos o bases de datos?
- A) LINQ
- B) Lambda Expressions
- C) Entity SQL
- D) ADO.NET
LINQ (Language Integrated Query) es una característica de .NET que permite escribir consultas directamente en C# o VB.NET contra diversas fuentes de datos.
Pregunta 28: ¿Qué componente del CLR se encarga de compilar el código IL (Intermediate Language) a código nativo en tiempo de ejecución?
- A) JIT Compiler
- B) Garbage Collector
- C) Class Loader
- D) Type Checker
El JIT (Just-In-Time) Compiler en el CLR compila el código IL a código nativo de la máquina en tiempo de ejecución, optimizando la ejecución.
Pregunta 29: ¿Qué comando de NuGet se utiliza para restaurar los paquetes de un proyecto?
- A) nuget restore
- B) dotnet restore
- C) ambos a y b son válidos
- D) nuget install
Tanto 'nuget restore' (con la CLI de NuGet) como 'dotnet restore' (con .NET CLI) pueden restaurar las dependencias de un proyecto definidas en el archivo .csproj o .sln.
Pregunta 30: ¿Qué gestor de paquetes es nativo de la plataforma .NET?
- A) Maven
- B) Gradle
- C) NuGet
- D) npm
NuGet es el gestor de paquetes nativo para la plataforma .NET, utilizado para agregar bibliotecas y dependencias a los proyectos.