Examen Oposicion 2016
Examen Oposicion 2016
Examen Oposicion 2016
INSTRUCCIONES
• Las hojas que se entregan sueltas son para el uso que considere oportuno cada
opositor aunque también se entregarán todas con el ejercicio.
Página 1 de 22
Ejercicio1
Apartado 1.1.
Implementa las siguientes clases Java sin hacer uso de casting y dentro de un paquete llamado
opos2016:
• clase Coordenadas: con dos atributos de tipo entero accesibles únicamente desde dentro
de la propia clase.
• clase Flexible: con dos atributos (llamados primero y segundo) que puedan ser de
cualquier tipo, y accesibles desde dentro de la propia clase o de una clase derivada.
Fuera del paquete opos2016, crea la clase Gestion que albergará el método main. Este método
debe crear dos objetos de la clase Flexible:
• Indica los nombres de los ficheros creados al compilar este programa y en que directorios
se deben encontrar.
Página 2 de 22
Apartado 1.2.
Dado el siguiente código PHP, sin errores sintácticos, identifica y corrige los posibles
problemas que puedan presentarse al utilizarlo.
<?php
$html=””;
if (isset($_GET[‘Submit’])) {
// Retrieve data
$id = $_GET[‘id’];
$getid = “SELECT first_name,last_name FROM users WHERE user_id =
‘$id’”;
$result = mysql_query($getid) or die(‘<pre>’ .
mysql_error().’</pre>’);
$num = mysql_numrows($result);
$i=0;
while ($i < $num) {
$first = mysql_result($result,$i,”first_name”);
$last = mysql_result($result,$i,”last_name”);
$html .= ‘<pre>’;
$html.=’ID: ‘.$id.’<br>First Name: ‘.$first.’<br>Surname: ‘.
$last;
$html.=’</pre>’;
$i++;
}
}
?>
Página 3 de 22
Apartado 1.3.
Dada la siguiente tabla de empleados:
1. Obtener por orden alfabético los nombres de los empleados cuyo salario supera en tres
veces y media o más al mínimo salario de los empleados del departamento 122
2. Hallar el salario medio por departamento para aquellos departamentos cuyo salario
máximo es inferior al salario medio de todos los empleados
3. Obtener por orden alfabético los nombres de los empleados del departamento 112, así
como su sueldo total, es decir, incluyendo la comisión en aquellos que la tengan, indicando
en una columna si el salario es “Con Comisión” o “Sin Comisión"
Página 4 de 22
Apartado 1.4.
En la siguiente topología de red se definen diferentes VLAN con un router en configuración
“Router-on-a-stick”. Teniendo en cuenta la configuración aportada, indique el camino que siguen
los siguientes paquetes señalando los elementos de red y sus interfaces de entrada y salida
necesarias.
Ejemplo
Si PC5 envía un paquete a PC6
El camino sería: PC5, S3:E2, S3:E3, PC6
Página 5 de 22
Página 6 de 22
Ejercicio2
Apartado 2.1
La clase Usuario permite guardar en un fichero los datos de un usuario y leerlos. Se pide:
• Desarrollar la clase Cuentas con los atributos email y fechaCreación, de modo que
fechaCreación no se almacene en el fichero.
import java.io.*;
import java.util.*;
Página 7 de 22
Apartado 2.2.
Implementar en C o Java un algoritmo que genere números primos hasta la cantidad máxima
especificada por el usuario. Utilícese el algoritmo denominado Criba de Erastóstenes.
Dada una matriz de enteros empezando por el número 2, se tachan los múltiplos de 2. Se busca el
siguiente entero sin tachar y se tachan todos los múltiplos. Repetir hasta superar la raiz cuadrada
del valor máximo
Página 8 de 22
Apartado 2.3.
Dada una tabla con información sobre “expedientes”, se pide crear un Trigger (sintaxis MySQL o
SQLServer) que controle las modificaciones del “estado del expediente” según las siguientes
reglas:
Tabla: Expedientes
Tabla: expStatusHistory
Página 9 de 22
Apartado 2.4.
En la siguiente topología de red todos los routers utilizan OSPFv2 como protocolo de enrutamiento
dinámico. Dada la configuración de los interfaces de los routers indicada en la tabla, cuál sería el
número ID de cada uno de los routers teniendo en cuenta que no ha sido configurada
manualmente.
Router R1 Router R4
Interface Loopback0: 192.168.10.1/32 Interface E0: 10.1.10.3/24
Interface E0: 10.1.10.1/24
Interface E1: 10.1.30.1/24
Interface S0: 10.1.40.2/30
Router R2 Router R5
Interface Loopback0: 192.168.10.3/32 Interface E0: 10.1.10.4/24
Interface E0: 10.1.20.2/24 Interface S0: 209.165.201.1/27
Interface S0: 10.1.40.1/30
Router R3 Router R6
Interface Loopback0: 192.168.10.6/32 Interface S0: 209.165.201.2/27
Interface E0: 10.1.10.2/24
Interface E1: 10.1.20.1/24
Página 10 de 22
Ejercicio 3
Apartado 3.1
Implementa el método visualizar() de la clase GestionaProductos haciendo uso de la interface
Iterator, de forma que visualice matrícula, marca y modelo de todas las FichaVehículo ordenadas
por matrícula.
import java.util.*;
import java.util.Map.*;
public class GestionaProductos {
TreeMap<String, FichaVehiculo> lista;
public GestionaProductos() {
lista = new TreeMap<String, FichaVehiculo>();
}
Página 11 de 22
Apartado 3.2.
El Patrón Singleton, es un patrón de diseño que consiste en garantizar que solo se pueda
instanciar un único elemento de la misma clase, reutilizando el mismo objeto a lo largo del
programa.
/**
* Liberamos os recursos da conexión a BBDD tendo en conta que podemos ter varios fíos
* @throws Exception
*/
public synchronized static void close() throws Exception {
if (DatabaseConnection.driver!=null) {
DatabaseConnection.driver.conn.close();
DatabaseConnection.driver=null;
}
}
}
Página 12 de 22
Apartado 3.3.
Sobre una base de datos dada se ejecutan secuencialmente las siguientes sentencias SQL:
CREATE TABLE TablaA(
a int,
b int,
primary key(a));
CREATE TABLE TablaB(
d int,
e int,
primary key(d),
foreign key(e) references TablaA(a)
on delete cascade on update set null);
a) insert into TablaA(a,b) values (1,10), (2,20), (3,30), (4, 40), (5,50), (6,60);
b) insert into TablaB(d,e) select b,1 from TablaA where b<40;
c) insert into TablaB(d,e) values (40,2);
d) insert into TablaB(d,e) values (50,3);
e) insert intoTablaB(d,e) values (60,4);
f) update TablaA set a=7 where a=1;
g) delete from TablaA where a=2;
h) update TablaB set e=8 where e=3;
i) delete from TablaB where e=4;
j) insert into TablaB(d,e) values (70,2);
Página 13 de 22
Apartado 3.4.
Dado el siguiente diagrama de red con dos segmentos Ethernet con MTU (Maximum Transmission
Unit) modificada y con una situación inicial en la que ningún equipo se ha comunicado con otro
previamente.
Para cada datagrama IP que recibe C, indique en decimal los valores de la cabecera IP
siguientes:
TL (Total Length), DF (Do not fragment), MF (more fragments), FO (Fragment OFFSET) y SA
(Source IP address).
Apéndice: Datagrama IP
Página 14 de 22
Ejercicio4
Apartado 4.1.
Indicar la salida de ejecución del siguiente código:
} finally {
System.out.println("ProcA finally");
}
}
} finally {
System.out.println("ProcB finally");
}
}
Página 15 de 22
Apartado 4.2.
Dadas las siguientes clases, implementar los métodos clone(), equals() y toString() de cada clase,
usando los mecanismos que nos proporciona la herencia.
Ten en cuenta que:
• Consideramos que dos objetos de estas clases son iguales si los valores de todos
sus atributos son iguales.
• Al visualizar los objetos se deben mostrar los valores de todos sus atributos
Página 16 de 22
Apartado 4.3.
Dado el siguiente esquema relacional, selecciona la respuesta correcta para cada una de las
siguientes preguntas.
Proveedores (idproveedor, nombreprov, domicilio, ciudad)
Piezas (idpieza, nombrepiez, color)
Proyectos (idproyecto, nomproy, duracion, ciudad)
Suministradores (idproveedor, idpieza, idproyecto, cantidad)
Las claves de cada tabla son las que se resaltan en negrita. La tabla “Suministradores” relaciona a
los proveedores que suministran ciertas cantidades de piezas a los proyectos.
4.3.1. ¿Cuál de las siguientes sentencias en SQL contestan a la pregunta: Obtener los idproveedores de los
proveedores que suministran la pieza 1 a algún proyecto en una cantidad mayor que la cantidad promedio
suministrada de la pieza 2 a ese proyecto?
a) Obtener los idpieza de las piezas suministradas tales que la cantidad promedio sea mayor que
100.
b) Obtener los idpieza de las piezas suministradas a algún proyecto tales que la cantidad promedio
suministrada de esa pieza a ese proyecto sea mayor que 100.
c) Obtener los idpieza de las piezas cuyo promedio de suministro sea mayor que 100.
d) La consulta no produce ninguno de los resultados anteriores o es errónea.
a) Obtener todas las parejas de idpieza tales que algún proveedor suministre las dos piezas
indicadas.
b) Obtener todas las parejas de idpieza distintas suministradas.
c) Obtener todas las parejas de idpieza suministradas, tales que la primera idpieza sea mayor que la
segunda.
d) La consulta no produce ninguno de los resultados anteriores o es errónea.
Página 17 de 22
Apartado 4.4.
Complete la tabla de subredes con las descripciones de las subredes, el valor decimal de todas
las subredes disponibles, la cantidad de hosts necesarios, la dirección de subred, la primera
dirección de host utilizable y la dirección de broadcast.
Página 18 de 22
Ejercicio 5
Apartado 5.1.
Completa el siguiente programa de modo que ordene el ArrayList personas (presente en el
método main) por el campo nota en orden descendente, haciendo uso del interface Comparator.
package ordenar;
public class Persona {
}
package ordenar;
import java.util.ArrayList;
import java.util.Collections;
}
}
Página 19 de 22
Apartado 5.2
Aunque los métodos get() y put() de Q son métodos sincronizados, nada impide que el productor
vaya más rápido que el consumidor, ni que el consumidor recoja el mismo valor de la cola dos
veces, por ejemplo el productor genera 1, el consumidor comienza y consume el mismo 1 varias
veces seguidas.
La forma correcta de escribir este programa es utilizar los métodos wait() y notify() para la
comunicación en ambos sentidos.
wait() indica al hilo que realiza la llamada que ha de abandonar el monitor y quedar suspendido
hasta que algún otro hilo entre en el mismo monitor y llame a notify()
notify() activa el primer hilo que llamó a wait() en el mismo objeto
Salida deseada:
Produce: 1
Consume: 1
Produce: 2
Consume: 2
….
Página 20 de 22
Apartado 5.3
Las claves de cada tabla son las que se resaltan en negrita. La tabla “Suministradores” relaciona a
los proveedores que suministran ciertas cantidades de piezas a los proyectos.
a) Obtener los idproyecto de los distintos proyectos a los cuales suministra piezas por lo
menos un proveedor que no esté en la misma ciudad.
b) Obtener los idpieza de las piezas de color rojo suministradas a algún proyecto tales que la
cantidad media sumnistrada al mismo sea mayor que 100.
c) Obtener los idproyecto de los proyectos donde se utilice al menos una de las piezas
suministradas por el proveedor “1”.
Página 21 de 22
Apartado 5.4
Página 22 de 22