Está en la página 1de 4

1.

Un programa escrito en lenguaje de programación Java, puede ejecutarse en cualquier


plataforma porque:
a. La programación en Java se deriva de C++.
b. La Máquina Virtual de Java (JVM) interpreta el programa para el sistema operativo nativo.
c. El compilador es idéntico al compilador de C++.
d. El API hace todo el trabajo.

Como ya se ha señalado, la plataforma Java es una excepción a la regla general de que un SO


es una plataforma de software. El lenguaje Java requiere de una máquina virtual en la que se
ejecuta todo el código que se escribe en el lenguaje. Esto permite que el mismo ejecutable
binario pueda ejecutarse en todos los sistemas, apoyado por el software Java, a través del
uso de una máquina virtual Java (JVM). Ejecutables de Java no se ejecutan de forma nativa
en el sistema operativo, es decir, ni de Windows, ni Linux ejecutan programas Java
directamente.

2. ¿En qué consiste la Programación Orientada a Objetos?

R/ Define una serie de conceptos y técnicas de programación para representar acciones o


cosas de la vida real, basadas en objetos.

3. ¿Cuál de las siguientes afirmaciones pueden ser consideradas como los 3 principales
conceptos de la POO?
a. Encapsulación, Sobrecarga y Sobreescritura.
b. Encapsulación, Herencia y Polimorfismo.
c. Polimorfismo, Herencia y Sobreescritura.
d. Herencia, Encapsulación, Enlace de tiempo de ejecución.
e. Encapsulación, Enlace dinámico y Herencia.

4. ¿Cuál es la diferencia entre una clase y un objeto?

R/ Las clases son estructuras que representan objetos del mundo real, tomando como
objetos a personas, lugares o cosas, y poseen propiedades (atributos) y comportamientos
(métodos). Mientras que un objeto es la instancia de una clase, que es lo que le da sentido a
esta.

5. ¿Cuál de las siguientes afirmaciones es una ventaja en la encapsulación en el diseño


orientado a objetos?
a. Los detalles internos de un objeto, pueden ser cambiados sin romper la compatibilidad
con el código que lo utiliza.
b. Asegura que un objeto es seguro en hilos.
c. Permite a un objeto correr más rápido.
d. Proporciona conmutación por error, cuando un objeto es implementado en un ambiente
distribuido.

La encapsulación es la forma de proteger nuestros datos dentro del sistema, estableciendo


básicamente los permisos o niveles de visibilidad o acceso de nuestros datos.
Se representa por 3 niveles:
Se puede acceder a todos los atributos o métodos de la
Público
clase
Se puede acceder a los atributos o métodos solo en la
Protegido
misma jerarquía de herencia
Solo se puede acceder a los atributos o métodos de la
Privado
clase en la que se encuentran
Con la Encapsulación mantenemos nuestros datos seguros, ya que podemos evitar que, por
ejemplo, se hagan modificaciones al estado o comportamiento de un objeto desde una clase
externa; una buena práctica, es trabajar con métodos setter y getter que permiten manipular
nuestros datos de forma segura.

6. Cuando una clase implementa una interfaz, se debe proveer el comportamiento para:
a. Dos métodos definidos en dicha interfaz.
b. Solo ciertos métodos definidos en dicha interfaz.
c. Cualquiera de los métodos de una clase.
d. Todos los métodos definidos en dicha interfaz.

La ventaja principal del uso de interfaces es que una clase interface puede ser implementada
por cualquier número de clases, permitiendo a cada clase compartir el interfaz de
programación sin tener que ser consciente de la implementación que hagan las otras clases
que implementen el interface.

7. ¿En qué se basa el polimorfismo?


a. En declarar métodos en una clase.
b. En crear clases y métodos en un programa.
c. En utilizar un mismo método para distintos objetos.
d. En utilizar un método para un solo objeto.

En POO, el polimorfismo se refiere a la posibilidad de definir clases diferentes que


tienen métodos o atributos denominados de forma idéntica, pero que se comportan de
manera distinta. Permite definir distintos comportamientos para un método dependiendo de
la clase sobre la que se realice la implementación.

8. ¿En qué consiste la Herencia?

R/ Es mediante la cual podemos obtener las características de las clases padre, heredando
sus atributos y métodos.
En java, solo se puede heredar desde una sola clase padre, y se representa mediante la
palabra extends.

9. ¿Qué significa sobrecargar (overload) un método?


a. Editarlo para modificar su comportamiento.
b. Cambiarle el nombre dejándolo con la misma funcionalidad.
c. Crear un método con el mismo nombre, pero diferentes argumentos.
d. Añadirle funcionalidades al método.

La sobrecarga de métodos es la creación de varios métodos con el mismo nombre, pero con
diferentes firmas (sus parámetros o argumentos) y definiciones.
Java utiliza el número y tipo de argumentos para seleccionar cuál definición de método
ejecutar.
Java diferencia los métodos sobrecargados con base en el número y tipo de argumentos que
tiene el método y no por el tipo que devuelve.

10. ¿En qué consiste la Sobreescritura de métodos?

R/ La Sobreescritura de métodos en java, se da cuando una subclase re-define o sobrescribe


