option
Cuestiones
ayuda
daypo
buscar.php

AeroGestor — Entrenamiento técnico para la defensa

COMENTARIOS ESTADÍSTICAS RÉCORDS
REALIZAR TEST
Título del Test:
AeroGestor — Entrenamiento técnico para la defensa

Descripción:
Practica para defensa oral de mi Trabajo Final de Grado

Fecha de Creación: 2026/10/31

Categoría: Informática

Número Preguntas: 311

Valoración:(0)
COMPARTE EL TEST
Nuevo ComentarioNuevo Comentario
Comentarios
NO HAY REGISTROS
Temario:

I01 · Arquitectura, responsabilidades y análisis de impacto. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q001 · Selecciona una respuesta En AeroGestor actual, cambia únicamente el texto de un botón. ¿Dónde comenzarías?. En la View SwiftUI que presenta el botón. En APIClient, que serializa las solicitudes. En el DTO que transporta el recurso. En el Service Java que valida la operación.

Q002 · Selecciona una respuesta En AeroGestor actual, ¿qué componente centraliza la construcción de solicitudes JSON y la decodificación de respuestas HTTP?. SessionManager. APIClient. AircraftResponse. FlightRepository.

Q003 · Selecciona una respuesta En AeroGestor actual, llega un POST para registrar un vuelo. ¿Qué capa recibe primero el request dentro de la API?. La View SwiftUI. La tabla flights. FlightController. FlightRepository.

Q004 · Selecciona una respuesta En AeroGestor actual, ¿dónde corresponde buscar una regla que impide registrar actividad con un piloto sin licencia?. En la foreign key que vincula el vuelo con users. Sólo en la validación del formulario SwiftUI. En el DTO que devuelve el resultado del login. En la validación de negocio del backend.

Q005 · Selecciona todas las respuestas correctas Fundamentos de arquitectura: ¿qué ventajas aporta separar presentación, negocio y persistencia?. Obliga a que cada pantalla tenga una consulta SQL propia. Facilita cambiar una capa respetando sus contratos. Permite localizar responsabilidades con mayor claridad. Elimina la necesidad de pruebas. Garantiza que nunca habrá errores de red.

Q006 · Selecciona una respuesta Fundamentos: ¿qué describe mejor un contrato entre cliente y servidor?. El acuerdo sobre operaciones, datos y respuestas intercambiadas. El diseño visual de todas las pantallas del cliente. La firma privada de los métodos Java que no consume el cliente. La estructura interna de tablas, aunque no se exponga por HTTP.

Q007 · Selecciona una respuesta En AeroGestor actual, AircraftService de iOS y AircraftService de Java tienen nombres parecidos. ¿Cuál es la diferencia principal?. El de Java se limita a serializar JSON sin validar reglas. El de iOS coordina llamadas HTTP y el de Java aplica negocio del servidor. El de iOS reemplaza la entidad persistida. Ambos acceden directamente a MySQL desde el teléfono.

Q008 · Selecciona una respuesta En AeroGestor actual, se necesita agregar un dato persistido y visible de aeronave. ¿Qué recorrido de impacto revisarías?. Sólo el esquema SQL. Sólo la View. DB, entidad, DTO, lógica necesaria, modelo Swift y presentación. Sólo el DTO de respuesta, porque JPA crea automáticamente la columna.

Q009 · Selecciona todas las respuestas correctas En AeroGestor actual, GET devuelve datos correctos pero la lista visible no cambia. ¿Qué investigarías en el cliente?. Dar por descartado el estado local porque el servidor respondió 200. Si la View muestra la colección esperada. Reejecutar la migración antes de inspeccionar la colección recibida. Si un filtro local excluye los datos recibidos. Si el ViewModel actualiza su colección observable.

Q010 · Selecciona una respuesta En AeroGestor actual, ¿qué función cumple UserResponse frente a la entidad User?. Expone exactamente todos los campos internos sin selección. Autentica cada request posterior. Crea el esquema SQL al serializarse. Define datos públicos de salida sin exponer la contraseña.

Q011 · Selecciona una respuesta Fundamentos: un síntoma aparece en pantalla. ¿Cuál es la primera conclusión válida?. Aún hay que obtener evidencia para localizar la capa responsable. El framework de UI tiene un defecto. La base de datos está corrupta. El último archivo editado es necesariamente culpable.

Q012 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué responsabilidades corresponden a AircraftListViewModel?. Solicitar datos mediante AircraftService. Definir las FK de aircraft en MySQL. Decidir de forma autoritativa qué aeronaves pueden operar. Aplicar las restricciones referenciales de MySQL. Mantener isLoading y errorMessage.

Q013 · Selecciona una respuesta En AeroGestor actual, el servidor guardó un cambio y después el teléfono no pudo decodificar la respuesta. ¿Qué debes evitar asumir?. Que puede existir una incompatibilidad del contrato. Que el error del cliente revirtió automáticamente la escritura del servidor. Que conviene consultar el estado persistido. Que el servidor y el cliente pueden fallar en momentos distintos.

Q014 · Selecciona una respuesta En AeroGestor actual, ¿cómo llega normalmente el iPhone a la base MySQL?. Abre una conexión JDBC desde APIClient. Envía SQL mediante SwiftUI. Consume HTTP de la API, que accede a persistencia mediante Java/JPA. Usa las credenciales de la base incluidas en cada View.

Q015 · Selecciona una respuesta En AeroGestor actual, alguien propone devolver directamente User como JSON. ¿Qué riesgo revisarías primero frente al DTO público existente?. Que MySQL convierta toda FK en PK. Que se borren todas las filas por serializar. Que Swift deje de admitir números enteros. Que se expongan campos internos como passwordHash.

Q016 · Selecciona todas las respuestas correctas Fundamentos: antes de implementar un cambio vertical, ¿qué decisiones forman parte de un análisis de impacto útil?. Qué contratos y datos cambian. Qué estrategia preserva los datos existentes. Si conservar el nombre del campo evita revisar su significado y sus unidades. Si compilar únicamente el backend basta para confirmar compatibilidad iOS. Qué pruebas y regresiones revisar.

Q017 · Selecciona una respuesta En AeroGestor actual, la UI permite sólo ciertas opciones pero el service acepta texto libre en otro campo. ¿Qué debes explicar en la defensa?. Que la garantía real debe verificarse en cada capa, no inferirse de la pantalla. Que todas las validaciones del cliente son autenticación. Que las restricciones de UI siempre se convierten en CHECK SQL. Que un DTO obliga a normalizar cualquier string.

Q018 · Selecciona una respuesta En AeroGestor actual, ¿qué evidencia distingue mejor una funcionalidad disponible en la API de una funcionalidad accesible desde la app?. Contar las propiedades del DTO. Comprobar tanto el endpoint como su acción y flujo en la UI. Leer únicamente el título de una diapositiva. Comprobar sólo que existe una tabla.

Q019 · Selecciona todas las respuestas correctas Fundamentos: una refactorización conserva el comportamiento observable. ¿Qué debe respetar o comprobar?. La ausencia de cambios intencionales en resultados funcionales. Las pruebas relevantes y los efectos secundarios. Los contratos que consumen otros componentes. Que todos los métodos cambien de nombre. Que toda clase quede en una única carpeta.

Q020 · Selecciona todas las respuestas correctas Fundamentos: ¿qué observaciones ayudan a seguir un dato de extremo a extremo?. El JSON enviado y recibido. Dar por probado el resultado de negocio usando solo el código HTTP. Suponer que cualquier respuesta 2xx demuestra que la View ya actualizó su estado. El estado que consume la View. Suponer que una fila existente demuestra que los filtros de la lista la incluyen.

I02 · MySQL, claves, relaciones, restricciones y migraciones. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q021 · Selecciona una respuesta Fundamentos SQL: ¿qué garantiza una PRIMARY KEY sobre id?. Que todas las columnas sean únicas. Que no puedan existir claves foráneas. Que el valor identifique la fila sin duplicados ni NULL. Que todo id sea una fecha.

Q022 · Selecciona una respuesta En el esquema actual de AeroGestor, source_flight_id es nullable y UNIQUE. ¿Cuántas novedades pueden referenciar el mismo vuelo como origen?. Una por cada administrador. Exactamente dos. Un número ilimitado. Como máximo una.

Q023 · Selecciona una respuesta En AeroGestor actual, ¿qué expresa que flights.proposed_aircraft_id admita NULL?. Que puede no existir una aeronave propuesta. Que cualquier número inexistente es válido. Que flights no tiene PK. Que la aeronave vigente también es siempre opcional.

Q024 · Selecciona todas las respuestas correctas Fundamentos SQL: ¿qué comprueba una FK válida a users(id) y qué no demuestra por sí sola?. No prueba por sí sola la identidad del llamador HTTP. No sustituye una regla específica sobre el rol del usuario. Un valor no nulo debe referenciar una fila permitida por la restricción. La persona que llama por HTTP queda autenticada. Convierte automáticamente a todo usuario en piloto.

Q025 · Selecciona una respuesta En AeroGestor actual, ¿a qué tabla apuntan pilot_id y mechanic_id?. A alerts. A users. A roles directamente. A dos tablas independientes llamadas pilots y mechanics.

Q026 · Selecciona una respuesta Fundamentos SQL: quieres listar también las aeronaves sin vuelos. ¿Qué combinación inicial es adecuada?. Un DELETE sobre flights. Un CROSS JOIN sin condición. aircraft LEFT JOIN flights por aircraft.id = flights.aircraft_id. Un INNER JOIN que exige coincidencia en flights.

Q027 · Selecciona todas las respuestas correctas En el esquema actual de AeroGestor, ¿cuáles son afirmaciones correctas sobre alerts?. user_id es obligatorio en todas las filas por una restricción NOT NULL. Tiene FK directas a todos los vuelos y mantenimientos. aircraft_id puede ser NULL. recipient_role es un campo de texto, no una FK. recipient_role es una FK a roles.id.

Q028 · Selecciona una respuesta En AeroGestor actual, se quiere conservar una base con datos valiosos. ¿Por qué no debes ejecutar schema.sql como si fuera una migración incremental?. Porque la app lo convierte en una consulta de lectura. Porque sólo imprime comentarios. Porque cambia únicamente los índices. Porque elimina y recrea toda la base.

Q029 · Selecciona una respuesta En AeroGestor actual, ¿qué efecto tiene seed.sql sobre los datos del modelo vigente?. Sustituye el contenido por escenarios de demostración. Añade un usuario sin tocar datos anteriores. Sólo cuenta registros. Sólo crea una vista temporal.

Q030 · Selecciona una respuesta Fundamentos MySQL: una columna es UNIQUE pero nullable. ¿Qué diferencia tiene respecto de una PK?. UNIQUE desactiva la validación de duplicados. Puede admitir NULL sin convertirse en una clave primaria. UNIQUE obliga a usar números negativos. UNIQUE impide crear índices.

Q031 · Selecciona todas las respuestas correctas En el esquema actual de AeroGestor, ¿qué casos respetan los CHECK de aterrizajes?. proposed_landings = NULL. landings = 1. proposed_landings = 51. landings = 50. landings = 0.

Q032 · Selecciona una respuesta En AeroGestor actual, existe un usuario administrador y su id satisface una FK. ¿Demuestra eso que puede ser el piloto de un vuelo según el negocio?. Sí, cualquier PK equivale a licencia. No, porque ninguna FK puede apuntar a users. No; existencia y cualificación de piloto son comprobaciones diferentes. Sí, una FK incluye todas las reglas del rol.

Q033 · Selecciona una respuesta En el esquema actual de AeroGestor, ¿por qué las horas de aeronave no se interpretan como claves de relación?. Porque total_hours referencia roles.id. Porque DECIMAL significa FK opcional. Porque cualquier número decimal identifica un usuario. Porque son valores DECIMAL de negocio, mientras las relaciones usan identificadores.

Q034 · Selecciona todas las respuestas correctas En el esquema actual de AeroGestor, ¿para qué consultas se definieron índices explícitos?. Garantizar mediante un índice que todo usuario ACTIVE tenga licencia. Convertir automáticamente un piloto en mecánico. Filtrar vuelos por fecha y piloto. Buscar novedades activas por aeronave. Garantizar que una llamada HTTP venga de un administrador.

Q035 · Selecciona una respuesta Fundamentos: se agrega una columna obligatoria a una tabla poblada. ¿Qué debe resolverse antes de imponer NOT NULL?. Una política válida para los registros existentes. Cambiar únicamente el DTO sin modificar la tabla. El nombre comercial del teléfono. La eliminación automática de todos los índices.

Q036 · Selecciona una respuesta En AeroGestor actual, ¿qué script permite verificar el seed sin reemplazar sus datos?. Una migración elegida al azar. verify_seed.sql. schema.sql. seed.sql.

Q037 · Selecciona una respuesta En AeroGestor actual, Hibernate usa ddl-auto=validate. ¿Qué ocurre conceptualmente si falta una columna requerida por el mapeo?. La UI inventa el dato y repara la tabla. Se desactiva automáticamente la FK. La validación puede impedir el arranque; no debe suponerse que Hibernate cree la columna. La columna se crea siempre sin intervención.

Q038 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué precauciones corresponden al aplicar migraciones sobre una base existente?. Conservar una copia cuando se quiera preservar la información. Suponer que Spring mantiene una tabla automática de versiones. Ejecutar siempre todas después de schema.sql. Comparar sus precondiciones con el estado de la base. Aplicar sólo las pendientes en orden y registrar las aplicadas.

Q039 · Selecciona una respuesta Fundamentos SQL: después de GROUP BY pilot_id quieres conservar sólo grupos con más de tres vuelos. ¿Qué cláusula evalúa ese agregado?. ORDER BY como sustituto de un filtro. SET COUNT(*) > 3. VALUES COUNT(*) > 3. HAVING COUNT(*) > 3.

