[{ "origin": "Gemini 3 Flash", "sources": [ "https://www.boe.es/buscar/act.php?id=BOE-A-1985-5392", "https://learn.microsoft.com/es-es/dotnet/csharp/programming-guide/concepts/collections", "https://www.ccn-cert.cni.es/ens.html" ], "title": "Especialización TIC - Refactorizado KyMAN", "group": "especializacion_tic_014", "queries": [{ "question": "¿Qué {rand:garantiza|asegura} la propiedad {rand:A (Atomicidad)|de Atomicidad} en las transacciones de {rand:SQL|una base de datos}?", "rights": [ "Que si la transacción tiene {rand:varias operaciones|múltiples pasos}, se ejecutan {rand:todos con éxito o ninguno|completamente o nada}." ], "wrongs": [ "Que los datos se {rand:guarden físicamente|almacenen} en unidades {rand:atómicas de 4KB|indivisibles de sector} en el disco duro.", "La capacidad de {rand:atender a miles de usuarios|gestionar la concurrencia} de forma simultánea sin generar {rand:bloqueos|deadlocks}.", "Que los datos {rand:perduren en el tiempo|sean persistentes} incluso ante un fallo {rand:catastrófico de energía|de hardware} tras el commit." ], "wrong_explanations": [ "La atomicidad es un concepto lógico de ejecución, no una medida física de almacenamiento en el hardware.", "Esa descripción se acerca más al concepto de Aislamiento (Isolation) o a la gestión de concurrencia del motor.", "Eso es la Durabilidad (D), que garantiza que el commit sea permanente." ] }, { "question": "¿Cuál es el {rand:primer paso|comienzo} en la jerarquía externa de {rand:resolución DNS|consulta de nombres} si el registro no está en caché?", "rights": [ "Consultar a los {rand:servidores Raíz|Root Servers}, representados por un punto {rand:'.'|final}." ], "wrongs": [ "Preguntar al servidor de {rand:Nombres Autoritativo|Autoridad} del dominio específico {rand:ferrol.es|gob.es}.", "Consultar al servidor {rand:TLD (Top Level Domain)|de Dominio de Nivel Superior} encargado de los {rand:extensión .es|.gal}.", "Contactar con el {rand:servidor DNS de Google|8.8.8.8} por ser el {rand:estándar mundial|resolutor primario} de internet." ], "wrong_explanations": [ "El autoritativo es el último paso de la cadena, no el primero.", "El TLD es el segundo paso; antes se debe saber qué TLD es el correcto mediante los Root Servers.", "El 8.8.8.8 es un resolutor recursivo (un intermediario), pero la jerarquía externa de la red empieza en la raíz." ] }, { "question": "En municipios de {rand:régimen común|población > 5.000}, ¿cuál es el {rand:límite máximo|tope} de concejales en la {rand:Junta de Gobierno Local|JGL}?", "rights": [ "Un número no superior al {rand:tercio|33% aproximadamente} del número legal de miembros del Pleno." ], "wrongs": [ "No existe {rand:límite legal|restricción}, el Alcalde puede {rand:nombrar a todos|incluir a todo el grupo}.", "Exactamente la {rand:mitad más uno|mayoría absoluta} de los miembros que componen el Pleno municipal.", "Un {rand:máximo fijo de 5|tope de cinco} concejales, {rand:independientemente|sin importar} el tamaño de la corporación." ], "wrong_explanations": [ "La LRBRL impone límites claros para mantener la separación de funciones y el control político.", "La mitad más uno es el quórum de mayoría absoluta, no el límite de miembros de la Junta de Gobierno.", "El límite es proporcional al tamaño del Pleno (un tercio), no un número fijo de 5." ] }, { "question": "Para {rand:iterar|recorrer} una colección en C# {rand:sin modificarla|solo lectura}, ¿qué interfaz es la {rand:más eficiente|recomendada}?", "rights": [ "{rand:IEnumerable|la interfaz IEnumerable}." ], "wrongs": [ "IList, que permite {rand:acceso indexado|manipulación completa} y modificación de elementos.", "ICollection, que incluye métodos para {rand:añadir o eliminar|gestionar el conteo} de objetos.", "ArrayList, por ser el {rand:estándar de colecciones|modelo original} de las primeras versiones de .NET." ], "wrong_explanations": [ "IList es demasiado \"pesada\" si solo vas a leer, ya que obliga a implementar gestión de índices.", "ICollection es útil para saber el tamaño (Count), pero si solo vas a iterar, IEnumerable es más abstracta y flexible.", "ArrayList no es genérica y está obsoleta (deprecated) frente a las colecciones tipadas de System.Collections.Generic." ] }, { "question": "¿Qué {rand:criterio principal|método} define la {rand:Categoría de seguridad|clase del sistema} (Básica, Media, Alta) en el ENS?", "rights": [ "El {rand:nivel más alto|valor máximo} alcanzado en cualquiera de las {rand:5 dimensiones|dimensiones de seguridad}." ], "wrongs": [ "La {rand:decisión discrecional|voluntad} del Alcalde tras consultar con el {rand:Responsable de Seguridad|CISO}.", "El {rand:volumen de datos|tamaño de la base de datos} medido en {rand:Gigabytes|número de registros}.", "La {rand:antigüedad del hardware|obsolescencia tecnológica} de los servidores que alojan el {rand:Padrón|servicio}." ], "wrong_explanations": [ "La categoría no es política ni discrecional, emana de un análisis técnico de riesgos y dimensiones.", "Un sistema con pocos datos pero muy sensibles (ej: testigos protegidos) puede ser Categoría Alta independientemente de su tamaño.", "El ENS evalúa la información y el servicio; el hardware es un activo, pero no determina la categoría por sí solo." ] }, { "question": "¿Qué {rand:sucede|hace el motor} de SQL Server cuando {rand:detecta un Deadlock|se produce un interbloqueo}?", "rights": [ "El {rand:Lock Monitor|monitor de bloqueos} elige una 'víctima' y le aplica un {rand:Rollback|deshacer}." ], "wrongs": [ "Se {rand:detienen todos los servicios|apaga la instancia} para evitar la {rand:corrupción de datos|pérdida de integridad}.", "Envía una {rand:alerta al administrador|notificación al DBA} para que resuelva el {rand:bloqueo manualmente|conflicto}.", "Ejecuta un {rand:COMMIT forzoso|confirmación} de ambas transacciones {rand:al mismo tiempo|en paralelo}." ], "wrong_explanations": [ "Un deadlock es un error lógico común; apagar el servidor sería una medida desproporcionada y fatal para la disponibilidad.", "SQL Server lo resuelve automáticamente en milisegundos; si tuviera que esperar a un humano, el sistema se colapsaría.", "No se pueden confirmar ambas porque están bloqueadas mutuamente; una debe morir para que la otra viva." ] }, { "question": "En Linux, si un script {rand:bloquea la terminal|está en primer plano}, ¿cómo se {rand:pasa a background|envía a segundo plano}?", "rights": [ "Pulsando {rand:Ctrl + Z|la pausa de proceso} y ejecutando luego el comando {rand:bg|background}." ], "wrongs": [ "Pulsando {rand:Ctrl + C|interrupción} y escribiendo {rand:fg|foreground} para recuperar la sesión.", "Cerrando la {rand:terminal|consola} y volviendo a {rand:loguearse|entrar} por SSH.", "Escribiendo {rand:kill -9|la señal de muerte} seguida del {rand:PID|identificador de proceso}." ], "wrong_explanations": [ "Ctrl + C mata el proceso (SIGINT); no lo pausa ni lo mueve al fondo.", "Cerrar la terminal mataría el proceso (SIGHUP) a menos que uses herramientas como 'screen' o 'nohup'.", "Kill -9 es una parada forzosa; el objetivo es que el script siga trabajando, no eliminarlo." ] }] }]