> **📝 SIMULACRO DE EXAMEN: CONTROL 13 (NIVEL ALTO)**

# Parte I: Recursos y Contratación Pública

## Pregunta 1 (Tipo Test) - Tema 5 (Ley 39/2015 - Recursos Administrativos)

En el ámbito de las Corporaciones Locales, contra los actos administrativos ordinarios dictados por los órganos municipales que **ponen fin a la vía administrativa** (como las resoluciones sancionadoras del Alcalde o los acuerdos del Pleno), ¿qué régimen de recursos administrativos se puede interponer con carácter general antes de acudir a los juzgados?

- A. Se interpondrá con carácter obligatorio el Recurso de Alzada ante el órgano jerárquicamente superior que dictó el acto, disponiendo el interesado de un plazo preclusivo de un mes computado de fecha a fecha.
- B. Se podrá interponer con carácter potestativo el Recurso de Reposición ante el mismo órgano que dictó el acto en el plazo de un mes, o bien impugnarlo directamente ante la Jurisdicción Contencioso-Administrativa, no pudiendo simultanearse ambos recursos.
- C. Se tramitará obligatoriamente el Recurso Extraordinario de Revisión ante la Junta de Gobierno Local, quedando suspendidos los plazos de ejecución por el mero hecho de registrar la solicitud en la ventanilla única.
- D. No cabe interponer ningún recurso administrativo de carácter ordinario ni potestativo, quedando el vecino obligado a iniciar un procedimiento de conciliación previa regulado en el Estatuto de Autonomía de Galicia.

### Respuesta

Aquí tuve que mirar los recursos que aquí me diste pues no los sabía, pese a que sí los estudié, pero no me quedaron. Por lo que vi:

- **Recurso de Alzada**: Es un recurso que se puede utilizar de forma general para hacer una corrección a un trámite ya finalizado sobre una Administración sobre una entidad superior sin tener que pasar por el ámbito judicial.
- **Recurso de Reposición**: Es un recurso que se hace para cuando no hay un acuerdo sobre un fin sobre una Administración sin tener que pasar por el ámbito Judicial.
- **Recurso Contencioso/Administrativo**: Es un recurso que se hace sobre una resolución o trámite finalizado  en el ámbito judicial.
- **Recurso Extraordinario de Revisión**: Es un recurso que permite impugnar actos administrativos o sentencias firmes cuando a futuro se encuentran pruebas de que no es así de forma legal. Entiendo que con ésta se requiere del ámbito Judicial.

Por tanto, en este caso es la **A**.

### Corrección

- **Tu respuesta**: A (Recurso de Alzada).
- **La respuesta correcta era**: **B** (Recurso de Reposición).
- **Feedback del Profesor**: Hiciste una investigación magnífica de los conceptos, pero te faltó casar el detalle más importante del enunciado: "**actos que PONEN FIN a la vía administrativa**".
- **Recurso de Alzada (Art. 121)**: Se interpone contra actos que **NO ponen fin** a la vía administrativa. Obligatoriamente se envía al superior jerárquico para que revise lo que hizo su subordinado.
- **Recurso de Reposición (Art. 123)**: Se interpone contra actos que **SÍ ponen fin** a la vía administrativa (como las resoluciones del Alcalde o del Pleno, que en el Ayuntamiento no tienen a nadie por encima). Es **potestativo**: el ciudadano elige si quiere pedirle al mismo Alcalde que se lo vuelva a pensar (reposición) o si pasa olímpicamente de la vía administrativa y se va directo al juzgado por la vía Contencioso-Administrativa. Por eso la opción correcta era la **B**.

## Pregunta 2 (Desarrollo Corto) - Tema 37 (Ley 9/2017 - Contratos Menores)

Como técnico informático del Ayuntamiento, te encargarán habitualmente la compra de licencias, software o pequeños suministros de hardware. Explique brevemente cuál es el régimen actual de los **Contratos Menores** según la Ley de Contratos del Sector Público (LCSP): detalle cuáles son las **cuantías máximas de valor estimado** (excluyendo el IVA) para contratos menores de *suministros/servicios* y para contratos de obras, así como su **duración máxima** admitida por ley.