Q040 · Selecciona una respuesta En el esquema actual de AeroGestor, medical_expiration_date admite NULL. ¿Qué significa ese NULL en la estructura de datos?. Ausencia del dato de vencimiento, no una fecha concreta. Una fecha de vencimiento infinita garantizada por SQL. Un usuario automáticamente rechazado. La eliminación de la fila de usuario.

Q041 · Selecciona todas las respuestas correctas En el esquema actual de AeroGestor, ¿qué referencias son obligatorias en cada mantenimiento?. mechanic_id. Una referencia a alerts.id. aircraft_id. resolved_by_user_id. source_flight_id.

Q042 · Selecciona una respuesta En AeroGestor actual, una novedad tiene author_id y resolved_by_user_id. ¿Qué expresa ese diseño?. Que una novedad resuelta elimina a su autor. Que se conservan responsabilidades distintas de creación y resolución. Que ambos campos referencian roles en vez de users. Que el autor debe ser siempre quien resuelve.

Q043 · Selecciona una respuesta Fundamentos SQL: una columna opcional tiene valores 10, NULL y 20. ¿Qué devuelve COUNT(columna)?. 30. NULL. 2. 3.

Q044 · Selecciona todas las respuestas correctas En el esquema actual de AeroGestor, ¿qué datos de usuario tienen una restricción UNIQUE además de id?. first_name. medical_expiration_date. license_number. status. email.

Q045 · Selecciona una respuesta En AeroGestor actual, considerando sólo la FK de proposed_aircraft_id y suponiendo que ninguna otra restricción impida borrar la aeronave, ¿qué hace ON DELETE SET NULL?. Aprueba automáticamente la modificación. Elimina automáticamente el vuelo completo. Copia la aeronave borrada en users. Sustituye la referencia propuesta por NULL.

Q046 · Selecciona una respuesta En AeroGestor actual, ¿qué afirmación es correcta sobre el índice idx_flights_date?. Indexa flight_date y departure_time para apoyar consultas sobre esos datos. Reemplaza el CHECK de duración. Hace único cada día del calendario. Es una regla de autorización del piloto.

Q047 · Selecciona una respuesta Fundamentos SQL: una consulta tarda más al crecer los datos. ¿Qué aporta EXPLAIN antes de agregar índices a ciegas?. Evita medir la consulta real. Muestra información del plan de ejecución elegido. Reescribe todas las FK automáticamente. Asegura que cualquier índice nuevo sea útil.

Q048 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué límites tiene el seed frente a crear operaciones mediante la API?. No reproduce por sí solo todos los efectos secundarios Java. No demuestra que un flujo HTTP funcione de extremo a extremo. Ejecuta automáticamente cada validación de FlightService. Pasa por los controllers para insertar las instantáneas. Siempre recalcula todo el historial de horas.

Q049 · Selecciona una respuesta En AeroGestor actual, acabas de crear una base limpia con schema.sql. ¿Qué procede respecto de las migraciones históricas?. Ejecutar primero la que elimina columnas y después las demás. Aplicarlas todas otra vez sin revisar. No repetirlas automáticamente: el esquema completo ya incorpora el estado final. Suponer que forman parte de cada inicio de la app.

Q050 · Selecciona todas las respuestas correctas Fundamentos de evolución de datos: ¿qué medidas reducen el riesgo de una migración?. Continuar ante errores sin evaluar el estado resultante. Definir precondiciones y verificaciones posteriores. Probarla primero sobre una copia representativa. Suponer que envolver cualquier DDL en BEGIN lo vuelve reversible. Respaldar los datos que deban conservarse.

I03 · Java, Spring Boot, JPA, DTO, HTTP y errores. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q051 · Selecciona una respuesta Fundamentos Java/Spring: ¿qué permite inyectar una dependencia mediante el constructor?. Evitar que se ejecuten excepciones. Eliminar el contrato del repositorio. Convertir cualquier servicio en tabla SQL. Hacer explícito lo que la clase necesita para construirse.

Q052 · Selecciona una respuesta En AeroGestor actual, GET /api/flights?pilotId=7 transmite pilotId como ¿qué tipo de dato HTTP?. Un parámetro de consulta. Un token de sesión firmado. Una columna SQL creada en ese momento. El cuerpo obligatorio de un POST.

Q053 · Selecciona una respuesta En AeroGestor actual, un POST /api/flights crea correctamente un vuelo. ¿Qué estado HTTP declara ese controller?. 204 sin contenido. 201 Created. 409 Conflict. 301 Redirect.

Q054 · Selecciona todas las respuestas correctas Fundamentos: ¿qué diferencias entre DTO y Entity son correctas?. Una Entity representa un modelo persistente mapeado. Un DTO tiene que coincidir con todas las columnas de la tabla. Un DTO puede seleccionar campos de intercambio. Toda Entity debe devolverse completa al cliente. Separarlos garantiza que nunca necesitarán evolucionar juntos.

Q055 · Selecciona una respuesta En AeroGestor actual, un service lanza IllegalArgumentException por una regla inválida. ¿Qué respuesta configura GlobalExceptionHandler?. 200 con un array vacío. 201 con una entidad creada. 400 con ApiErrorResponse. 404 para cualquier IllegalArgumentException.

Q056 · Selecciona una respuesta Fundamentos Java: en `valor != null && !valor.isBlank()`, si valor es null, ¿qué sucede con isBlank()?. Provoca obligatoriamente una consulta SQL. Se convierte automáticamente en una cadena vacía. Se ejecuta dos veces. No se evalúa por cortocircuito de &&.

Q057 · Selecciona una respuesta En AeroGestor actual, ¿qué vincula la clase Flight con la tabla flights?. @Entity y @Table(name = "flights"). La anotación @RequestMapping del controller. El nombre del record utilizado como DTO de entrada. El texto visible del dashboard.

Q058 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué características tiene FlightRepository?. Extiende JpaRepository<Flight, Long>. Define @EntityGraph para aircraft y pilot en varios métodos. Sus métodos pueden declarar consultas derivadas del nombre. Ejecuta las reglas de habilitación de usuarios antes de cada consulta por convención. Autentica al llamador HTTP por el tipo genérico Long.

Q059 · Selecciona una respuesta Fundamentos Spring: con las reglas predeterminadas de @Transactional, ¿qué excepción propagada provoca normalmente rollback?. Toda excepción capturada y ocultada. Una RuntimeException. Cualquier checked exception sin configuración adicional. Cualquier comentario del código.

Q060 · Selecciona una respuesta En AeroGestor actual, ¿es correcto afirmar que cualquier JSON mal formado recibe necesariamente 400?. Sí, el texto JSON fuerza 400 en todos los handlers. No; siempre se acepta con 200. No; falta un handler específico y puede caer en el genérico 500. Sí, porque todos los services usan @Valid.

Q061 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué campos forman parte del contrato normalizado ApiErrorResponse?. passwordHash. message. El objeto URLSession de Swift. stackTrace completo del servidor. status.

Q062 · Selecciona una respuesta En AeroGestor actual, FlightResponse contiene aircraftRegistration además de aircraftId. ¿Qué ilustra esa combinación?. Que las FK ya no sirven. Que registration es la PK numérica del vuelo. Que cada propiedad crea una tabla nueva. Que un DTO puede combinar identificadores y datos útiles para presentar la relación.

Q063 · Selecciona una respuesta Fundamentos HTTP aplicados al contrato: ¿por qué no debes tratar un PUT de formulario como si cualquier campo omitido conservara su valor?. Porque la semántica y el contrato de actualización deben indicar cómo se interpreta la omisión. Porque un campo nullable nunca puede cambiarse. Porque PUT siempre elimina la base. Porque HTTP prohíbe JSON en PUT.

Q064 · Selecciona una respuesta En AeroGestor actual, FlightRequest no declara Bean Validation en sus campos. ¿Qué conclusión debes evitar?. Que el controller delega al service. Que no existe ninguna validación del vuelo. Que el request puede tener validaciones en el service. Que el servicio puede calcular datos derivados.

Q065 · Selecciona todas las respuestas correctas En AeroGestor actual, APIClient recibe HTTP 200 pero JSON incompatible con el tipo esperado. ¿Qué afirmaciones son correctas?. APIClient transforma el fallo en decodingFailed. Puede fallar la decodificación aunque HTTP indique éxito. Conviene revisar nombres, tipos y opcionalidad del contrato. El servidor debe deshacer automáticamente su transacción. El body se convierte siempre en un array vacío.

Q066 · Selecciona una respuesta Fundamentos Java: ¿qué expresa `findById(id).orElseThrow(...)` cuando findById devuelve Optional?. Siempre crea una entidad vacía. Ignora la ausencia y sigue con un dato aleatorio. Obtiene el valor si existe y lanza la excepción indicada si falta. Convierte null en el primer usuario de la tabla.

Q067 · Selecciona una respuesta En AeroGestor actual, los listados de la API usan List<FlightResponse>. ¿Qué forma JSON describe el contrato para esos listados?. Un texto con los resultados concatenados mediante toString(). Un objeto JSON con una propiedad content obligatoria por ser List. Un objeto JSON cuyas claves son los identificadores de la lista. Un array JSON.

Q068 · Selecciona una respuesta En AeroGestor actual, AuthService.login usa @Transactional(readOnly = true). ¿Qué describe principalmente esa anotación?. Una intención de transacción de lectura, no una autenticación automática de futuras llamadas. Una prohibición absoluta de llamar otros métodos Java. Un permiso ADMIN concedido al usuario. Un token que se adjunta al iPhone.

Q069 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué afirma correctamente el mapeo Flight.aircraft?. Define que cada aeronave tenga obligatoriamente un vuelo. Es una relación ManyToOne. Permite siempre una aeronave inexistente. Es obligatoria según optional=false y nullable=false. Usa aircraft_id como columna de unión.

Q070 · Selecciona una respuesta Fundamentos Java: en `List<FlightResponse>`, ¿qué aporta el parámetro de tipo FlightResponse?. El nombre físico del archivo JSON. El tipo de elementos esperado por la colección. Una garantía de que todos los vuelos son activos. El número exacto de elementos.

Q071 · Selecciona una respuesta En AeroGestor actual, una excepción inesperada llega al handler genérico. ¿Qué mensaje público devuelve éste?. Todo el stack trace sin filtrar. La contraseña del usuario. Unexpected server error. La URL privada de la base.

Q072 · Selecciona una respuesta En AeroGestor actual, UserService.getUser no encuentra el id y lanza IllegalArgumentException. ¿Qué HTTP produce esa implementación?. 201 porque getUser crea un recurso. 204 porque Optional está vacío. 404 porque el texto dice no encontrado. 400 por el tipo de excepción que maneja el advice.

Q073 · Selecciona todas las respuestas correctas En AeroGestor actual, los controllers reciben services por constructor. ¿Qué consecuencias prácticas tiene este diseño?. Facilita instanciarlos con una dependencia controlada en pruebas. Vuelve imposible que un service lance una excepción. Permite omitir la validación del service porque el constructor ya la ejecuta. Garantiza autorización HTTP global. Hace visible su dependencia del service.

Q074 · Selecciona una respuesta Fundamentos Spring: un método transaccional propaga una checked exception y no hay reglas personalizadas de rollback. ¿Qué debes revisar?. Que las checked exceptions no provocan rollback por defecto en esa política. Que JSON determina la decisión de rollback. Que cualquier checked exception siempre equivale a rollback. Que el nombre de la excepción debe comenzar por SQL.

Q075 · Selecciona una respuesta En AeroGestor actual, PUT /api/flights/{id} recibe id y FlightRequest. ¿Cómo se obtienen?. Ambos se obtienen de parámetros de consulta por defecto. El id mediante @PathVariable y el DTO mediante @RequestBody. El id desde una cabecera Authorization y el DTO desde MySQL. El id mediante @RequestBody y el DTO mediante @PathVariable.

Q076 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿en qué entradas inspeccionadas se usa @Valid sobre el body?. Solicitud de registro en UserController. Login de AuthController. Creación de aeronave en AircraftController. Cualquier string de query por llamarse status. Cada método de FlightController por definición de @RestController.

Q077 · Selecciona una respuesta Mejora propuesta para AeroGestor: dos requests concurrentes modifican el mismo dato. ¿Qué afirmación sobre @Transactional es correcta?. Autentica a quien escribió primero. Serializa necesariamente todos los requests de la aplicación. Da atomicidad transaccional pero no sustituye un diseño de control de concurrencia. Vuelve idempotente cualquier POST.

Q078 · Selecciona una respuesta Fundamentos JSON/HTTP: ¿qué diferencia hay entre Content-Type y Accept?. Accept reemplaza la validación del cuerpo. Content-Type elige la PK y Accept elige la FK. Ambas cabeceras contienen siempre la contraseña. Content-Type describe el contenido enviado y Accept indica tipos de respuesta aceptados.

Q079 · Selecciona una respuesta En AeroGestor actual, Flight.id usa @GeneratedValue(strategy = IDENTITY). ¿Qué interpretación es correcta?. La identidad persistida se genera mediante el mecanismo de identidad de la base. La fecha del vuelo se utiliza obligatoriamente como id. El iPhone debe inventar un id sin consultar el servidor. El id cambia al ordenar la lista.

Q080 · Selecciona todas las respuestas correctas En AeroGestor actual, varios métodos de FlightRepository usan @EntityGraph para aircraft y pilot. ¿Qué conclusiones son válidas?. Su finalidad es autenticar cada consulta. No deben confundirse con una regla de autorización. Configuran asociaciones incluidas en el plan de carga. Ayudan a disponer de datos relacionados usados al construir respuestas. Convierten la relación ManyToOne en una relación OneToOne.

Q081 · Selecciona una respuesta En el contrato actual de AeroGestor, ¿cómo se envían los decimales de horas representados mediante BigDecimal?. Como imágenes PNG. Como números JSON, no como strings por defecto del contrato. Como códigos de estado HTTP. Como SQL ejecutable dentro del body.