un método de la superclase con sus mismas características (nombre, número y tipo de
argumentos).
Una subclase hereda todos los métodos de su superclase que son accesibles a dicha subclase,
a menos que la subclase sobrescriba los métodos. Tener en cuenta que no se puede
sobrescribir un método cuyo acceso sea final o static.
También podemos identificar un método sobrescrito cuando tiene la anotación @override,
esto es muy común encontrarlo cuando trabajamos con clases abstractas o interfaces.

11. ¿Cuál es la diferencia entre una clase abstracta y una interface?

R/ Las clases abstractas pueden tener o no implementaciones de los métodos miembros de


la clase, mientras que las interfaces no tienen ninguna implementación (clase
completamente abstracta), solo las declaraciones de los miembros que deben constituir la
clase que implemente dicha interfaz.
Los miembros de la interfaz deben ser públicos y sin implementación.

CLASE ABASTRACTA INTERFACE


Contiene tanto métodos ejecutables, como No tiene código de implementación
métodos abstractos Todos sus métodos son abstractos
Una clase solo puede extender de una única Una clase puede implementar n número de
clase abstracta interfaces
Puede tener variables de instancia, No puede tener variables de instancia o
constructores y cualquiera de los tipos de constructores, y solo puede tener métodos
visibilidad: public, private, protected, etc. públicos
*Un método abstracto es un método declarado, pero no implementado, es decir, es un método del que
solo se escribe su nombre, parámetros y tipo devuelto, pero no su código.

12. ¿Qué es SQL injection?

R/ Consiste en la inserción de código SQL por medio de los datos de entrada desde la parte
del cliente hacia la aplicación. Es decir, por medio de la inserción de este código, el atacante
puede modificar las consultas originales que debe realizar la aplicación y ejecutar otras
totalmente distintas, con la intención de acceder a la herramienta, obtener información de
alguna de las tablas o borrar los datos almacenados, entre otras muchas cosas.

El código SQL original y vulnerable es:


consulta := "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';"

Si el operador escribe un nombre, por ejemplo "Alicia", nada anormal sucederá; la aplicación
generaría una sentencia SQL similar a la siguiente, que es perfectamente correcta, en donde
se seleccionarían todos los registros con el nombre "Alicia" en la base de datos:
SELECT * FROM usuarios WHERE nombre = 'Alicia';

Pero si un operador malintencionado escribe como nombre de usuario a consultar:


Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%

, se generaría la siguiente consulta SQL, (el color verde es lo que pretende el programador,
el azul es el dato, y el rojo, el código SQL inyectado):

SELECT * FROM usuarios WHERE nombre = 'Alicia';


DROP TABLE usuarios;
SELECT * FROM datos WHERE nombre LIKE '%';

En la base de datos se ejecutaría la consulta en el orden dado, se seleccionarían todos los


registros con el nombre 'Alicia', se borraría la tabla 'usuarios' y, finalmente, se seleccionaría
toda la tabla "datos", que no debería estar disponible para los usuarios web comunes.
En resumen, cualquier dato de la base de datos puede quedar disponible para ser leído o
modificado por un usuario malintencionado.
Nótese por qué se llama "Inyección" SQL. Si se observa el código malicioso de color rojo, se
notará que está insertado en el medio del código bueno, el verde. Así, el código rojo ha sido
"inyectado" dentro del verde.
13. ¿Qué es Blind SQL injection?

R/ Traducido al español como “Ataque a ciegas por inyección de SQL”, se da cuando en


una página web no aparece ningún mensaje de error al ejecutar una sentencia SQL errónea,
por lo que el atacante va realizando pruebas hasta dar con el nombre de los campos o tablas
sobre los que podrá actuar.

14. ¿Cuál es la diferencia entre Map, HashTable, Hashmap, Treemap, ConcurrentHashMap y


LinkedHashMap?

R/ La Interface Map, nos permite representar una estructura de datos para almacenar pares
"clave/valor"; de tal manera que para una clave, solamente corresponde un valor.
Debido a que Map es una interface, se deben implementar sus métodos, y para esto Java
tiene implementadas varias clases, y entre las más importantes se encuentran:
a. HashMap: Los elementos que inserta en el Map, no tendrán un orden específico. No
aceptan claves duplicadas, ni valores nulos.
b. TreeMap: Ordena el Map de forma "natural". Por ejemplo, si la clave son valores enteros,
los ordena de menor a mayor.
c. LinkedHashMap: Inserta en el Map los elementos en el orden en el que se van insertando.
Como nos dimos cuenta, la principal diferencia entre estas clases, es la forma o el orden en
el que se guardan los valores en el Map.
Existen otros tipos de estructuras de datos, tales como:
HashTable: es una estructura que utiliza una función hash para identificar datos mediante
una llave o clave. La función hash transforma una llave a un valor índice de un arreglo de
elementos.
ConcurrentHashMap: Permite el acceso concurrente al mapa. Parte del mapa denominado
Segmento sólo se bloquea al agregar o actualizar el mapa. Por lo tanto, ConcurrentHashMap
permite que los subprocesos concurrentes lean el valor simultáneamente sin ningún tipo de
bloqueo. Esta estructura de datos se introdujo para mejorar el rendimiento.

También podría gustarte