### Respuesta

Si mal no recuerdo creo que es de una duración máxima de 6 meses sobre una cuantía de 15000€, donde aplicando el IVA es multiplicar dicho valor por 1.21, quedando un total máximo de 18150€. Sin embargo, decir que esta pregunta está mal pues no entra dentro del temario. El tema 37 es Ciberseguridad, no Contratos Menores. Los contratos menores no me entran en el temario.

### Corrección

- **Tu respuesta**: "El tema 37 es Ciberseguridad, los contratos menores no entran en mi temario".
- **Feedback del Profesor**: ¡Touché! Efectivamente, te la colé intentando meter legislación de contratos del sector público en el bloque de seguridad informática y me has pillado con el carrito del helado. Pregunta anulada por el tribunal, se te conceden los 10 puntos íntegros por control estricto de tu programa de examen. (Por cierto, tu intuición de los 15.000 € para servicios era totalmente correcta).

# Parte II: Desarrollo y Estructura de Datos (.NET y SQL)

## Pregunta 3 (Tipo Test) - Tema 11 y 13 (Gestión de Memoria en .NET - El bloque using)

Al escribir código en C# para interactuar con recursos no administrados (como abrir una conexión a la base de datos de recaudación mediante `SqlConnection` o leer un archivo con `StreamReader`), implementamos la interfaz `IDisposable`. ¿Qué ocurre exactamente a nivel de compilación y ejecución cuando envolvemos dicho objeto dentro de una declaración o bloque `using`?

- A. El compilador traduce el bloque en una instrucción asíncrona dedicada que fuerza al Garbage Collector a realizar una recolección inmediata de Generación 0 antes de que el método devuelva el control.
- B. El código se transforma internamente en una estructura `try...finally` donde, de forma garantizada y automática, se invoca al método `Dispose()` del objeto en el bloque `finally`, asegurando la liberación inmediata del recurso incluso si se produce una excepción grave dentro del código.
- C. El objeto se almacena de forma persistente en un buffer protegido de la memoria caché del servidor, impidiendo que otros subprocesos de fondo puedan acceder a los índices agrupados de la aplicación.
- D. El bloque `using` cifra los metadatos de la clase utilizando algoritmos simétricos avanzados vinculados a la directiva de seguridad perimetral del Esquema Nacional de Seguridad (ENS).

### Respuesta

No tengo ni idea de cuál es la finalidad de la Interfaz `IDisposable`, sin embargo, `using` tiene dos significados: importar un recurso desde una librería o archivo Script; o hacer uso de un recurso y cerrarlo una vez finalice la ejecución de lo que encapsule. En este caso, se ve claramente que es el segundo caso.

Mirando información sobre `IDisposable` básicamente es como una "norma" que mapea cómo se pueden eliminar o destruir recursos fuera del Colector de Basura, implementando métodos como `Close` entre otros. En el caso del `IDisposable` sólo fuerza la implementación de un único método: `Dispose`.

Por descarte, pues no me encaja ninguna de las respuestas sería la **B**, pues para que encaje completamente, el recurso junto con toda la acción del Try Catch ha de estar dentro del bloque `using` para que tenga consistencia. La primera no tiene nada que ver porque los elementos que lo implementan suelen ser síncronos por su uso dentro de un bloque `using`; la C tampoco tiene sentido porque el objetivo no es hacer una persistencia, sino un uso temporal con un control de liberación del recurso tras su uso; y la D no tiene sentido ninguno y menos tiene que ver con el ENS.

### Corrección

- **Tu respuesta**: B.
- **Feedback del Profesor**: Tu razonamiento de descarte ha sido magistral. El bloque `using` es lo que en programación llamamos azúcar sintáctico (*syntactic sugar*). Para que no tengamos que escribir manualmente un bloque de código engorroso cada vez que abrimos un archivo o una conexión, el compilador transforma tu limpio bloque `using` en esto:

```C#

// Lo que escribes tú:
using (StreamReader sr = new StreamReader("archivo.txt")) { ... }

// En lo que lo traduce el compilador internamente:
StreamReader sr = new StreamReader("archivo.txt");
try {
    // Tus acciones...
}
finally {
    if (sr != null) ((IDisposable)sr).Dispose(); // <--- Liberación garantizada
}

```