Q082 · Selecciona una respuesta Fundamentos Java: si un catch captura una excepción y continúa sin relanzarla, ¿qué debe evitar suponerse sobre el llamador?. Que conviene definir una política de propagación. Que puede recibir un resultado normal si el método continúa. Que el llamador necesariamente recibirá esa misma excepción. Que el error pudo quedar oculto para la capa superior.

Q083 · Selecciona todas las respuestas correctas En AeroGestor actual, un POST agota el tiempo de espera y se desconoce si el servidor guardó. ¿Qué respuestas técnicas son prudentes?. Afirmar que el timeout prueba ausencia de commit. Asumir que un POST se vuelve idempotente solo por ejecutarse en @Transactional. Consultar el estado antes de reenviar una escritura. Diferenciar el resultado del transporte del resultado transaccional. Reenviar indefinidamente hasta que la UI cambie.

Q084 · Selecciona una respuesta Mejora propuesta para AeroGestor: se renombra una propiedad de respuesta que Swift espera con el nombre anterior. ¿Qué debes revisar junto con Java?. Sólo la columna SQL, porque JSONDecoder acepta cualquier clave para la misma propiedad. Únicamente la firma del desarrollador. Sólo la entidad JPA, porque el compilador Swift conoce los DTO Java. El contrato JSON, la decodificación Swift y las pruebas de compatibilidad.

Q085 · Selecciona todas las respuestas correctas Fundamentos de evolución de APIs: ¿qué prácticas ayudan a introducir un campo nuevo sin romper consumidores existentes?. Suponer que compilar Java valida la app iOS. Cambiar simultáneamente nombres de todos los campos sin pruebas. Revisar el contrato y la opcionalidad de ambos lados. Probar la respuesta nueva con el cliente que la consumirá. Definir qué ocurre cuando el dato falta en versiones anteriores.

I04 · Login, registro, usuarios, roles y seguridad. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q086 · Selecciona una respuesta Fundamentos de seguridad: ¿qué diferencia hay entre autenticación y autorización?. Autenticación verifica identidad y autorización decide acceso a acciones o recursos. Ambas equivalen a comprobar que un id existe. Autorización significa ordenar una tabla. Autenticación sólo cambia el diseño de las pestañas.

Q087 · Selecciona una respuesta En AeroGestor actual, una cuenta INACTIVE envía credenciales correctas al login. ¿Qué resultado corresponde?. La cuenta se activa automáticamente. Se rechaza el acceso con 403. Se acepta el login porque la contraseña ya fue validada. Se emite un JWT con rol temporal.

Q088 · Selecciona una respuesta En AeroGestor actual, una solicitud de registro válida acaba de guardarse. ¿Cuál es su estado inicial?. ACTIVE sin revisión. IN_MAINTENANCE. PENDING_APPROVAL. CANCELLED.

Q089 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué afirmaciones sobre LoginResponse son correctas?. Incluye la contraseña para próximas llamadas. Es una cookie de sesión de servidor. Incluye el rol del usuario. Incluye un accessToken firmado por el servidor. Incluye el identificador de usuario.

Q090 · Selecciona una respuesta Mejora de producción: ¿qué tratamiento es adecuado para contraseñas persistidas?. Guardarlas en texto legible y ocultar el nombre de la tabla. Enviarlas al cliente después de cada login. Codificarlas en Base64 como única protección. Usar un hash de contraseñas adaptativo con salt y verificación apropiada.

Q091 · Selecciona una respuesta En AeroGestor actual, una cuenta REJECTED intenta entrar con contraseña incorrecta. ¿Qué información devuelve primero el login?. El mensaje genérico de credenciales inválidas. Los datos de todos los administradores. El motivo completo de rechazo aunque falle la contraseña. Una nueva aprobación automática.

Q092 · Selecciona todas las respuestas correctas En AeroGestor actual, approveRegistration comprueba el adminId informado. ¿Qué exige al usuario referenciado por ese ID?. Que su rol sea ADMIN. Que el simple parámetro pruebe criptográficamente quién llama. Que exista. Que sea el piloto de todos los vuelos. Que su estado sea ACTIVE.

Q093 · Selecciona una respuesta En AeroGestor actual, administración rechaza una solicitud sin proporcionar motivo. ¿Qué hace el service?. Elimina el rol del usuario. Rechaza la operación por motivo obligatorio. Aprueba la cuenta por defecto. Inventa un motivo y continúa.

Q094 · Selecciona una respuesta Fundamentos: la app guarda localmente un booleano isAuthenticated. ¿Qué demuestra eso ante un servidor?. Que MySQL autenticó al teléfono. Que todas las futuras llamadas están firmadas. Sólo un estado del cliente; no prueba por sí mismo la identidad de cada request. Que el usuario tiene cualquier permiso solicitado.

Q095 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué normalizaciones realiza UserService al solicitar registro?. Concede el rol por geolocalización. Normaliza el rol a minúsculas antes de persistirlo. Hashea la contraseña mediante el nombre passwordHash. Convierte email a minúsculas tras recortarlo. Recorta nombres y apellidos.

Q096 · Selecciona una respuesta En AeroGestor actual, llega una solicitud con un email que ya existe en una cuenta o solicitud previa. ¿Qué hace la validación de registro?. Elimina la anterior sin preguntar. Cambia automáticamente el dominio del email. Crea otra cuenta con el mismo email intencionalmente. Rechaza el duplicado detectado.

Q097 · Selecciona una respuesta En AeroGestor actual, una solicitud pendiente no aparece en getUsers. ¿Dónde se consulta ese conjunto de solicitudes?. En getRegistrationRequests, que busca PENDING_APPROVAL. En el método que calcula duración de vuelos. En la tabla aircraft exclusivamente. En un endpoint remoto de push.

Q098 · Selecciona una respuesta Fundamentos: ¿qué diferencia hay entre normalizar y validar un dato?. Son necesariamente la misma operación. Normalizar lleva a una forma común y validar comprueba las reglas exigidas. Normalizar garantiza que cualquier dato sea correcto. Validar significa siempre convertir a mayúsculas.

Q099 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué requisitos personales valida el backend para registrar un vuelo como piloto?. Tener una CMA necesariamente vigente según esa función. Estado ACTIVE. Ser ADMIN sin licencia. Rol PILOT. Número de licencia no vacío.

Q100 · Selecciona una respuesta En AeroGestor actual, un piloto tiene licencia informada y CMA vencida. Según SessionManager.qualificationIssue, ¿la CMA bloquea por sí misma la carga?. Sí, convierte automáticamente el rol en REJECTED. Sí, el método devuelve siempre un error por CMA. No; el método comprueba la licencia y deja la CMA como dato/alerta. No, porque elimina la fecha de la base.

Q101 · Selecciona una respuesta En AeroGestor actual, ¿qué efecto directo tiene SessionManager.logout()?. Revoca un JWT mediante un endpoint obligatorio. Borra el usuario de MySQL. Marca el usuario como INACTIVE en el servidor. Limpia currentUser y pone isAuthenticated en false.

Q102 · Selecciona una respuesta Fundamentos de almacenamiento de contraseñas: ¿para qué sirve un salt único en un esquema adecuado de hashing?. Para que la misma contraseña no produzca una representación idéntica para todas las cuentas. Para sustituir el control de acceso HTTP. Para ocultar el número de usuarios de una tabla. Para recuperar directamente la contraseña original.

Q103 · Selecciona todas las respuestas correctas En AeroGestor actual, al actualizar un perfil que queda con rol ADMIN, ¿qué hace UserService con sus datos aeronáuticos?. Usa esos campos como contraseña. Deja licenseNumber en null. Conserva el resto de datos públicos que valida y guarda. Deja medicalExpirationDate en null. Crea una licencia de piloto aleatoria.

Q104 · Selecciona una respuesta En AeroGestor actual, SessionManager recibe un UserResponse cuyo id no coincide con currentUser.id. ¿Qué hace updateCurrentUser?. Activa automáticamente al usuario ajeno. Ignora esa actualización por la guarda de identidad. Reemplaza la identidad por la del otro usuario. Actualiza todas las sesiones del servidor.

Q105 · Selecciona una respuesta En AeroGestor actual, se intenta aprobar otra vez una solicitud que ya no está PENDING_APPROVAL. ¿Qué hace findPendingRequest?. Borra el historial del administrador. Crea un nuevo usuario equivalente. Rechaza la operación porque la solicitud ya fue procesada. La vuelve a aprobar sin comprobar el estado.

Q106 · Selecciona todas las respuestas correctas Mejora de producción: ¿qué controles son complementarios y no intercambiables?. Confiar en que ocultar el botón hace imposible invocar el endpoint. Autorización de la operación sobre el recurso. Cambiar el nombre passwordHash sin cambiar su tratamiento. Validación de datos de entrada. Autenticación del llamador.

Q107 · Selecciona una respuesta En AeroGestor actual, se aprueba una nueva cuenta de piloto que aún no informó licencia. ¿Qué relación entre login y carga es correcta?. Aprobar la cuenta inventa una licencia válida. El login sólo sirve si ya existe un vuelo. Loguearse significa que toda actividad ya está habilitada. Puede iniciar sesión al estar ACTIVE, pero debe completar la licencia para registrar vuelos.

Q108 · Selecciona una respuesta En AeroGestor actual, una solicitud válida pide rol ADMIN. ¿Qué interpretación coincide con UserService?. Ese rol está entre los solicitables, pero la cuenta se crea pendiente de aprobación. Pedir ADMIN autentica automáticamente al llamador. La solicitud se convierte en un mantenimiento. Se crea inmediatamente una sesión administrativa de servidor.

Q109 · Selecciona todas las respuestas correctas En AeroGestor actual, ¿qué acciones suceden al aprobar correctamente una solicitud de registro?. Se emite un JWT firmado obligatoriamente. Se generan avisos para el usuario y el rol ADMIN. Se borra la cuenta de users. Se conserva obligatoriamente cualquier motivo de rechazo anterior. La cuenta pasa a ACTIVE.

Q110 · Selecciona todas las respuestas correctas Mejora de producción: un request incluye userId y role enviados por el cliente. ¿Qué verificaciones hacen falta para confiar en una operación protegida?. Vincular el request a una identidad autenticada por el servidor. No confiar sólo en identificadores o roles autodeclarados. Comprobar permisos sobre la operación y el recurso. Suponer que ocultar un botón impide llamadas HTTP alternativas. Aceptar el rol porque el JSON es sintácticamente válido.

I05 · Aeronaves y novedades técnicas. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q111 · Selecciona una respuesta Hoy en AeroGestor se carga una matrícula con espacios y minúsculas. ¿Qué hace AircraftService antes de guardarla?. Genera una matrícula nueva al azar. Elimina espacios externos y convierte a mayúsculas. Conserva los espacios para distinguir aeronaves. Convierte toda la matrícula a minúsculas.

Q112 · Selecciona una respuesta Hoy en AeroGestor se intenta crear una aeronave cuya matrícula ya existe con otra combinación de mayúsculas. ¿Qué debe ocurrir?. Se transforma la matrícula en el identificador numérico. Se crea otra aeronave porque el texto no es idéntico. Se rechaza el alta por matrícula duplicada. Se reemplaza silenciosamente la anterior.

Q113 · Selecciona una respuesta Una aeronave tiene una novedad técnica abierta y un usuario tiene un aviso en su bandeja. ¿Qué distinción de modelado es correcta?. La gravedad del aviso reemplaza al estado de la aeronave. Ambos registros deben compartir obligatoriamente el mismo ciclo de vida. Resolver cualquier aviso demuestra que el problema técnico terminó. El registro del problema y su comunicación son conceptos diferentes.

Q114 · Selecciona una respuesta Hoy en AeroGestor se cambia el estado de una aeronave a un valor no admitido. ¿Qué hace normalizeStatus?. Rechaza el valor con una excepción. Lo reemplaza por ACTIVE sin avisar. Crea un nuevo estado en MySQL. Lo acepta porque cualquier texto representa un estado.

Q115 · Selecciona todas las respuestas correctas Hoy en AeroGestor una consulta devuelve una aeronave. ¿Qué datos describe AircraftResponse a través de AircraftService? Selecciona las afirmaciones correctas. Incluye las horas de motor. Sustituye la matrícula por la gravedad de una alerta. Incluye necesariamente una contraseña del piloto. Incluye las horas del último mantenimiento completado, si existe. Incluye obligatoriamente el identificador del último mecánico.

Q116 · Selecciona una respuesta Hoy en AeroGestor se crea un vuelo sin observaciones técnicas. ¿Qué devuelve createFromFlight al recibir una descripción vacía?. Una solicitud de mantenimiento obligatoria. null, sin crear una novedad. Una novedad CRITICAL vacía. Una aeronave nueva.

Q117 · Selecciona una respuesta Se elimina un aviso de la bandeja personal, pero el problema técnico sigue abierto. ¿Qué principio conviene respetar al diseñar el sistema?. Toda acción de lectura debe resolver problemas técnicos. Un cambio visual siempre debe cambiar la disponibilidad. No mezclar la gestión del destinatario con la resolución del hecho de dominio. Eliminar el historial para evitar estados distintos.

Q118 · Selecciona una respuesta Hoy en AeroGestor se pide el último mantenimiento de una aeronave que solo tiene trabajos IN_PROGRESS. ¿Qué valor obtiene lastMaintenanceHours?. La mayor hora de cualquier trabajo. Las horas actuales del motor. Cero como prueba de que hubo servicio. null, porque no hay mantenimiento COMPLETED.

Q119 · Selecciona todas las respuestas correctas Hoy en AeroGestor se crea una novedad desde un vuelo con descripción válida. ¿Qué conserva el registro?. Una orden automática que cambia la aeronave a IN_MAINTENANCE. Un identificador de vuelo de origen. Una autorización HTTP autenticada del autor. El mecánico asignado a la aeronave como autor. La aeronave del vuelo.

