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

# Parte I: Haciendas Locales y Derechos Digitales

## Pregunta 1 (Tipo Test) - Tema 6 (Haciendas Locales - Aprobación del Presupuesto)

De acuerdo con el artículo 169 del Texto Refundido de la Ley Reguladora de las Haciendas Locales, una vez que el Pleno del Ayuntamiento realiza la aprobación inicial del Presupuesto General, ¿cuál es el procedimiento legalmente establecido para su aprobación definitiva?

- A. El presupuesto se expondrá al público previo anuncio en el Boletín Oficial de la Provincia por el plazo de 15 días hábiles, durante los cuales los interesados podrán examinarlo y presentar reclamaciones. Si no se presentan reclamaciones, se entenderá definitivamente aprobado sin necesidad de un nuevo acuerdo plenario explícito.
- B. El presupuesto se remite directamente al Ministerio de Hacienda para un visado de control financiero por un plazo de 30 días naturales, entendiéndose aprobado de forma tácita si el Estado no ejerce su derecho de veto presupuestario.
- C. Al tratarse de un acto administrativo de gravamen interno, el presupuesto se publica únicamente en el tablón de anuncios del Concello durante 10 días naturales, requiriéndose obligatoriamente que el Pleno vote una segunda aprobación definitiva un mes después.
- D. El presupuesto entra en vigor de forma provisional al día siguiente de su aprobación inicial, disponiendo la Xunta de Galicia de un plazo de tres meses para impugnar las bases de ejecución ante el Tribunal Superior de Xustiza de Galicia.

### Respuesta

Si las preguntas fueran más parecidas con la primera me hubieras pillado de bien aquí pues no me acordaba bien. Sé lo de la publicación pero no mucho más. En este caso, por el despropósito que describen las otras es la **A**.

### Corrección

- **Tu respuesta**: **A**.
- **Feedback del Profesor**: Usaste la mejor técnica del opositor astuto: el descarte de absurdos. El artículo 169.1 del TRLRHL dicta exactamente eso: **15 días hábiles** de exposición en el BOP para reclamaciones. Si nadie protesta, el presupuesto se eleva de provisional a definitivo automáticamente, sin volver a pasar por el Pleno. Las otras opciones eran invenciones de control estatal o autonómico que no existen en el régimen local común.

## Pregunta 2 (Tipo Test) - Tema 30 (RGPD - Derecho de Supresión en el Municipio)

Un ciudadano de Ferrol se presenta en el registro general del Ayuntamiento y ejerce de forma expresa su Derecho de Supresión ("derecho al olvido"), exigiendo que el Concello borre de forma inmediata y definitiva todos sus datos personales del **Padrón Municipal de Habitantes** porque ya no desea constar en las bases de datos públicas. De acuerdo con el RGPD y la LOPDGDD, ¿cómo debe responder jurídicamente la Administración?

- A. El Ayuntamiento está obligado a borrar los datos de forma inmediata (en un plazo máximo de 72 horas) ya que el consentimiento del ciudadano es la única base jurídica válida para mantener datos en la Administración Local.
- B. El Ayuntamiento denegará motivadamente la solicitud de supresión, puesto que el tratamiento de los datos del Padrón es necesario para el cumplimiento de una obligación legal impuesta al Ayuntamiento (LBRL) y para el ejercicio de poderes públicos, prevaleciendo esta base jurídica sobre el derecho de supresión del interesado.
- C. El Ayuntamiento suspenderá temporalmente la inscripción padronal del ciudadano durante un año y, si el interesado no cambia de opinión mediante declaración jurada ante notario, se procederá al borrado físico de los índices agrupados de la base de datos.
- D. El derecho de supresión solo es aplicable si el ciudadano demuestra mediante una auditoría técnica de la directriz DICAT que los servidores municipales han sufrido una brecha de seguridad de nivel alto.

### Respuesta

Sin leer las respuestas, datos como los establecidos en el Padrón Municipal de Habitantes no se pueden borrar ni por petición expresa del habitante. El habitante puede hacer borrar muchos datos suyos pero otros como es este no se puede. Por tanto, es la **B**.

### Corrección

- **Tu respuesta**: **B**.
- **Feedback del Profesor**: Una respuesta impecable. Fuiste directo a la raíz jurídica del RGPD (Artículo 17.3.b). El consentimiento no es la única base legal; la Administración Pública se mueve por **obligación legal y ejercicio de poderes públicos**. Como la Ley de Bases de Régimen Local obliga a los ayuntamientos a mantener el Padrón, el ciudadano no puede exigir que lo borren "porque ya no le apetece salir".

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

## Pregunta 3 (Tipo Test) - Tema 13 (Manexo de Errores en C# - Relanzar Excepciones)

Dentro de un bloque `catch` en C# (.NET), cuando queremos capturar una excepción para realizar una tarea secundaria (como guardar el error en el log del Ayuntamiento) y luego queremos volver a lanzar la misma excepción hacia arriba en la pila de llamadas para que la controle otra capa de la aplicación, ¿cuál es la diferencia técnica y crítica entre ejecutar `throw;` frente a ejecutar `throw ex;`?