Garantiza que el método `Dispose()` se va a ejecutar pase lo que pase en el código (incluso si salta una excepción desastrosa), cerrando el archivo de forma inmediata.

## Pregunta 4 (Desarrollo Corto / Práctico) - Tema 15 (SQL Server - Transacciones con Control de Errores)

Escribe una estructura de código en SQL Server (T-SQL) que plantee el esqueleto seguro de una **Transacción con control de excepciones**. Debe incorporar obligatoriamente los bloques `BEGIN TRY / END TRY`, `BEGIN CATCH / END CATCH`, así como las instrucciones para confirmar la transacción (`COMMIT`) si todo va bien, o deshacer los cambios (`ROLLBACK`) si ocurre un error dentro del bloque crítico.

### Respuesta

```sql
use BaseDeDatos

if object_id(N'dbo.procedimiento_de_prueba', N'P') is not null drop procedure dbo.procedimiento_de_prueba
go
create procedure dbo.procedimiento_de_prueba as begin set nocount on 

    begin transaction

    begin try

        -- Acciones

        commit

    end try
    begin catch
        rollback
    end catch

end
go

```

### Corrección

- **Tu respuesta**: Esqueleto limpio y bien estructurado en un procedimiento almacenado.
- **Feedback del Profesor**: Código robusto, pulcro y con las directivas de control de flujo perfectamente ordenadas. Colocar el `COMMIT` al final del bloque `TRY` y el `ROLLBACK` al inicio del bloque `CATCH` garantiza la atomicidad (propiedad ACID) de cualquier script crítico que ejecutes en la base de datos municipal. Nada que objetar, de diez.

# Parte III: Arquitectura Web y Seguridad en Datos

## Pregunta 5 (Tipo Test) - Tema 21 (Seguridad y Desarrollo Web - Mecanismo CORS)

Durante el desarrollo de una aplicación web para la Sede Electrónica del Ayuntamiento, el navegador web bloquea una petición Fetch realizada desde el frontend hacia una API interna lanzando un error de tipo **CORS (Cross-Origin Resource Sharing)**. ¿A qué se refiere exactamente este mecanismo y cómo opera en la arquitectura web actual?

- A. Es un estándar de hardware integrado en los switches de la red local del Ayuntamiento que monitoriza el ancho de banda para evitar ataques de denegación de servicio (DoS).
- B. Es un mecanismo de seguridad implementado por los navegadores que restringe las peticiones HTTP de scripts iniciados desde un origen (dominio, protocolo o puerto) diferente al del servidor que sirve el recurso, requiriendo que el servidor destino envíe ciertas cabeceras HTTP (como `Access-Control-Allow-Origin`) para autorizar la lectura de la respuesta.
- C. Es un protocolo de indexación distribuida diseñado por el consorcio W3C para acelerar las consultas de datos geoespaciales en las bases de datos cartográficas del catastro local.
- D. Es una directiva de cifrado asimétrico que oculta las cookies de sesión del funcionario en el montón de ejecución del navegador, mitigando las fugas de memoria en aplicaciones de escritorio VDI.

### Respuesta

Esta es muy fácil y sería la **B** pues el CORS impide el cruce de recursos entre distintas fuentes de ejecución, no de estilos, HTML, comunicación asíncrona, etc. Salvo que el propio servidor dé luz verde a dichas acciones desde la cabecera HTTP que se describe en la **B**, ya sea con el clásico asterisco para todo como por los dominios de confianza.

### Corrección

- **Tu respuesta**: **B**.
- **Feedback del Profesor**: Excelente definición de CORS. Como programador municipal, te vas a pegar con esto constantemente. Es una medida de seguridad nativa del navegador (no del servidor): si la web del Ayuntamiento (`ayto.com`) intenta pedir datos mediante Javascript a una API de otra entidad (`servicios-externos.es`), el navegador capará la respuesta a menos que el servidor de destino le diga explícitamente en las cabeceras: "*Tranquilo, dale el dato a ayto.com que es de confianza*" (`Access-Control-Allow-Origin`).