Q120 · Selecciona una respuesta Hoy en AeroGestor un usuario PILOT activo intenta resolver una novedad. ¿Qué hace el service?. Rechaza la operación por no tener un rol admitido para resolver. Lo permite porque creó el vuelo. Solo cambia el color del aviso. Lo convierte automáticamente en mecánico.

Q121 · Selecciona una respuesta Dos cadenas de estado representan el mismo concepto pero difieren en espacios o mayúsculas. ¿Qué aporta normalizarlas en el límite de entrada?. Demuestra quién hizo la solicitud. Reduce representaciones accidentales de un mismo valor. Reemplaza la necesidad de validar estados admitidos. Hace innecesarias las pruebas del service.

Q122 · Selecciona todas las respuestas correctas Hoy en AeroGestor un mecánico activo resuelve una novedad abierta. ¿Qué cambios realiza resolve?. Marca automáticamente todos los avisos antiguos como resueltos. Genera comunicaciones de resolución para los roles previstos. Registra quién resolvió y cuándo. Elimina el vuelo que originó la novedad. Marca la novedad como resuelta.

Q123 · Selecciona una respuesta Hoy en AeroGestor se repite resolve sobre una novedad ya resuelta, con un resolver válido. ¿Qué comportamiento tiene la guarda del método?. Abre otra novedad. Duplica obligatoriamente la notificación de resolución. Devuelve la novedad sin volver a guardar ni notificar esa resolución. Borra al resolver anterior.

Q124 · Selecciona una respuesta Hoy en AeroGestor se consulta la lista de novedades sin indicar resolved. ¿Cuál es el filtro predeterminado?. Solo las resueltas. Todas, sin distinguir estado. Solo las CRITICAL. Las no resueltas.

Q125 · Selecciona una respuesta Una regla debe avisar cuando una aeronave pasa de operativa a no operativa. ¿Qué información necesita para detectar esa transición?. El estado anterior y el estado nuevo. El número de filas de usuarios. Solo la matrícula. Solo la fecha de creación del aviso.

Q126 · Selecciona todas las respuestas correctas Hoy en AeroGestor se normaliza la gravedad de una novedad técnica mediante normalizeSeverity. ¿Qué afirmaciones son correctas?. Si no se informa gravedad, usa INFO. URGENT se acepta como alias de CRITICAL. Conserva obligatoriamente las minúsculas originales. Recorta espacios externos y convierte a mayúsculas. Acepta cualquier palabra sin comprobarla.

Q127 · Selecciona una respuesta Hoy en AeroGestor un registro de novedad CRITICAL queda abierto. ¿Qué puede afirmarse sobre el estado de la aeronave a partir de createFromFlight únicamente?. La aeronave queda automáticamente reparada. No hay en ese método una asignación automática de estado de aeronave. La aeronave pasa siempre a INACTIVE. La aeronave se elimina del hangar.

Q128 · Selecciona todas las respuestas correctas Se diseña para producción un cierre técnico con trazabilidad. ¿Qué datos permiten explicar mejor la resolución de un problema?. Cuándo se realizó. Usar el color de la tarjeta como única evidencia. Conservar la asociación con la aeronave afectada. Eliminar siempre el registro original. Quién realizó el cierre.

Q129 · Selecciona una respuesta Hoy en AeroGestor se actualiza una aeronave sin cambiar su identidad. ¿Por qué la comprobación de matrícula duplicada excluye el mismo id?. Para permitir dos aeronaves distintas con igual matrícula. Para autorizar al cliente por su id. Para no confundir la propia matrícula con la de otra aeronave. Para desactivar todos los índices.

Q130 · Selecciona todas las respuestas correctas Se investiga por qué el último mantenimiento visible parece incorrecto. ¿Qué datos son relevantes para comprobar la selección del registro correcto?. La contraseña del usuario que abre la pantalla. El criterio de orden por fecha y desempate. El color de fondo del dispositivo. La aeronave a la que pertenece el mantenimiento. El estado que define si un trabajo cuenta como completado.

I06 · Vuelos, horas, propuestas, aprobación y cancelación. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q131 · Selecciona una respuesta Hoy en AeroGestor se crea un vuelo válido sin informar status. ¿Qué estado le asigna FlightService?. CANCELLED. MODIFICATION_PENDING. IN_PROGRESS. COMPLETED.

Q132 · Selecciona una respuesta Hoy en AeroGestor se crea un vuelo COMPLETED de 120 minutos. ¿Qué ajuste aplica a los tres acumuladores de su aeronave?. Suma 2,00 horas a totalHours, engineHours y propellerHours. Suma 120 horas a cada uno. Solo suma 2 horas al motor. No ajusta horas hasta registrar mantenimiento.

Q133 · Selecciona una respuesta Un registro expresa duración en minutos y un acumulador expresa horas decimales. ¿A cuántas horas equivalen 45 minutos?. 4,50. 0,75. 1,45. 0,45.

Q134 · Selecciona todas las respuestas correctas Hoy en AeroGestor create recibe un vuelo válido COMPLETED con observación técnica. ¿Qué efectos forman parte del flujo?. Resolver todas las novedades previas de la aeronave. Reconciliar las horas de la aeronave. Guardar el vuelo. Aprobar una modificación que todavía no se solicitó. Marcar la novedad recién creada como resuelta.

Q135 · Selecciona una respuesta Hoy en AeroGestor un vuelo tiene iguales horas de salida y llegada. ¿Qué sucede al validarlo?. Se interpreta siempre como un vuelo de 24 horas. Se reemplaza la llegada por la hora actual. Se rechaza porque ambas horas no pueden ser iguales. Se guarda con cero minutos.

Q136 · Selecciona una respuesta Un cálculo entre horas del día obtiene -1400 minutos para una salida 23:30 y llegada 00:10 del día siguiente. ¿Qué corrección devuelve la duración de ese cruce de medianoche?. Ignorar la llegada y usar 30. Multiplicar por -60. Sumar 24 minutos. Sumar 1440 minutos y obtener 40.

Q137 · Selecciona una respuesta Hoy en AeroGestor un piloto solicita modificar un vuelo de una hora a dos horas. Antes de la aprobación, ¿qué ocurre con sus datos vigentes?. Se conservan y la propuesta queda en campos separados. Se sustituyen inmediatamente por la propuesta. Se borra el vuelo original. La aeronave recibe de inmediato una hora adicional.

Q138 · Selecciona todas las respuestas correctas Hoy en AeroGestor se registra una solicitud de modificación válida. ¿Qué acciones realiza requestModification?. Añade de inmediato la duración propuesta a las horas. Pasa el vuelo a MODIFICATION_PENDING. Notifica a los administradores mediante AlertService. Reemplaza el piloto por cualquiera enviado en la propuesta. Descarta el estado anterior y fuerza COMPLETED inmediatamente.

Q139 · Selecciona una respuesta Hoy en AeroGestor una solicitud de modificación envía un pilotId distinto al del vuelo original. ¿Qué ocurre?. Se conserva el nuevo piloto sin revisión. Se rechaza la solicitud. Se cambia únicamente la matrícula. Se crea automáticamente otro vuelo.

Q140 · Selecciona una respuesta Un sistema conserva una versión vigente y otra propuesta mientras alguien revisa un cambio. ¿Qué ventaja aporta esa separación?. Garantiza por sí sola la identidad del revisor. Hace innecesario conocer el estado de la revisión. Permite aprobar o rechazar sin perder inmediatamente el dato original. Convierte una propuesta en un historial de copias ilimitado.

Q141 · Selecciona todas las respuestas correctas Hoy en AeroGestor el piloto propone cambiar las observaciones que originaron una novedad. ¿Qué afirmaciones describen requestModification?. Reasigna automáticamente el autor técnico. Borra la novedad anterior para aceptar el texto nuevo. Ignora para ese campo la nueva observación enviada por el piloto. Protege el texto técnico original frente a ese flujo de propuesta. Conserva las observaciones originales dentro de proposedObservations.

Q142 · Selecciona una respuesta Hoy en AeroGestor se aprueba cambiar un vuelo COMPLETED de 90 a 120 minutos en la misma aeronave. ¿Qué diferencia se aplica a cada acumulador?. +1,50 horas. +2,00 horas. -0,50 horas. +0,50 horas.

Q143 · Selecciona una respuesta Hoy en AeroGestor una aprobación traslada un vuelo completado de 60 minutos en aeronave A a 90 minutos en aeronave B. ¿Cuál es el ajuste correcto?. Restar 1,00 de A y sumar 1,50 a B. Sumar 1,50 a ambas aeronaves. No tocar A y sumar 0,50 a B. Restar 1,50 de A y sumar 1,00 a B.

Q144 · Selecciona una respuesta Un registro ya contribuye 1,20 unidades a un total y su nueva versión contribuye 1,80. ¿Qué operación evita contabilizar dos veces la contribución?. Reiniciar siempre el total a cero. Aplicar la diferencia de 0,60. Restar el total completo del sistema. Sumar otra vez 1,80 sin descontar nada.

Q145 · Selecciona todas las respuestas correctas Hoy en AeroGestor se rechaza una modificación pendiente con un motivo válido. ¿Qué ocurre?. Se limpian los campos de propuesta. Se aplica la aeronave propuesta antes de rechazar. Se reemplaza la duración vigente por la solicitada. Se restaura el estado previo. Se comunica el rechazo solo a los mecánicos, sin avisar al piloto.

Q146 · Selecciona una respuesta Hoy en AeroGestor se anula por primera vez un vuelo COMPLETED de 45 minutos, con acumuladores suficientes. ¿Qué sucede con su aporte de horas?. Se mantiene porque anular solo cambia texto. Se retiran 45 horas del motor. Se retiran 0,75 horas de cada acumulador. Se suma otro aporte de 0,75 horas.

Q147 · Selecciona una respuesta Un endpoint repetido no vuelve a restar horas, pero añade otra nota y crea otro aviso. ¿Qué conclusión sobre idempotencia es rigurosa?. Es idempotente solo si usa una transacción. La palabra idempotencia solo aplica a pantallas. Es totalmente idempotente porque un campo no cambia. No es completamente idempotente: hay otros efectos repetidos.

Q148 · Selecciona todas las respuestas correctas Hoy en AeroGestor se repite la anulación de un vuelo que ya está CANCELLED. ¿Qué puede ocurrir según cancel?. Se añade otra nota de anulación a observaciones. El ajuste adicional de horas es cero. Se crea otra comunicación de anulación al piloto. Se resta otra vez toda su duración necesariamente. Se borran obligatoriamente los avisos anteriores.

Q149 · Selecciona una respuesta Hoy en AeroGestor un vuelo completado pasa a MODIFICATION_PENDING. ¿Cómo se interpreta su aporte vigente al reconciliar horas posteriormente?. Según el estado que tenía antes de solicitar la modificación. Siempre como cero por estar pendiente. Según la duración propuesta aunque no esté aprobada. Como dos vuelos independientes.

Q150 · Selecciona una respuesta Hoy en AeroGestor se intenta pedir otra modificación sobre un vuelo ya MODIFICATION_PENDING. ¿Qué sucede?. Se aprueba la primera para liberar espacio. Se rechaza la nueva solicitud. Se fusionan automáticamente las dos propuestas. Se agrega una segunda propuesta en otra tabla.

Q151 · Selecciona una respuesta Se divide 1 minuto por 60 usando dos decimales y redondeo HALF_UP, como en el aporte de horas. ¿Qué resultado se obtiene?. 1,00 horas. 0,60 horas. 0,02 horas. 0,01 horas por truncamiento obligatorio.

Q152 · Selecciona todas las respuestas correctas Hoy en AeroGestor se comparan dos versiones del mismo vuelo para ajustar horas. ¿Qué datos utiliza la reconciliación?. La aeronave anterior y la actual. El estado anterior y el actual que determinan el aporte. El color de la tarjeta del piloto. La duración anterior y la actual. La cantidad de avisos leídos por el usuario.

Q153 · Selecciona una respuesta Hoy en AeroGestor un ajuste dejaría engineHours en negativo. ¿Qué hace applyAircraftHoursAdjustment?. Permite el negativo si el vuelo está anulado. Lo convierte silenciosamente en cero. Solo comprueba totalHours y omite el motor. Rechaza la operación con IllegalStateException.

Q154 · Selecciona una respuesta En Java se comparan los valores BigDecimal 10,0 y 10,00 mediante compareTo. ¿Qué significa el resultado cero?. Que sus valores numéricos son equivalentes. Que las referencias apuntan al mismo objeto. Que ambos números son negativos. Que ambos objetos tienen necesariamente la misma escala.

Q155 · Selecciona todas las respuestas correctas Hoy en AeroGestor el cliente envía horas de salida y llegada para crear un vuelo. ¿Qué decisiones mantiene FlightService del lado del servidor?. Usar el reloj visual del iPhone como duración persistida. Rechazar que salida y llegada sean iguales. Calcular durationMinutes a partir de las horas. Aceptar una duración arbitraria enviada en lugar del cálculo. Rechazar que haya cero aterrizajes.

Q156 · Selecciona una respuesta Hoy en AeroGestor se consultan vuelos con aircraftId y pilotId, sin estado. ¿Qué filtro aplica findFilteredFlights?. Interseca obligatoriamente aeronave y piloto. Prioriza la aeronave y no combina ese filtro con el piloto. Ignora ambos filtros. Prioriza el piloto y omite la aeronave.

Q157 · Selecciona una respuesta Hoy en AeroGestor se comparan create y update de vuelos. ¿Qué diferencia real de validación personal aparece en su implementación?. create permite cualquier rol y update exige ADMIN. update valida CMA y create no lo hace. create invoca la cualificación del piloto y update no vuelve a invocarla. Ambos autentican una sesión HTTP con JWT.