- A. `throw;` destruye el objeto de la excepción liberando la pila de ejecución inmediatamente, mientras que `throw ex;` duplica la excepción en el montón creando una fuga de memoria (*Memory Leak*).
- B. Ambos comandos realizan exactamente la misma función en el entorno de ejecución de .NET (CLR), pero `throw ex;` es obligatorio si la aplicación se ejecuta sobre contenedores Docker en Linux.
- C. `throw;` relanza la excepción original preservando intacta toda la información de la pila de llamadas (*Stack Trace*), lo que permite saber exactamente dónde se originó el error real; mientras que `throw ex;` reescribe el *Stack Trace* estableciendo el punto de origen del error en la línea exacta del `throw ex;`, perdiendo la historia previa del fallo.
- D. `throw;` solo se puede utilizar si el método original fue declarado con el modificador de acceso `internal`, mientras que `thought ex;` exige que el objeto herede de la interfaz `IThrowable`.

### Respuesta

Aquí dudo con la A y la C, y sé que la diferencia entre ambas es que `throw` detiene todo y `throw ex` permite capturar la excepción en un nivel superior, pero la verdad que no sé exactamente, a nivel interno como lo trabaja. Entiendo que la **C**, que daré como correcta, pero la verdad que me pillas de bien aquí.

### Corrección

- **Tu respuesta**: **C**.
- **Feedback del Profesor**: Dudabas, pero tu instinto de programador te llevó directito a la respuesta correcta.

Para que lo veas claro a nivel interno, este es el comportamiento del entorno de ejecución de .NET (CLR):

- `throw;` **(Preserva la historia)**: No toca el objeto de la excepción. Simplemente le dice al CLR: *"Sigue buscando un catch arriba en la pila, pero mantén el puntero original de dónde rompió el código"*. El `StackTrace` se queda intacto.
- `throw ex;` **(Reescribe la historia)**: Coge la variable ex y la relanza como si fuera un error *nuevo* nacido en esa misma línea. El CLR limpia el `StackTrace` previo y pone como línea de origen del fallo la del `throw ex;`. Si el error real ocurrió dentro de una librería profunda de la capa de datos, nunca lo sabrás porque tu log dirá que falló en el catch de la capa de presentación.

## Pregunta 4 (Desarrollo Corto / Práctico) - Tema 15 (SQL Server - Búsqueda de Huérfanos)

Imagina que en la base de datos del Concello dispones de dos tablas: `Contribuyentes` (con el campo `id_contribuyente`) y `Recibos` (con los campos `id_recibo`, `id_contribuyente` e `importe`).

Escribe una consulta en SQL Server que devuelva el `id_contribuyente` y el `nombre` de aquellos contribuyentes que **no tengan ningún recibo asociado** en el sistema (contribuyentes sin deudas ni recibos cargados). **Obligatorio**: Realiza la consulta utilizando un `LEFT JOIN` y explica brevemente en qué te basas para realizar el filtrado de los registros huérfanos.

### Respuesta

```sql
use BaseDeDatos

select 
    contribuyentes.id_contribuyente as id_contribuyente, 
    contribuyentes.nombre as nombre
from dbo.Contribuyentes contribuyentes 
left join dbo.Recibos recibos on contribuyentes.id_contribuyentes = recibos.id_contribuyente
where recibos.id_recibo is null
```

El objetivo de la consulta es buscar aquellos contribuyentes que no tengan recibos asociados, por lo que si en el `left join` que prioriza la tabla contribuyentes, los recibos son nulos implica que no tienen recibos asociados.

### Corrección

- **Tu respuesta**: Código perfectamente estructurado y lógica impecable.
- **Feedback del Profesor**: La lógica del `LEFT JOIN` combinada con el `WHERE tablaB.id IS NULL` es la forma más óptima y elegante de buscar registros huérfanos en SQL Server (infinitamente mejor que usar subconsultas con `NOT IN`).
- **El ojo del compilador**: Como tu colega de código, te aviso de que se te coló una "s" en el `ON`: pusiste `contribuyentes.id_contribuyentes` (en plural). El motor te habría dado un error de *invalid column name*, pero la lógica del ejercicio la dominas a la perfección.

# Parte III: Ciberseguridad y Gestión de Accesos

## Pregunta 5 (Desarrollo Corto) - Tema 20 (Xestión de Identidades e Acceso - MFA)

En el marco de la seguridad de accesos de la Administración Pública, explique brevemente el concepto de **Autenticación Multifactor (MFA)**. Enumere cuáles son las **tres categorías clásicas de factores de autenticación** en las que se basa tecnológicamente este sistema y ponga un ejemplo práctico de cada una de ellas enfocado en el puesto de trabajo de un funcionario municipal.

### Respuesta

El MFA es un sistema de autenticación que requiere de al menos dos factores distintos de autenticación. Dichos factores son *Qué sé*, *Qué tengo* y *Qué soy*.

### Corrección

- **Tu respuesta**: Definición conceptual perfecta y listado correcto de los tres factores (*Qué sé, Qué tengo, Qué soy*).
- **Feedback del Profesor**: El concepto y los factores los clavaste de memoria, pero te dejaste atrás la segunda parte de la pregunta: *los ejemplos prácticos enfocados en el puesto de trabajo de un funcionario municipal*. En el examen real, dejar una pregunta a la mitad es regalarle puntos al tribunal.

> **💡 Los ejemplos que esperaba el tribunal:**

- **Algo que sé (Conocimiento)**: La contraseña corporativa del funcionario o el código PIN para desbloquear su equipo.
- **Algo que tengo (Posesión)**: El DNI electrónico (DNIe), la tarjeta criptográfica de empleado público o la aplicación Microsoft Authenticator en el móvil municipal que genera un código OTP.
- **Algo que soy (Biometría)**: La huella dactilar o el reconocimiento facial (Windows Hello) integrado en el ordenador del Ayuntamiento para iniciar sesión.