Para simular una cola, la mejor estructura de datos es una tabla hash. b. Falso.
Una lista enlazada simple tiene complejidad O(N) en inserción y borrado en posiciones intermedias, al igual que el vector dinámico. a. Verdadero.
Los patrones de diseño son soluciones conocidas y pensadas para solucionar problemas muy específicos. b. Falso.
La relación de herencia se utiliza para especializar a un conjunto de clases. a. Verdadero.
Las estructuras de datos árbol son del tipo de acceso por clave, al igual que las matrices. b. Falso.
En una interfaz, todos sus métodos son abstractos. a. Verdadero.
Los vectores dinámicos siempre se encuentran almacenados en una zona contigua de memoria. b. Falso.
En el método clásico de desarrollo de software existen 5 fases: Análisis, Diseño, Implementación, Pruebas, Documentación. a. Verdadero.
La sobrecarga de un operador nos permite implementar el mismo operador (nombre y tipo de devolución) siempre y cuando los parámetros solicitados sean diferentes. a. Verdadero.
Gracias a la ligadura dinámica, Java permite la sobrecarga de operadores en las clases hijas. b. Falso.
En una clase A que hereda de otra clase, siempre podremos acceder de forma directa a los atributos definidos en la clase padre. b. Falso.
Una relación de asociación es un tipo de relación donde se añade el matiz semántico de que la clase de donde parte la relación representa el todo y las clases relacionadas las partes. b. Falso.
Un vector dinámico se caracteriza por ser muy eficiente en operaciones de búsqueda. b. Falso.
Las operaciones abstractas deben ser implementadas obligatoriamente por la clase padre. b. Falso.
Es necesario instanciar una clase para acceder a un atributo u operación estática de dicha clase. b. Falso.
Enero 2023
No es necesario instanciar una clase para acceder a un atributo u operación estática de dicha clase. a. Verdadero.
Las clases anidadas o amigas son aquellas que se definen dentro de otra clase. b. Falso.
Si queremos ejecutar código en paralelo, debemos utilizar otros lenguajes como C++ o Python. b. Falso.
Implementar un algoritmo mediante recursividad es mejor que con un método iterativo. b. Falso.
Una lista enlazada simple tiene complejidad O(N) en inserción y borrado en posiciones intermedias, al igual que el vector dinámico. a. Verdadero.
Se puede medir la eficiencia de un fragmento de código sin necesidad de ejecutarlo. a. Verdadero.
Hoy en día, en proyectos grandes, el mejor modelo para construir software es el modelo en cascada. b. Falso.
Los patrones de diseño son soluciones conocidas y pensadas para solucionar problemas muy específicos. b. Falso.
La relación de herencia se utiliza para especializar todavía más a un conjunto de clases. b. Falso.
Las estructuras de datos árbol son del tipo de acceso por clave, al igual que las matrices. b. Falso.
El algoritmo búsqueda binaria tiene complejidad O(log N) siempre y cuando los elementos estén ordenados. a. Verdadero.
En un método clásico existen un total de 6 fases que se deben realizar en el siguiente orden: Análisis, Diseño, Implementación, Pruebas, Documentación y Comercialización. b. Falso.
La sobrecarga de un operador nos permite implementar el mismo operador (nombre y tipo de devolución) siempre y cuando los parámetros solicitados sean diferentes. a. Verdadero.
Un algoritmo es más eficiente que otro si el tiempo de ejecución del peor caso tiene un orden de crecimiento menor que el segundo. a. Verdadero.
En Java podemos heredar de tantas clases abstractas puras como queramos. a. Verdadero.
La estructura de datos árbol es más eficiente que una tabla de dispersión en operaciones de búsqueda. b. Falso.
Si sólo se proporciona un constructor por copia a una clase, no se podrá instanciar un objeto en ningún caso. b. Falso.
Cualquier elemento insertado en una tabla de dispersión tiene una clave unívoca para identificarlo. a. Verdadero.
Gracias a la ligadura dinámica, Java permite la sobrecarga de operadores en las clases hijas. b. Falso.
Tenemos acceso a un atributo con visibilidad protegida de una clase siempre y cuando sea una clase hija o bien si el fragmento de código está en el mismo paquete que dicha clase. a. Verdadero.
Una relación de asociación es un tipo de relación donde se añade el matiz semántico de que la clase de donde parte la relación representa el todo y las clases relacionadas las partes. b. Falso.
A diferencia de un vector dinámico, el principal problema de las tablas de dispersión es que no pueden crecer, se debe establecer una cantidad lo suficientemente grande en función del tamaño del problema. a. Verdadero.
El siguiente código tiene una complejidad O(N): int n = 20000; for (int i = 0; i < 1; i++) for (int j = 0; i < n; j++) System.out.println("Examen\n");a. Verdadero.
En Java, los tipos nativos no se pueden utilizar directamente para almacenarlos como datos en las estructuras de datos: ArrayList, HashMap, etc. a. Verdadero.
El tiempo de ejecución de un programa depende del número de datos y el hardware donde se ejecuta. a. Verdadero.
Enero 2022
Un patrón es una solución particular a un problema concreto que no se puede generalizar. 2. Falso.
La abstracción funcional permite trabajar con algoritmos sin conocer detalles de implementación. 1. Verdadero.
No se pueden generar datos agregados o compuestos usando tipos primitivos. 2. Falso.
Los TDA se definen como la combinación de un tipo y un conjunto de reglas aplicables sobre dicho tipo. 1. Verdadero.
La independencia funcional tiene como objetivo conseguir la máxima cohesión y el mínimo acoplamiento posible. 1. Verdadero.
Las operaciones abstractas deben ser implementadas obligatoriamente en las subclases, aunque estas sean abstractas. 2. Falso.
En Java, los constructores pueden ser marcados como públicos o privados, pero no como protegidos. 2. Falso.
Una de las posibles funciones de la herencia es la extensión de funcionalidad de una clase. 1. Verdadero.
Actualmente, Java es el único lenguaje de programación orientada a objetos. 2. Falso.
La inserción/borrado en un vector es n2 porque implica reasignar la posición de los datos almacenados. 2. Falso.
Java permite declarar clases dentro de clases. 1. Verdadero.
Los nodos hoja de un árbol son aquellos que no tienen hijos. 1. Verdadero.
Para acceder a la funcionalidad de la clase padre se puede usar la palabra clave super. 1. Verdadero.
Una clase abstracta debe tener al menos una operación abstracta. 2. Falso.
La ligadura dinámica… 1. actúa en tiempo de ejecución permitiendo la llamada a la versión correcta de cada función.
Uno de los problemas de la recursividad es el desbordamiento de la pila en problemas muy grandes. 1. Verdadero.
La asociación es una relación que indica dependencia de las clases hijas de la clase padre. 2. Falso.
Los destructores son operaciones invocadas automáticamente justo después de la construcción del objeto para limpiar los datos innecesarios usados para construirlo. 2. Falso.
Es necesario ejecutar el algoritmo para conocer su eficiencia. 2. Falso.
Las tablas de dispersión pueden usar una función de dispersión, f(x), aleatoria, es decir, al mismo dato podría asignarle diferentes posiciones. 2. Falso.
No es posible redefinir la implementación de una operación heredada para adaptarla a las características de la clase descendiente. 2. Falso.
Estos O están ordenados de forma ascendente -> N, log N, N log N, N2. 2. Falso.
Los problemas implementados de forma recursiva deben tener uno y solo un caso base. 2. Falso.
Las técnicas de divide y vencerás son ideales para aplicar técnicas de paralelismo. 1. Verdadero.
Las etapas clásicas en la construcción del software son: 2. Análisis, diseño, implementación, pruebas y documentación.
Julio 2022
Los árboles, las tablas hash y las matrices son estructuras de datos del tipo acceso por clave. 2. Falso.
El paradigma de la programación orientada a objetos nos permite soluciones más seguras a cambio de una peor escalabilidad. 2. Falso.
Un algoritmo O(n) es más eficiente que otro algoritmo O(log n). 2. Falso.
Las etapas clásicas en la construcción de software son: Diseño, Análisis, Implementación, Pruebas y Documentación. 2. Falso.
Los constructores pueden ser públicos y protegidos, pero en ningún caso privados. 2. Falso.
Las operaciones abstractas deben ser implementadas obligatoriamente por la clase hija. 1. Verdadero.
En la estructura de árbol AVL, la operación de borrado es más ineficiente que la operación de búsqueda. 2. Falso.
En una relación de composición, el ciclo de vida de la clase “parte” es gestionada por la clase “todo”. 1. Verdadero.
El algoritmo de ordenación burbuja tiene una complejidad O(n²). 1. Verdadero.
Los TDA se definen como la combinación de un tipo y un conjunto de reglas aplicables sobre dicho tipo. 1. Verdadero.
En Java, al igual que en otros lenguajes, es necesario llamar al destructor para eliminar los objetos de una clase. 2. Falso.
La herencia se caracteriza por evitar redundancias y facilitar la reutilización de código. 1. Verdadero.
Los nodos raíz de un árbol no tienen hijos. 2. Falso.
Indica el tipo de orden del árbol. 2. Postorden.
La ligadura dinámica permite que objetos de una clase hija sean asignados a variables de la clase padre. 2. Falso.
La técnica de divide y vencerás se caracteriza por dividir un problema en diferentes bucles for. 2. Falso.
La inserción y borrado en las posiciones intermedias de un vector tiene coste O(n). 1. Verdadero.
El objetivo del polimorfismo es pasar de clases generales a otras más concretas. 2. Falso.
La recursividad siempre es más eficiente que una solución iterativa. 2. Falso.
Los vectores dinámicos pueden crecer, pero en ningún caso decrecer. 2. Falso.
Los miembros de clase protegidos son accesibles únicamente desde las clases hijas y el resto de clases del paquete. 1. Verdadero.
No es necesario ejecutar un algoritmo para conocer su eficiencia. 1. Verdadero.
Indica la complejidad de la operación borrado en una lista doblemente enlazada. 1. O(1).
Una operación de clase en Java siempre puede ser redefinida. 2. Falso.
En Java, una clase no puede hacer herencia múltiple. 1. Verdadero.
Ejercicios a Resolver
No es necesario instanciar una clase para acceder a un atributo u operación estática de dicha clase. a. Verdadero.
La independencia funcional tiene como objetivo conseguir la máxima cohesión y el máximo acoplamiento posible. b. Falso.
Los constructores pueden ser marcados como públicos, privados o protegidos. a. Verdadero.
Los nodos raíz de un árbol son aquellos que no tienen hijos. b. Falso.
La ligadura dinámica garantiza siempre la llamada a la versión correcta de cada función, con independencia del uso de conexiones polimorfas o no. b. Falso.
Uno de los principales problemas de la iteración y por lo que se utilizan las funciones recursivas es: a. El desbordamiento de pila en este tipo de soluciones.
Las listas enlazadas siempre se encuentran almacenadas en una zona contigua de memoria. b. Falso.
Los destructores son operaciones invocadas automáticamente justo después de la destrucción del objeto. a. Verdadero.
Es necesario ejecutar el algoritmo para conocer su eficiencia. b. Falso.
Las tablas de dispersión utilizan una función f(x) para asignar cada dato a una posición distinta. a. Verdadero.