Q158 · Selecciona una respuesta Para producción, dos solicitudes leen el mismo saldo de horas y calculan ajustes simultáneos. ¿Qué riesgo debe analizarse además de la fórmula del delta?. Que BigDecimal transforme automáticamente horas en fechas. Que el nombre de la aeronave quede en mayúsculas. Que el DTO genere un segundo motor físico. Que una escritura sobrescriba un ajuste concurrente.

Q159 · Selecciona todas las respuestas correctas Hoy en AeroGestor se aprueba una modificación pendiente de un vuelo completado. ¿Qué acciones aparecen en approveModification?. Copiar la propuesta al vuelo vigente. Mantener siempre la duración anterior aunque se apruebe otra. Conservar los campos de propuesta como activos después de aplicarla. Restaurar el estado que corresponde. Crear una nueva aeronave para no mover horas.

Q160 · Selecciona una respuesta Hoy en AeroGestor cancel cambia a CANCELLED un vuelo que tenía una propuesta pendiente. ¿Qué debe afirmarse sobre los campos proposed_* al leer solo ese método?. No hay en cancel una limpieza explícita de esos campos. Se aprueba la propuesta antes de anular. cancel siempre llama clearModificationProposal. Se mueven automáticamente a una tabla histórica.

Q161 · Selecciona una respuesta Un método transaccional de Spring propaga una IllegalStateException tras detectar un saldo inválido. Con la configuración predeterminada, ¿qué comportamiento se espera?. Confirmar únicamente la primera escritura. Revertir la transacción al tratarse de una excepción no comprobada. Convertir el error en una lectura exitosa. Confirmar todo porque la excepción tiene un mensaje.

Q162 · Selecciona todas las respuestas correctas Hoy en AeroGestor se crea un vuelo y se valida al piloto mediante AeronauticalQualificationService. ¿Qué exige esa validación?. Rol PILOT. Un token JWT emitido por login. CMA vigente como condición bloqueante de ese método. Número de licencia con formato comprobado contra un padrón externo. Estado ACTIVE.

Q163 · Selecciona una respuesta Hoy en AeroGestor se edita directamente un vuelo existente mediante update y se cambia observations. ¿Qué diferencia debe reconocerse respecto de create?. update elimina automáticamente la novedad de origen. update crea siempre dos novedades. update no llama createFromFlight para generar una novedad nueva. update convierte la observación en una alerta push.

Q164 · Selecciona una respuesta Un acumulador técnico combina una base histórica y aportes de vuelos registrados. ¿Por qué sería peligroso reemplazarlo directamente por la suma de los vuelos visibles?. Porque todos los vuelos aportan siempre cero. Porque una lista visible equivale necesariamente al historial completo. Porque sumar valores siempre produce un error de tipos. Porque podría perder la base histórica no representada en esa lista.

Q165 · Selecciona todas las respuestas correctas Hoy en AeroGestor se aprueba una propuesta cuyo statusBeforeModification era CANCELLED. ¿Qué consecuencias se derivan de los métodos de aprobación y aporte?. Los campos de propuesta se limpian. La aeronave recibe horas solo por existir una aprobación. La aprobación obliga siempre a restaurar COMPLETED. El estado restaurado es CANCELLED. La versión restaurada sigue aportando cero horas.

I07 · Mantenimientos y disponibilidad. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q166 · Selecciona una respuesta Hoy en AeroGestor se registra un mantenimiento con returnToService=false. ¿Qué disponibilidad asigna applyRequestToMaintenance a la aeronave?. INACTIVE. ACTIVE. IN_MAINTENANCE en todos los casos. CANCELLED.

Q167 · Selecciona una respuesta Un registro de mantenimiento está COMPLETED y la aeronave continúa no operativa. ¿Qué idea permite modelar esa situación sin contradicción?. Un registro completado obliga siempre a que el equipo esté disponible. El estado del trabajo y la disponibilidad del equipo son dimensiones distintas. El mantenimiento no puede tener estado propio. El estado del equipo debe borrarse al cerrar el trabajo.

Q168 · Selecciona todas las respuestas correctas Hoy en AeroGestor applyRequestToMaintenance aplica un registro válido. ¿Qué campos de la aeronave modifica directamente?. totalHours sumándole otra vez todos los vuelos. propellerHours igualándolo obligatoriamente al motor. status copiado del mantenimiento sin usar returnToService. engineHours. nextMaintenanceHours.

Q169 · Selecciona una respuesta Hoy en AeroGestor se ejecuta start sobre un mantenimiento existente. ¿Qué par de estados asigna?. Mantenimiento REGISTERED y aeronave ACTIVE. Mantenimiento CANCELLED y aeronave INACTIVE. Mantenimiento IN_PROGRESS y aeronave IN_MAINTENANCE. Mantenimiento COMPLETED y aeronave ACTIVE.

Q170 · Selecciona una respuesta Un mantenimiento conserva las horas de motor observadas al realizarlo, mientras la aeronave sigue acumulando horas después. ¿Qué representa el valor guardado en el mantenimiento?. Una referencia que debe cambiar con cada vuelo futuro. La duración de la sesión del usuario. La suma de horas de todos los mecánicos. Una instantánea histórica del momento de la intervención.

Q171 · Selecciona todas las respuestas correctas Hoy en AeroGestor se completa un mantenimiento que no estaba COMPLETED. ¿Qué acciones aparecen en complete?. Borrar la aeronave si se superó el umbral anterior. Resolver automáticamente todas las novedades técnicas. Evaluar el aviso de mantenimiento finalizado. Marcar el mantenimiento COMPLETED. Poner la aeronave en ACTIVE si existe.

Q172 · Selecciona una respuesta Hoy en AeroGestor se envía una fecha futura para registrar mantenimiento. ¿Qué ocurre en validateRequest?. Se rechaza la fecha futura. Se acepta si las horas son positivas. Se mueve automáticamente al día anterior. Se elimina la fecha antes de persistir.

Q173 · Selecciona una respuesta Una regla define que el próximo umbral debe ser estrictamente mayor que el valor actual. Si ambos son 100, ¿qué debe decidir la validación?. Aceptar solo si el texto tiene otra escala decimal. Rechazar porque igualdad no significa posterioridad. Reemplazar ambos valores por cero. Aceptar porque son numéricamente iguales.

Q174 · Selecciona todas las respuestas correctas Hoy en AeroGestor se valida un registro de mantenimiento. ¿Qué condiciones forman parte de validateRequest?. El tipo de procedimiento puede omitirse siempre. El próximo umbral debe superar las horas actuales informadas. Las horas de motor pueden ser negativas si hay licencia. Cualquier fecha del día actual se rechaza aunque ya haya pasado. La descripción debe contener texto.

Q175 · Selecciona una respuesta Hoy en AeroGestor se ejecuta cancel sobre un mantenimiento. ¿Qué asignación hace a su aeronave asociada?. INACTIVE sin excepción. El estado del usuario mecánico. ACTIVE, si la aeronave existe. MODIFICATION_PENDING.

Q176 · Selecciona una respuesta Se evalúa un vencimiento por horas con motor actual 92 y umbral 100. ¿Qué magnitud describe correctamente lo que falta?. 92 días. 192 horas. 100 minutos. 8 horas.

Q177 · Selecciona todas las respuestas correctas Hoy en AeroGestor create valida la cualificación del mecánico. ¿Qué condiciones comprueba esa validación personal?. Que haya leído todas las alertas. Licencia no vacía. Rol MECHANIC. Cualquier rol mientras conozca una matrícula. Estado ACTIVE.

Q178 · Selecciona una respuesta Hoy en AeroGestor se consultan mantenimientos con aircraftId y mechanicId, sin estado. ¿Qué resultado busca el service?. Los trabajos de la aeronave, sin aplicar además el filtro de mecánico. Solo trabajos del mecánico aunque pertenezcan a otra aeronave. La intersección obligatoria de ambos filtros. Solo el último trabajo de la aeronave.

Q179 · Selecciona una respuesta Hoy en AeroGestor un request válido informa status como in-progress y returnToService=true. ¿Qué asigna applyRequestToMaintenance después de normalizar ese texto?. Mantenimiento COMPLETED y aeronave INACTIVE. Mantenimiento IN_PROGRESS y aeronave ACTIVE. Mantenimiento CANCELLED y aeronave ACTIVE. Mantenimiento IN_PROGRESS y aeronave IN_MAINTENANCE obligatoriamente.

Q180 · Selecciona una respuesta Una operación guarda un mantenimiento y actualiza su aeronave en la misma transacción. Una excepción no comprobada se propaga antes de confirmar. ¿Qué propiedad busca proteger esa transacción?. Que la interfaz nunca tarde en cargar. Que nunca haya solicitudes concurrentes. Que ambas mutaciones se confirmen o reviertan como unidad. Que ningún usuario pueda llamar al endpoint.

Q181 · Selecciona todas las respuestas correctas Hoy en AeroGestor update vuelve a aplicar un request de mantenimiento. ¿Qué efectos deben considerarse al estudiar su impacto?. Puede reemplazar su próximo umbral. Puede reemplazar las horas de motor de la aeronave seleccionada. Limpia automáticamente todas las propuestas de vuelo. Puede cambiar su disponibilidad por returnToService. Solo cambia el texto del mantenimiento, sin tocar la aeronave.

Q182 · Selecciona una respuesta Hoy en AeroGestor la aeronave tiene 100 horas de motor y se registra un mantenimiento válido con 90 y umbral 120. ¿Qué permite la validación actual?. Convierte 90 en 100 sin informar. Resta automáticamente 10 horas a todos los vuelos. Rechaza siempre cualquier valor inferior al acumulador previo. Puede reemplazar engineHours por 90: no compara monotonía contra el valor anterior.

Q183 · Selecciona una respuesta Un requerimiento pide alertar por una fecha de próximo vencimiento además de por horas. ¿Qué cambio conceptual hace falta?. Modelar una regla temporal adicional con su propio dato y criterio. Usar únicamente el estado ACTIVE. Interpretar cualquier número de horas como días. Renombrar un campo de horas como fecha sin cambiar su tipo.

Q184 · Selecciona todas las respuestas correctas Hoy en AeroGestor, ¿qué requests deben rechazarse por las reglas numéricas de mantenimiento?. Descripción válida y umbral superior a las horas. engineHours negativo. nextDueHours igual a engineHours. engineHours cero y nextDueHours positivo mayor. nextDueHours menor que engineHours.

Q185 · Selecciona una respuesta Hoy en AeroGestor se llama complete sobre un mantenimiento cuyo estado anterior era CANCELLED. ¿Qué límite revela el código actual?. La llamada no puede llegar al service. No hay una guarda de transición que impida pasarlo a COMPLETED. La transición queda prohibida por un enum exhaustivo dentro del método. El método autentica al revisor antes de cualquier cambio.

Q186 · Selecciona una respuesta Para producción, cliente y servidor usan zonas horarias diferentes al validar una fecha de intervención. ¿Qué decisión debe acordarse en el contrato?. Que cada capa interprete la fecha de forma distinta. Que el cliente quite la fecha de todas las operaciones. La referencia temporal y el significado del dato intercambiado. Que una transacción convierta automáticamente cualquier fecha.

Q187 · Selecciona todas las respuestas correctas Hoy en AeroGestor notifyMaintenanceCompletedIfNeeded decide si emite el aviso de finalización. ¿Qué casos hacen que retorne sin emitirlo?. El procedimiento tiene una descripción válida. El estado actual no es COMPLETED. El estado anterior ya era COMPLETED. La aeronave posee una matrícula. El estado anterior era IN_PROGRESS y el actual pasó a COMPLETED.

Q188 · Selecciona una respuesta Hoy en AeroGestor se edita un mantenimiento y se selecciona otra aeronave. ¿Qué riesgo de impacto conviene revisar en applyRequestToMaintenance?. Que únicamente cambie una etiqueta de la pantalla. Que se rechace siempre cualquier reasignación por una guarda visible. Que se cree una segunda licencia para el mecánico. Que la nueva aeronave reciba horas, umbral y estado del request.

Q189 · Selecciona una respuesta Para producción, cancelar un trabajo no debería liberar una aeronave si otro mantenimiento sigue en curso. ¿Qué regla adicional expresa mejor esa necesidad?. Evaluar las demás condiciones de indisponibilidad antes de reactivarla. Suponer que nunca habrá dos registros relacionados. Borrar el resto de los trabajos al cancelar uno. Reactivar siempre y confiar en el color de la pantalla.

Q190 · Selecciona todas las respuestas correctas Hoy en AeroGestor se explica el alcance real del ciclo de mantenimiento. ¿Qué afirmaciones son correctas?. El historial por aeronave se limita siempre al mecánico que consulta. Completar un mantenimiento resuelve por sí solo todas las novedades. El registro técnico puede cambiar las horas de motor actuales. El historial por aeronave puede incluir a varios mecánicos. El service no asigna horas de hélice al aplicar el request.

I08 · Alertas internas, dashboards y estadísticas. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q191 · Selecciona una respuesta Hoy en AeroGestor se genera un aviso para un rol con varios usuarios activos. ¿Cómo lo persiste createForRole?. Una fila sin destinatario que se asignará en el futuro. Una fila independiente por destinatario activo. Solo una fila para el primer usuario creado. Una única fila compartida que todos deben descartar juntos.

Q192 · Selecciona una respuesta Hoy en AeroGestor faltan exactamente 10 horas de motor para el próximo mantenimiento y no existe el aviso. ¿Qué severidad genera la regla?. INFO porque todavía no venció. No genera aviso hasta quedar en cero. WARNING. CRITICAL porque cualquier proximidad equivale a vencimiento.

Q193 · Selecciona una respuesta Una alerta preventiva ya existe y luego la condición empeora a crítica. ¿Qué error puede introducir una deduplicación basada únicamente en que existe el título?. Convertir automáticamente el aviso en push. Calcular correctamente cualquier promedio. Crear una relación entre fechas y contraseñas. Impedir la escalada de gravedad que sí debería comunicarse.

Q194 · Selecciona todas las respuestas correctas Hoy en AeroGestor se usan resolve y reopen sobre una alerta existente. ¿Qué afirmaciones son correctas?. Estas operaciones eliminan la alerta después de actualizar su estado. resolve anula el vuelo que originó el evento. reopen deja resolved=false y resolvedAt=null. reopen reactiva automáticamente la aeronave. resolve marca resolved=true y registra resolvedAt.

Q195 · Selecciona una respuesta Hoy en AeroGestor engineHours es igual al umbral de próximo mantenimiento y no existe el aviso crítico correspondiente. ¿Qué gravedad se genera?. CRITICAL. WARNING porque la diferencia no es negativa. Ninguna porque la igualdad se omite. INFO.

Q196 · Selecciona una respuesta Un backend guarda un aviso en la base y la app lo obtiene al consultar. ¿Qué afirmación sobre entrega remota es correcta?. Una consulta HTTP equivale a una conexión push permanente. Persistir un aviso no implementa por sí solo entrega push. Toda tabla de avisos registra automáticamente dispositivos APNs. Guardar una fila garantiza una notificación del sistema con la app cerrada.

Q197 · Selecciona todas las respuestas correctas Hoy en AeroGestor se consulta findPendingForRecipient con un usuario y el rol indicado ADMIN. ¿Qué efectos puede tener esa consulta además de leer filas?. Ejecutar el barrido de avisos de mantenimiento. Evaluar el vencimiento CMA del usuario encontrado. Instalar un certificado de firma en el teléfono. Crear o resolver alertas según las reglas evaluadas. Eliminar todos los vuelos anulados.

Q198 · Selecciona una respuesta Hoy en AeroGestor ya existió un aviso CRITICAL de cierto umbral de mantenimiento y fue descartado. ¿Qué hace la deduplicación al volver a evaluar exactamente ese umbral crítico?. Cambia el umbral para crear otro título. Siempre crea una copia porque resolved es true. Puede impedir recrearlo porque la búsqueda no exige que siga pendiente. Borra el historial para volver a emitirlo.

Q199 · Selecciona una respuesta Hay 10 vuelos distribuidos en dos meses con actividad, dentro de un rango de seis meses. Si el promedio usa solo meses con vuelos, ¿cuál es el resultado?. 1,67 vuelos por cada mes del rango. 10 vuelos por cada uno de los seis meses. 0 porque existen meses vacíos. 5 vuelos por mes con actividad.

Q200 · Selecciona todas las respuestas correctas Hoy en AeroGestor el dashboard calcula mantenimientos vencidos. ¿Qué afirmaciones describen countOverdueMaintenanceItems?. Cuenta cualquier IN_MAINTENANCE aunque no tenga umbral. Excluye registros sin motor o sin próximo umbral. Cuenta una aeronave si motor supera el umbral. Cuenta una aeronave si motor es igual al umbral. Cuenta únicamente el número de filas de mantenimiento.

Q201 · Selecciona una respuesta Hoy en AeroGestor el dashboard busca la aeronave más utilizada mediante findMostPopularAircraft. ¿Qué medida usa ese método?. La mayor cantidad de registros de vuelo asociados, sin filtrar estado allí. La mayor cantidad de mecánicos asignados. La mayor suma de horas de motor. La mayor cantidad de novedades críticas.

Q202 · Selecciona una respuesta Hoy en AeroGestor hay una aeronave con -2 horas restantes al umbral y otra con 3. ¿Cuál elige findNextMaintenanceAircraft al tomar el mínimo?. Ninguna porque exige una fecha de calendario. La de -2 porque su diferencia es menor. La que tenga la matrícula alfabéticamente primera. La de 3 porque siempre omite vencidas.

Q203 · Selecciona una respuesta Se agrupan vuelos mensualmente a lo largo de varios años. ¿Por qué conviene usar una clave que incluya año y mes?. Para que el orden de llegada de las filas determine el año. Para evitar que pueda haber meses sin actividad. Para no mezclar enero de años diferentes en el mismo grupo. Para transformar todos los meses en enero.

Q204 · Selecciona todas las respuestas correctas Hoy en AeroGestor se evalúan avisos de CMA para un usuario activo. ¿Qué reglas aparecen en notifyCmaExpirationIfNeeded?. Una fecha anterior a hoy se considera vencida. Al vencer, puede resolver advertencias previas todavía abiertas. Una fecha posterior a un mes desde hoy genera igualmente un aviso preventivo. La fecha de hoy se considera ya vencida por isBefore. Tener CMA nulo genera siempre un aviso CRITICAL.

Q205 · Selecciona una respuesta Hoy en AeroGestor una consulta estadística no devuelve vuelos para el filtro elegido. ¿Qué devuelve el cálculo del promedio mensual?. Una división por cero obligatoria. Un vuelo ficticio para crear el mes. El promedio histórico de otro piloto. Cero con dos decimales.

Q206 · Selecciona una respuesta Dos usuarios reciben el mismo evento en filas distintas. Uno descarta su aviso. ¿Qué propiedad del modelo evita que el segundo pierda el suyo?. Que el estado de lectura o descarte pertenezca a cada entrega individual. Que ambos compartan obligatoriamente resolved. Que la matrícula se use como contraseña. Que el primer usuario borre el evento global.

Q207 · Selecciona todas las respuestas correctas Hoy en AeroGestor se evalúa notifyAircraftAvailabilityChange con estados válidos. ¿Qué afirmaciones son correctas?. INACTIVE a IN_MAINTENANCE siempre genera aviso de nueva salida de servicio. El aviso se dirige a los roles previstos mediante createForRole. Cualquier guardado de estado genera un aviso sin comparar el anterior. ACTIVE a INACTIVE puede generar WARNING. INACTIVE a ACTIVE puede generar INFO.

Q208 · Selecciona una respuesta Hoy en AeroGestor el backend está apagado durante la hora programada de evaluación de avisos. ¿Qué puede afirmarse del NotificationScheduler?. El cron queda convertido en una notificación push pendiente del sistema. Ese proceso no puede ejecutar su tarea mientras el backend esté detenido. MySQL envía por sí solo las notificaciones del scheduler. El iPhone ejecuta automáticamente el cron del servidor.

Q209 · Selecciona una respuesta Un certificado puede pasar de próximo a vencer a vencido aunque nadie edite su fila. ¿Por qué una regla de aviso necesita reevaluación temporal?. Porque una FK mide automáticamente la gravedad. Porque todos los cambios de negocio dependen de modificar texto. Porque la condición depende también del paso del tiempo. Porque el identificador cambia diariamente.

Q210 · Selecciona todas las respuestas correctas Hoy en AeroGestor createForRole no encuentra destinatarios activos para un evento. ¿Qué afirmaciones describe el código?. Retorna null. Guarda una fila sin usuario para que la herede el primer usuario aprobado. No persiste una fila compartida para ese rol. Crea un usuario técnico para recibir todos los eventos. Los usuarios aprobados después reciben necesariamente ese evento pasado.

I09 · Swift, APIClient, Codable y concurrencia. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q211 · Selecciona una respuesta En AeroGestor actual, ¿qué componente transforma un JSON HTTP exitoso en el modelo Swift solicitado?. AppRootView mediante un switch. La entidad JPA del servidor. SessionManager al elegir el rol. APIClient mediante JSONDecoder.

Q212 · Selecciona una respuesta Un tipo Swift adopta Decodable. ¿Qué capacidad declara?. Poder construirse a partir de un Decoder. Poder observar cambios de interfaz. Poder representarse siempre como una tabla SQL. Poder enviarse necesariamente como JSON.

Q213 · Selecciona una respuesta En AeroGestor actual, URLSession devuelve una URLResponse que no es HTTPURLResponse. ¿Qué produce APIClient?. El cierre de la sesión. APIError.invalidResponse. Un error de validación del formulario. Una lista vacía exitosa.

Q214 · Selecciona una respuesta Supón un modelo con Decodable sintetizado: struct Dato: Decodable { let nota: String? }. El JSON es {}. ¿Qué representa nota?. Un error por toda clave ausente. El texto literal null. nil. Una cadena vacía obligatoria.

Q215 · Selecciona una respuesta En AeroGestor actual, una respuesta HTTP de error contiene un APIErrorPayload válido. ¿Cómo se expone su mensaje?. Se interpreta como un Response exitoso. Se reemplaza siempre por el nombre del endpoint. Se convierte siempre en invalidURL. APIError.serverError utiliza el mensaje del payload.

Q216 · Selecciona todas las respuestas correctas En la construcción actual de solicitudes de AeroGestor, ¿qué afirmaciones son correctas?. Se codifica el cuerpo Encodable con JSONEncoder. Se configura una transacción MySQL desde URLRequest. Se declara Accept: application/json. Se agrega un JWT automáticamente a todas las solicitudes. Se agrega Content-Type: application/json incluso cuando no hay cuerpo.

Q217 · Selecciona una respuesta En Swift, ¿qué expresa la llamada let dato = try await cargar()?. Que puede suspender la tarea y propagar un error. Que guarda automáticamente su resultado en la interfaz. Que cargar se ejecuta obligatoriamente en otro hilo. Que no puede fallar mientras la red esté disponible.

Q218 · Selecciona una respuesta AeroGestor recibe HTTP 200 pero el JSON no coincide con el Response esperado. ¿Qué error prepara APIClient?. invalidURL. decodingFailed. transportError por falta de internet. serverError con estado 200.

Q219 · Selecciona todas las respuestas correctas ¿Qué casos reconoce APIError.isCancellation en AeroGestor actual?. Un transportError que contiene URLError.cancelled. Cualquier error cuyo mensaje mencione internet. Cualquier HTTP 404. Un transportError que contiene CancellationError. Un JSON que carece de un campo.

Q220 · Selecciona una respuesta ¿Qué implica la restricción genérica Response: Decodable de una función Swift?. Que Response debe ser siempre un arreglo. Que Response puede carecer de inicialización desde datos. Que Response debe cumplir el contrato de Decodable. Que Response debe heredar de APIClient.

Q221 · Selecciona una respuesta En los servicios iOS de AeroGestor, ¿por qué conviene entregar filtros a APIClient como URLQueryItem en vez de concatenarlos ya escapados?. Para que el backend no valide los filtros. Para convertirlos en variables de entorno. Para omitir el método HTTP. Para codificarlos una sola vez mediante URLComponents.

Q222 · Selecciona una respuesta Un request de AeroGestor falla con URLError.timedOut. ¿Qué tipo de diagnóstico comunica APIError?. Que la solicitud tardó demasiado y debe revisarse la conexión. Que hubo una incompatibilidad de Decodable. Que se borró la base de datos. Que la contraseña necesariamente es incorrecta.

Q223 · Selecciona todas las respuestas correctas ¿Qué facilita el inicializador actual de APIClient que recibe baseURL y urlSession?. Inyectar URLSession elimina la comprobación de estados HTTP de APIClient. Convertir la respuesta HTTP en una entidad JPA. Sustituir el transporte por una URLSession configurada para stubs. Usar una URL distinta en un entorno de prueba. Garantizar que un mock ejecuta SQL real.

Q224 · Selecciona una respuesta Una función genérica devuelve Response y el llamador escribe let vuelos: [Vuelo] = try await cliente.request(...). ¿Qué papel cumple el tipo de la variable?. Decide el estado HTTP antes de enviar. Ayuda a inferir el tipo genérico de respuesta esperado. Elimina la necesidad de Decodable. Cambia la tabla de destino en MySQL.

Q225 · Selecciona una respuesta En AeroGestor actual, se llama a APIClient con path que empieza por '/'. ¿Qué hace makeURLRequest antes de unirlo a baseURL?. Quita todos los segmentos del path. Convierte el método a POST. Quita una barra inicial del path. Trata el path como consulta SQL.

Q226 · Selecciona todas las respuestas correctas Según APIError actual de AeroGestor, ¿qué asociaciones son correctas?. cancelled se comunica siempre como ausencia de conexión a internet. cannotConnectToHost se comunica como respuesta JSON mal formada. notConnectedToInternet informa ausencia de conexión de red. Un error SQL se clasifica siempre como URLError. cannotFindHost orienta a comprobar la disponibilidad de la API.

Q227 · Selecciona una respuesta Un cliente genérico intenta decodificar un objeto JSON desde un cuerpo vacío, aunque el estado HTTP sea exitoso. ¿Qué riesgo existe?. El cuerpo vacío se transforma necesariamente en un objeto completo. HTTP obliga a interpretar el cuerpo como SQL. El decoder inventa los campos requeridos. Puede fallar la decodificación porque falta la representación esperada.

Q228 · Selecciona una respuesta Dos loadFlights de AeroGestor terminan fuera de orden. ¿Qué evita que el resultado antiguo sustituya al nuevo?. Comparar la generación capturada con loadGeneration. El nombre del piloto. La posición del vuelo en el arreglo. El hecho de usar únicamente HTTP GET.

Q229 · Selecciona una respuesta Tras cargar vuelos con un pilotId, loadFlights() vuelve a invocarse sin argumento. ¿Qué filtro conserva el ViewModel actual?. Elimina siempre cualquier filtro anterior. Conserva activePilotId previamente establecido. Solicita solamente vuelos cancelados. Cambia al piloto con menor identificador.

Q230 · Selecciona todas las respuestas correctas En loadFlights actual, ¿qué resultados puede descartar el control de generación?. Datos de una carga anterior que termina tarde. La publicación de un resultado cuyo generation ya no coincide. Todas las respuestas de la última carga por ser asíncrona. La validación SQL de una clave foránea en el servidor. Errores de una carga anterior que termina tarde.

Q231 · Selecciona una respuesta Una función aislada con @MainActor hace await y luego usa un estado mutable. ¿Qué debe considerar el desarrollador?. Que ninguna otra tarea pudo cambiar el estado durante la suspensión. Que await obliga a perder todos los valores locales. Que otra operación puede haber modificado el estado antes de reanudarse. Que MainActor equivale a una transacción de base de datos.

Q232 · Selecciona una respuesta En ProfileViewModel actual, se cancela un guardado y más tarde llega su respuesta. ¿Por qué no debe actualizar la sesión?. Porque la sesión se transforma en un nuevo usuario. Porque todos los PUT son anulados automáticamente por HTTP. Porque JSONEncoder deja de funcionar tras cancelar. Porque cancelSubmission cambia submissionGeneration y el guard descarta la respuesta anterior.

Q233 · Selecciona una respuesta Según SessionManager actual, ¿qué ocurre con la identidad al finalizar el proceso y arrancar una instancia nueva, sin añadir persistencia?. La instancia comienza sin usuario autenticado. Se carga desde MySQL directamente en SwiftUI. Se conserva por ser @Observable. Se reconstruye de un JWT guardado automáticamente.

Q234 · Selecciona todas las respuestas correctas Sobre APIClient y SessionManager actuales, ¿qué afirmaciones son correctas?. APIClient añade automáticamente un bearer token en cada petición. SessionManager conserva una representación del usuario en memoria. La ausencia de token impide que JSONDecoder funcione. APIClient recibe el modelo de sesión como parámetro obligatorio en cada request. Cambiar isAuthenticated modifica la navegación, no autentica por sí solo cada endpoint.

Q235 · Selecciona una respuesta ¿Qué ventaja aporta guard let user = currentUser else { return } frente a usar currentUser! sin comprobar?. Convierte un dato opcional en persistente. Permite continuar con un valor no opcional solo cuando existe. Impide que fallen todas las llamadas de red. Garantiza que la cuenta tenga permiso administrativo.

Q236 · Selecciona una respuesta FlightEditViewModel construye request antes de esperar onSave. El usuario cambia un campo mientras esa espera sigue pendiente. ¿Qué representa la solicitud ya entregada?. Un enlace vivo a todos los campos actuales del formulario. La entidad JPA modificable directamente desde la View. Una instantánea de los valores con los que se construyó. Una consulta que todavía no tiene valores.

Q237 · Selecciona una respuesta La primera carga de opciones de aeronave de FlightEditViewModel falla. Sin recrear ni cambiar el ViewModel, ¿por qué una segunda llamada a loadAircraftOptionsIfNeeded puede no reintentar?. Porque el servidor invalida permanentemente al usuario. Porque GET nunca permite reintentos. Porque se borran siempre las opciones originales. Porque didLoadAircraftOptions se marca antes del await y no se reinicia en catch.

Q238 · Selecciona todas las respuestas correctas En submit actual de FlightEditViewModel, ¿qué mecanismos protegen el envío?. Un force unwrap demuestra que el piloto está autorizado. Un guard evita otro envío mientras isSaving es verdadero. Un envío invalidado publica su resultado si onSave devolvió éxito. Una transacción SQL se abre directamente desde SwiftUI. Se comprueban campos antes de llamar a onSave.

Q239 · Selecciona una respuesta ¿Para qué sirve defer { isSaving = false } en un bloque Swift apropiadamente aislado?. Ejecutar la limpieza al salir del ámbito, incluso por retorno o error. Ejecutar la limpieza antes del primer await siempre. Deshacer cualquier operación remota ya confirmada. Crear una nueva tarea sin esperar.

Q240 · Selecciona una respuesta En AeroGestor se cancela una tarea de guardado cuando la petición pudo haber llegado al servidor. ¿Qué afirmación es segura?. Una respuesta tardía demuestra que la base nunca cambió. Se puede ignorar un resultado local tardío, pero hay que verificar qué confirmó el servidor. El registro remoto se elimina necesariamente. La cancelación equivale a un rollback distribuido.

Q241 · Selecciona todas las respuestas correctas ¿Qué distingue la cancelación de la protección por generación en los formularios actuales de AeroGestor?. Ambos mecanismos garantizan que MySQL revierta una escritura. Una respuesta vieja debe ignorarse aunque llegue después de un envío nuevo. El número de generación sustituye la autenticación del usuario. Task.isCancelled consulta si la tarea fue cancelada. Una generación invalida resultados que ya no pertenecen al envío vigente.

Q242 · Selecciona una respuesta Un protocolo Swift exige una operación de carga. ¿Qué permite esa abstracción para probar un consumidor?. Garantizar que la implementación falsa consulte producción. Omitir cualquier requisito de tipo del compilador. Intercambiar implementaciones que satisfagan el mismo contrato. Transformar todos los errores en nil automáticamente.

Q243 · Selecciona una respuesta Durante un guardado de perfil, la sesión cambia a otro usuario. La respuesta antigua llega correctamente. ¿Qué hace updateCurrentUser actual ante un id diferente?. Vuelve a abrir la pantalla de acceso siempre. Sobrescribe al nuevo usuario con el anterior. Crea una segunda SessionManager. No reemplaza la identidad que tiene otro id.

Q244 · Selecciona todas las respuestas correctas Observando el orden actual de APIClient.request, ¿qué afirmaciones son correctas?. Un cuerpo Encodable hace innecesario validar la URL. Toda falla al codificar el cuerpo se envuelve necesariamente como transportError. La respuesta se decodifica al tipo de éxito antes de comprobar el estado HTTP. La construcción del URLRequest ocurre antes de esperar URLSession. Los errores de URLSession se envuelven como transportError.

Q245 · Selecciona todas las respuestas correctas En un diseño Swift con async throws y errores tipados, ¿qué prácticas permiten manejar fallos con precisión?. Modelar casos relevantes con un enum que conforme a Error. Usar el mismo mensaje para cualquier condición sin inspeccionar su tipo. Capturar o propagar los errores que puedan lanzarse. Suponer que await convierte toda falla en un valor por defecto. Distinguir la cancelación de un fallo que debe mostrarse al usuario.

I10 · SwiftUI, Observation, navegación y formularios. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q246 · Selecciona una respuesta En AeroGestor actual, ¿dónde se conserva la instancia de SessionManager que se inyecta al árbol principal de vistas?. Como estado de AppRootView y luego mediante environment. En una entidad de Hibernate dentro de SwiftUI. En el cuerpo JSON de todas las respuestas. En cada fila de cada lista por separado.

Q247 · Selecciona una respuesta En SwiftUI, ¿qué responsabilidad cumple un estado gestionado con State?. Validar automáticamente las respuestas HTTP. Mantener un valor gestionado por SwiftUI del que puede depender la vista. Hacer permanente cualquier valor entre reinstalaciones. Ser la única forma de ejecutar una consulta SQL.

Q248 · Selecciona una respuesta La sesión de AeroGestor ejecuta logout(). ¿Qué reacción provoca la condición de AppRootView?. La raíz obliga a reiniciar el dispositivo. La raíz convierte al usuario en administrador autenticado. La raíz vuelve a presentar LoginView. La raíz borra todas las tablas del servidor.

Q249 · Selecciona todas las respuestas correctas ¿Qué responsabilidades están visibles en FlightEditView actual?. Presentar los mensajes de validación del ViewModel. Vincular los campos de entrada con propiedades del ViewModel. Normalizar por cuenta propia los campos sin delegarlo al ViewModel. Ejecutar directamente los repositories Java. Aplicar restricciones de clave foránea sin consultar al servidor.

Q250 · Selecciona una respuesta ¿Qué permite Environment al compartir un objeto observable en SwiftUI?. Convertir cualquier dato del objeto en una columna SQL. Transmitir automáticamente un token al servidor. Evitar toda dependencia entre componentes. Acceder desde vistas descendientes al objeto colocado en su entorno.

Q251 · Selecciona una respuesta AeroGestor reutiliza FlightEditView en creación, edición administrativa y solicitud de modificación. ¿Cómo diferencia esas experiencias?. Mediante FlightEditMode y el callback onSave recibido. Mediante una llamada directa de la View a Hibernate. Mediante el color del icono solamente. Mediante tres bases MySQL independientes.

Q252 · Selecciona todas las respuestas correctas Cuando desaparece FlightEditView actual, ¿qué acciones contribuyen a evitar resultados locales tardíos?. Se transforma el último error en un éxito. Se solicita cancelar saveTask. Se espera a que saveTask termine con éxito antes de permitir que desaparezca la View. Se elimina el registro recién creado de MySQL. Se invoca cancelSubmission en el ViewModel.

Q253 · Selecciona una respuesta Un subcomponente SwiftUI debe editar un valor cuya fuente de verdad está en su padre. ¿Qué representa un Binding?. Un bloqueo global que impide toda concurrencia. Una conexión de lectura y escritura con esa fuente de verdad. Una relación de clave foránea en memoria. Una segunda copia independiente que nunca vuelve al padre.

Q254 · Selecciona una respuesta En FlightEditViewModel actual, se introduce sa1co! como origen. ¿Qué valor queda tras la normalización?. sa1co! sin cambios. Una URL de aeropuerto. SACO. SA1C.

Q255 · Selecciona todas las respuestas correctas En el formulario actual, ¿qué afirmaciones sobre observaciones y severidad son correctas?. Se limita la longitud de las observaciones en el ViewModel. Las observaciones vacías tras recortar espacios se envían como nil. Cambiar la severidad actualiza directamente el estado de MySQL. Solo pilotCreate con observaciones no vacías incluye discrepancySeverity en ese request. Toda edición envía siempre una severidad nueva.

Q256 · Selecciona una respuesta Mientras FlightEditViewModel no tiene una lista de opciones cargada, pero conoce la aeronave original, ¿qué ofrece availableAircraftOptions?. Siempre una lista vacía, aunque exista selección. Una aeronave elegida aleatoriamente. Un borrado de la selección original. Una opción de respaldo con esa aeronave original.

Q257 · Selecciona una respuesta En una tarea asíncrona de interfaz que debe terminar al cancelarse, ¿qué expresa while !Task.isCancelled?. Una comprobación cooperativa para dejar de repetir el trabajo. Una garantía de que la red nunca se cortará. Un rollback automático de todos los efectos anteriores. La creación de un token de autenticación.

Q258 · Selecciona todas las respuestas correctas ¿Qué situaciones refrescan el badge de notificaciones en la View actual de AeroGestor?. El bucle de consulta sigue ejecutándose aunque su Task haya sido cancelada. Cualquier cambio en MySQL aunque el proceso iOS esté cerrado. El cierre de la bandeja presentada como sheet. La llegada de una notificación APNs implementada en ese componente. El regreso de la escena al estado activo.

Q259 · Selecciona una respuesta El badge actual ya indica avisos pendientes y su siguiente consulta falla. ¿Qué hace NotificationBadgeViewModel?. Cierra la sesión por seguridad. Mantiene el último indicador conocido. Resuelve los avisos en el servidor. Oculta inmediatamente el indicador.

Q260 · Selecciona una respuesta En una interfaz optimista, se retira un elemento antes de confirmar la petición. ¿Qué estrategia permite recuperarlo si la petición falla?. Convertir el error en un mensaje de éxito. Eliminar también su copia de respaldo antes de esperar. Conservar el estado anterior y restaurarlo en la rama de error. Suponer que toda petición enviada tendrá éxito.

Q261 · Selecciona todas las respuestas correctas Después de guardar un perfil con éxito, ¿qué defensas locales existen actualmente antes de reflejarlo en la sesión?. El ViewModel comprueba la generación de la operación. El ViewModel verifica la cancelación antes de actualizar la sesión. El servidor vuelve a autenticarse mediante el color de la pestaña. El cliente obliga a que todos los roles se conviertan en admin. SessionManager solo reemplaza datos de la identidad cuyo id coincide.

Q262 · Selecciona una respuesta En FlightAnalyticsView actual, ¿de dónde obtiene el gráfico los vuelos que agrupa?. De un endpoint invocado por cada barra. De los textos visibles de las celdas. De una consulta SQL ejecutada dentro de Chart. Del arreglo flights recibido y procesado por FlightAnalyticsSnapshot.

Q263 · Selecciona una respuesta El dashboard del mecánico no tiene resumen cargado y la carga falla. ¿Por qué una tarjeta puede seguir mostrando 0 sin un mensaje de error específico?. El ViewModel actual conserva su fallback y esa pantalla no publica errores de carga. MySQL confirmó necesariamente un cero real. Una propiedad @Observable convierte todo fallo en cero. El endpoint responde siempre sin cuerpo.

Q264 · Selecciona todas las respuestas correctas ¿Qué medidas actuales ayudan a impedir que el doble toque de Guardar lance dos envíos del formulario de vuelo?. El servidor interpreta automáticamente dos POST como uno por ser HTTP. submit comprueba !isSaving antes de enviar. El botón sigue habilitado durante isSaving porque solo saveTask controla la interacción. La View comprueba que saveTask sea nil antes de crear otra tarea. La etiqueta del botón constituye una exclusión mutua distribuida.

Q265 · Selecciona una respuesta Si una cifra de una pantalla puede derivarse siempre de la misma colección de datos, ¿qué ventaja tiene calcularla en lugar de mantener otra copia mutable?. Convierte el cálculo en una consulta remota. Evita que dos representaciones locales se desincronicen por actualizaciones parciales. Hace innecesarias las pruebas del cálculo. Impide que el servidor tenga errores.

Q266 · Selecciona una respuesta Se descarta una notificación en AeroGestor y el servidor rechaza la operación. ¿Qué comportamiento programa NotificationViewModel.dismiss?. Borra todas las notificaciones permanentemente. Confirma el descarte aunque falle. Restaura el arreglo previo y muestra el mensaje del error. Vuelve a ejecutar el alta del usuario.

Q267 · Selecciona todas las respuestas correctas Según LoginViewModel actual, ¿qué decisiones se toman antes o después de esperar la respuesta de acceso?. Se consulta Task.isCancelled antes de publicar la sesión exitosa. Se omite el servicio si el usuario eligió una pestaña. Se conserva el texto original de password al llamar al servicio. Se recortan espacios del email antes de enviarlo. Se cifra la contraseña dentro de la ViewModel antes de transmitirla.

Q268 · Selecciona una respuesta Un formulario de vuelo supera las comprobaciones locales de AeroGestor. ¿Qué conclusión sigue siendo correcta?. El formulario puede escribir directamente en una entidad JPA. Toda regla del backend quedó demostrada por la UI. La base acepta necesariamente cualquier estado enviado. El servidor debe seguir aplicando sus reglas y puede rechazar la operación.

Q269 · Selecciona una respuesta En FlightEditView actual, submit devuelve false. ¿Qué sucede con la presentación de éxito?. No activa didSaveSuccessfully; el formulario puede mostrar su validación o error. La View reescribe la respuesta para forzar true. Se activa éxito si el botón tenía color verde. Se muestra éxito porque la tarea llegó a terminar.

Q270 · Selecciona todas las respuestas correctas En el diseño de un formulario reactivo, ¿qué prácticas reducen incoherencias de estado?. Interpretar un spinner como prueba de una transacción confirmada. Guardar copias independientes del mismo dato en cada componente sin sincronización. Derivar estados de presentación cuando dependen de datos existentes. Mantener una fuente de verdad para cada dato editable. Conectar controles editables a esa fuente mediante bindings apropiados.

I11 · Testing, debugging, regresiones y defensa técnica. Responde sin reloj. Las opciones cambian de orden. Revisa la explicación y di en voz alta la frase de defensa.

Q271 · Selecciona una respuesta Al inspeccionar la versión actual de AeroGestor aparecen pruebas de ViewModels iOS. ¿Qué afirmación está respaldada por esa evidencia?. Ya no es necesario revisar contratos HTTP. Existe código de pruebas iOS para comportamientos de presentación. El código de pruebas garantiza que MySQL está disponible. Ya quedó probada toda la aplicación en un iPhone real.

Q272 · Selecciona una respuesta ¿Qué distingue una prueba con transporte simulado de una prueba que atraviesa el servidor real?. La simulada siempre tarda más por usar HTTP. La simulada necesita credenciales reales para cada caso. La simulada controla respuestas de la dependencia y no demuestra su implementación real. La simulada prueba automáticamente migraciones de producción.

Q273 · Selecciona una respuesta ¿Cómo ayuda TestHTTPClient actual a evitar que dos pruebas compartan accidentalmente el mismo conjunto de respuestas?. Enviando ambas a la misma base pública. Borrando todos los tests previos. Seleccionando aleatoriamente el primer servidor disponible. Creando un host identificador propio y registrando su handler.

Q274 · Selecciona todas las respuestas correctas En los tests actuales del guardado de perfil, ¿qué propiedades del contrato cliente se pueden comprobar con el request capturado?. El diseño final de la pantalla en hardware físico. La durabilidad del commit real de MySQL. El método HTTP y el path construidos. Los campos JSON enviados. La cabecera Content-Type demuestra que el servidor aceptó la estructura del JSON.

Q275 · Selecciona una respuesta Después de corregir un bug reproducible, ¿para qué sirve añadir un test de regresión del caso?. Para detectar si el mismo comportamiento incorrecto reaparece. Para reemplazar todas las pruebas manuales. Para demostrar que nunca habrá otros bugs. Para evitar revisar la causa original.

Q276 · Selecciona una respuesta ¿Qué evidencia del test de doble guardado de perfil respalda que se bloquea el segundo envío local?. Que el servidor recibió necesariamente dos transacciones. Que requestCount permanece en uno durante el envío pendiente. Que el botón cambió de texto. Que aparece un spinner en una captura.

Q277 · Selecciona todas las respuestas correctas ¿Qué escenarios cubren las pruebas actuales del perfil ante fallos de red o contrato?. El estado isSaving debe quedar liberado al terminar el fallo manejado. Un error HTTP con mensaje del servidor no debe sustituir el perfil anterior. Todo error debe cerrar obligatoriamente la sesión. Un JSON mal formado mantiene los datos previos de sesión. Un cuerpo 200 mal formado debe convertirse en éxito.

Q278 · Selecciona una respuesta ¿Por qué los tests asíncronos actuales usan continuaciones para mantener una respuesta pendiente?. Para fabricar una demora de producción permanente. Para evitar ejecutar los métodos que se prueban. Para controlar cuándo termina la operación y ejercitar un orden concreto. Para que el caso siempre dependa de la velocidad de internet.

Q279 · Selecciona una respuesta En una prueba, primero se prepara el estado, después se ejecuta una acción y finalmente se comparan resultados. ¿Qué aporta esa separación?. Evita que existan dependencias de prueba. Sustituye las aserciones por comentarios. Garantiza que el sistema completo está libre de fallos. Hace visible qué escenario se prueba y cuál es su expectativa.

Q280 · Selecciona una respuesta TestHTTPClient usa URLSessionConfiguration.ephemeral y StubURLProtocol. ¿Qué conclusión sobre sus respuestas es correcta?. Las proporciona el handler registrado para ese cliente de prueba. Provienen necesariamente de una petición al servidor desplegado. Demuestran automáticamente disponibilidad de la base remota. Se eligen según la cuenta del usuario que abrió Xcode.

Q281 · Selecciona todas las respuestas correctas ¿Qué decisiones de prueba aparecen en la validación actual de aterrizajes del formulario de vuelo?. Probar un valor por encima del máximo. Comprobar una contraseña demo para aceptar cualquier cantidad. Validar únicamente un valor intermedio y dar por probados los bordes. Aceptar una entrada vacía como equivalente al mínimo válido. Comprobar que una entrada inválida no invoque el envío.

Q282 · Selecciona una respuesta Una regla acepta enteros entre un mínimo y un máximo. ¿Qué selección de casos suele ser más informativa que repetir solo valores centrales?. El mismo valor central con distintos nombres. Valores en los límites y justo fuera de ellos, además de un caso representativo. Solo entradas válidas generadas por la UI. Únicamente una captura de pantalla del formulario.

Q283 · Selecciona una respuesta ¿Qué caso real cubre testPrepopulationAndNocturnalDuration del formulario de vuelo?. Que todos los vuelos nocturnos duran exactamente lo mismo. Que el teléfono cambia la zona horaria del servidor. Que el formulario conserva datos iniciales y calcula una duración al cruzar medianoche. Que el gráfico usa una consulta SQL por minuto.

Q284 · Selecciona todas las respuestas correctas ¿Qué límites tiene el contextLoads actual del backend de AeroGestor?. Certifica la seguridad de todos los endpoints públicos. Utiliza por defecto la misma base persistente que el backend desplegado. No ejecuta por sí solo una navegación completa en un iPhone. Comprueba el arranque del contexto bajo esa configuración. Demuestra por sí solo que todas las migraciones corren en MySQL real.

Q285 · Selecciona una respuesta Todas las pruebas unitarias de un módulo pasan. ¿Qué afirmación es técnicamente defendible?. Las pruebas manuales se aprobaron automáticamente. El servidor real devuelve siempre lo que devuelve el mock. No puede existir un fallo de integración. Los escenarios y expectativas ejecutados pasaron en ese entorno.

Q286 · Selecciona una respuesta ¿Qué comprueba el test de perfil que prepara una sesión con otra identidad o ya cerrada antes de llamar a updateProfile?. Que esa respuesta no sustituye a otra identidad ni vuelve a autenticar una sesión cerrada. Que el cliente convierte cualquier respuesta en JWT. Que el id del servidor siempre coincide con el actual. Que el usuario anterior se borra de la base.

Q287 · Selecciona todas las respuestas correctas ¿Qué expectativas del badge están verificadas por sus tests actuales?. Un fallo de actualización no debe ocultar un aviso previamente conocido. La recepción APNs funciona con el proceso cerrado. Una bandeja recibida como vacía debe conservar necesariamente el indicador encendido. Una identidad ausente puede limpiar el indicador sin enviar otra consulta. La respuesta antigua de otra identidad debe prevalecer sobre la más reciente.

Q288 · Selecciona una respuesta Ante un fallo intermitente, ¿qué registro aporta más valor para investigar una hipótesis?. Reiniciar inmediatamente y omitir el estado previo. Anotar pasos, resultado esperado y real, contexto y evidencia del fallo. Guardar únicamente la opinión de que la app está lenta. Cambiar varias capas al mismo tiempo sin comparar.

Q289 · Selecciona una respuesta El gráfico y una consulta de control muestran cifras distintas. Antes de declarar que el cálculo de AeroGestor falla, ¿qué comparación es pertinente?. Comparar solo el color de las barras. Sumar registros de cualquier usuario para igualar números. Confirmar que usan los mismos vuelos, filtros y período. Reiniciar el seed hasta obtener una cifra visual parecida.

Q290 · Selecciona todas las respuestas correctas Se propone añadir un dato de respuesta del backend a una pantalla iOS. ¿Qué verificaciones ayudarían a cubrir el contrato del cambio?. Que la pantalla refleja el dato recibido en los casos previstos. Que una captura sustituye las pruebas de campos nulos. Que el JSON producido conserva el nombre y el tipo acordados. Que basta cambiar el texto del label sin comprobar transporte. Que el modelo Swift puede decodificar el dato y su ausencia permitida.

Q291 · Selecciona una respuesta Durante una pasada manual de AeroGestor ya se crearon y resolvieron registros. ¿Siguen siendo las cantidades originales del seed el oráculo para todas las consultas?. No, por eso conviene borrar los datos a mitad de cada caso. Sí, porque verify_seed mide cualquier estado futuro de negocio. Sí, deben permanecer idénticas pese a las operaciones. No, hay que comparar con los cambios y la evidencia acumulada de la pasada.

Q292 · Selecciona una respuesta Un test asíncrono falla de forma variable porque duerme un tiempo fijo antes de afirmar el resultado. ¿Qué mejora es preferible?. Esperar una condición o evento controlado de la operación bajo prueba. Eliminar las aserciones que revelan la carrera. Depender de que la conexión del desarrollador sea rápida. Aumentar indefinidamente todas las esperas sin observar condiciones.

Q293 · Selecciona todas las respuestas correctas AeroGestor muestra datos viejos después de una edición. ¿Qué observaciones permiten aislar la capa responsable sin destruir datos?. Comparar mediante lectura el registro persistido y los filtros usados. Ejecutar schema.sql sobre la base que contiene la evidencia. Comprobar qué request y qué respuesta se intercambiaron. Afirmar que toda respuesta 200 demuestra una actualización visual. Revisar el estado del ViewModel que alimenta la vista.

Q294 · Selecciona una respuesta Una respuesta HTTP de error de AeroGestor contiene HTML en vez de APIErrorPayload. ¿Por qué el cliente puede mostrar un error genérico?. Porque el servidor cambió necesariamente todas las tablas. Porque decodeServerError no puede decodificar el payload esperado y devuelve unknown. Porque la UI siempre oculta los mensajes válidos. Porque el código transforma cualquier HTML en éxito.

Q295 · Selecciona una respuesta En pruebas con iPhone físico, ¿por qué comprobar el acceso real del teléfono a la API antes de investigar un formulario?. Porque el permiso de red local equivale a autenticación HTTP. Porque una compilación exitosa prueba la conectividad de red. Porque localhost del teléfono no identifica automáticamente al servidor que corre en otra máquina. Porque todo teléfono consulta la misma dirección del Simulator.

Q296 · Selecciona todas las respuestas correctas Para evaluar el guardado de un formulario de AeroGestor, ¿qué evidencias complementan una captura de confirmación?. El simple hecho de que el spinner desaparezca certifica durabilidad. La respuesta y el estado local reflejan el resultado esperado. Un stub HTTP demuestra que el teléfono alcanzó la instancia real. Una respuesta 2xx prueba por sí sola que el registro se recuperó después desde MySQL. La petición enviada coincide con los valores normalizados y el contrato.

Q297 · Selecciona una respuesta Un test reemplaza por una constante el mismo cálculo cuyo resultado pretende validar. ¿Qué riesgo introduce?. Demuestra automáticamente que los filtros son correctos. Garantiza que el código real se ejecute igual. Prueba mejor el algoritmo porque ya conoce el resultado. Puede dejar sin ejercitar la lógica que se quería comprobar.

Q298 · Selecciona una respuesta H2 se ejecuta en modo de compatibilidad MySQL en el test de arranque. ¿Qué comprobación sigue siendo necesaria para afirmar compatibilidad de una migración real?. Probar la migración y sus restricciones en una instancia MySQL aislada representativa. Ninguna, el nombre del modo hace equivalentes ambos motores. Comparar solo el número de archivos Java. Ejecutar solamente una preview de SwiftUI.

Q299 · Selecciona una respuesta El repositorio contiene un plan manual detallado de AeroGestor. ¿Cómo debe describirse ese documento en la defensa si no se adjunta la pasada ejecutada?. Como sustituto de los resultados de XCTest. Como un procedimiento de verificación, no como evidencia de que cada caso pasó. Como prueba de que no existen defectos críticos. Como certificación automática de todas las plataformas.

Q300 · Selecciona todas las respuestas correctas Ante una pregunta técnica de defensa, ¿qué distinciones hacen una respuesta comprobable?. Presentar una mejora deseable como si ya estuviera implementada. Reconocer una limitación no cubierta y proponer cómo verificarla. Afirmar que la ausencia de errores visibles demuestra todos los requisitos. Separar lo observado en una prueba de lo inferido a partir de ella. Precisar qué componentes y entorno cubre la evidencia.

Denunciar Test