Java Flashcards

Cultura Java

1
Q

Java vs C++

A

Java es un lenguaje que hace una compilación intermedia que interpreta un interprete (jvm). C++ Se compilar para un SO y una arquitectura de micro concreta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Que es JRE

A

Java Runtime Enviroment = jvm + Librerias básicas. Ejecuta el codigo bytecode compilado java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cómo se compone una clase java

A

public class Proyecto{
//Atributos
private String estado;
private String descripción;

     //Constructor
      public Proyecto(String descripcion){
              this.estado = "Iniciado";
              this.descripcion=descripcion;
      }
      
      //Métodos
      public String getDescripcion (){
                  return this.descripcion;
       }

      public void setDescripcion(String descripcion){
                  this.descripcion = descripcion;
       } }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Que es Bytecode

A

Código que se genera al compilar código java. Es un código intermedio que necesita una máquina virtual para ser ejecutado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qué hace el comando ‘javac’

A

Compila el codigo java y lo convierte a bycode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qué es un fichero .java

A

Código fuente java. Ficheros de texto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qué es un fichero .class

A

Código compilado java. Bytecode que se puede ejecutar en la jvm.

Generamos .class con ‘javac’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qué es un fichero .jar

A

Empaquetado físico de ficheros .class, y algun fichero más, en un fichero, de tal manera que se puede ejecutar en la jvm.

Se empaquetan con la herramienta jar.

Hasta la versión 1.8 era la única manera de empaquetar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Que son Java Modules

A

Agrupan físicamente clases a partir de la versión 1.9 de java. Divide los jar por funcionalidad a modo de librerias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qué es jdk

A

Java Developer Kit = Compilador + depurador + generador de código. javac + jre + librerias

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Que hace el comando java

A

Ejecuta el programa en el interprete el codigo java. $java App.class

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Que hace jshell

A

Interprete ReadEvaluatePrintLoop - REPL de comandos interactivo. A partir de Java9

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Que hace javadoc

A

Generacion de documentacion html a partir de los fuentes.

/** Estos comentarios son de documentación
*
*@param
*@return
*@throws
*@author
*@since
*@see
*/

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que hace jar

A

Empaquetar clases compiladas, a veces con algun fichero mas como xml, etc

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Que hace jarsinger

A

Firmar y verificar ficheros jar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Que hace keytool

A

Criptografia. Es un programa de utilidad con varias finalidades que se incluye en el JRE de Java 2 Versi n 1.4 y se distribuye con Host On-Demand para gestionar claves y certificados

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Que hace wsimport

A

Generacion de clases automaticas para los clientes de web services de tipo SOAP. Herramienta mágica de Howarts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Que hace xjc

A

Compilador que genera clases java a partir de un XSD y al contrario (Marshall y Unmarshall). Herramienta mágica de Howarts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Que hace rmic

A

Compilador que genera clases java, stubs en cliente y skeletons en servidor, para su comunicacion C/S en programacion distribuida

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Que hace rmiregistry

A

Servicio de nombres para registrar objetos distribuidos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Que hace javap

A

Desensamblador de ficheros .class

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Que hace jdb

A

Depurador java

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Que hace jdeps

A

Analizador de dependencias, de clases o paquetes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Que hace jm y jconsole

A

Herramientas de monitorización de la JVM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Que es JIT

A

Just-In-Time: traduce a código nativo con esta pieza situada en la jvm

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Qué es POJO

A

Plain Old Java Objects: Un POJO es simple y llanamente una clase Java clásica que define un objeto de negocio. Nacieron con Hibernate y con la persistencia mediante clases java y no con dificiles interfaces. Ej: Tabla Libro <—> Clase Libro

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Señale la respuesta correcta sobre los tipos de controladores (drivers) JDBC:

a) Los drivers tipo 1 utilizan Java puro para implementar un protocolo de red de proveedores del Sistema Gestor de Base de Datos.

b) os drivers tipo 3 utiizan un protocolo de red y middleware para comunicarse con un servidor.

c) Según la tecnología utilizada para conectarse a la base de datos, los drivers JDBC se categorizan en 3 tipos diferentes.

d) Los drivers tipo 2 son controladores “puente”, que utilizan otra tecnología (por ejemplo ODBC) para comunicarse con la base de datos

A

Mus

b) os drivers tipo 3 utiizan un protocolo de red y middleware para comunicarse con un servidor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Indique cuál de las siguientes NO es una librería de Java proporcionada por la Apache Foundation:

a) Log4J

b) httpclient

c) commons-io

d) Mockete

A

d) Mockete

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

En Java SE 17, ¿con qué visibilidad se deben generar los atributos de la clase Data Access Object Solicitudes si se quiere tener acceso directamente desde cualquier otro objeto, sin mediación de métodos?

a) Se usará el modificador “public”.

b) Se usará el modificador “protected”.

e) No se usará ningún modificador.

d) Se usará el modificador “private”.

A

a) Se usará el modificador “public”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

En Java SE 17, ¿cuál de los siguientes tipos de colección no admite duplicados?

a) List

b) Stack

c) Collection

d) Set

A

d) Set

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Qué elementos componen la máquina virtual java (JVM)

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

En nuestra aplicación Java, ¿qué paquetes usariamos para establecer la conexión a la base de datos de NOTIFICACION?

a) java.database

b) javax.naming y javax.sql

c) javax.io y javax.servlet

d) javax serviet

A

b) javax.naming y javax.sql

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Se quiere desarrollar un microservicio para que el personal funcionario pueda consultar el estado de una notificación
enviada. ¿Qué especificación de la comunidad, alineada con Jakarta EE Core Profile, es la indicada para desarrollarlo?

a) Jakarta Authentication

b) Jakarta Batch

c) Microprofile

d) Jakarta Connectors

A

c) Microprofile

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Para que sirve la ‘Stack’ en Java

A

Es una pila de ejecución. Vamos apilando el estado de la ejecución de ‘métodos’ cuando estos llaman a otros, conservando variables locales, parametros y dirección de retorno de la funciona a la que vamos a llamar.

NOTA: Cuidado con la recursividad. Stack overflow

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

En Java, una clase declarada como ‘abstract”

a) Puede no estar implementada o estarlo de manera incompleta.

b) Puede ser instanciada.

c) No puede ser extendida por subclases.

d) No existe el modificador abstract en Java.

A

a) Puede no estar implementada o estarlo de manera incompleta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

En la declaración de una clase en java, ¿mediante qué cláusula es posible definir un listado de uno o varios interfaces
para la clase en cuestión?

a) Mediante la cláusula ‘interfaces’.

b) Mediante la cláusula ‘declares’.

c) Mediante la clausula “implements’.

d) En Java no es posible declarar una clase con más de un interface.

A

c) Mediante la clausula “implements’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

En JAVA, siendo x=6 e y=3 (ambas variables de tipo int), la operación x^y da como resultado:

a) 216

b) 63

c) 3

d) 5

A

d) 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Indique cuál de las siguientes opciones corresponde a una API de Java para el procesamiento de documentos en formato XML.

a) JNA

b) StAX

c) JNI

d) JPax

A

b) StAX

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Qué es el HEAP en Java

A

Zona de la memoria donde se almacenan los objetos que se crean dinamicamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

En JAVA podemos utilizar el interface PreparedStatement para:

a) Inicializar las variables locales del programa con valores preestablecidos.

b) Preparar los valores que introduciremos en un archivo de texto externo al programa.

c) Permitir ejecutar muchas veces una sentencia SQL.

d) Administrar el consumo de memoria que utilizan los objetos creados.

A

c) Permitir ejecutar muchas veces una sentencia SQL

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Le piden opinión porque en uno de los módulos Java se detecta un bucle que concatena una cantidad muy elevada de cadenas de texto, penalizando el rendimiento. ¿Qué clase de java.lang habría que utilizar para mejorar la eficiencia?

a) StringConcat

b) StringConstruct

c) StringBuilder

d) StringCreator

A

c) StringBuilder

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

¿Cómo debe definir el equipo de desarrollo en Java una clase llamada Ejercicio si quiere impedir que se pueda heredar
de la misma?

a) closed class Ejercicio

b) final class Ejercicio

c) private class Ejercicio

d) immutable class Ejercicio

A

b) final class Ejercicio

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Donde se almacenan los métodos en la JVM de Java

A

En el área reservada para ello y no en en HEAP. En el heap solo los objetos con los valores de los atributos y los métodos que son los mismos para todos se almacenan en en Method Area

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

¿Cuál de las siguientes opciones NO representa un tipo de datos primitivo de Java?

a) short

b) simple.

c) long

d) double

A

b) simple.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

En el contexto de Java EE (ahora Jakarta EE), ¿en qué paquete se encuentran las clases e interfaces de Enterprise
JavaBeans?

a) java.ejb2

b) javax.ejb

c) javax.persistence.ejb

d) java.transaction.ejb

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

Para que sirve ‘this’ dentro de una clase Java

A

Es el indicador de un atributo / metodo del propio objeto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

En Java, una variable definida con el modificador de acceso protected, es accesible:

a) Desde cualquier clase.

b) Unicamente desde la clase en la que se ha definido

c) Únicamente desde las clases que están dentro del mismo paquete.

d) Desde la clase en la que se ha definido, sus subclases, y desde las clases dentro del mismo paquete.

A

d) Desde la clase en la que se ha definido, sus subclases, y desde las clases dentro del mismo paquete.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

Spring Boot es:

a) Una plataforma de desarrollo móvil basada en Javascript que permite desarrollo de apps multiplataforma.

b) Una plataforma que permite el desarrollo de aplicaciones web “autocontenidas” que llevan embebido el contenedor de servlets.

c) Una pletaforma que permite, entre otras cosas, la conexión lógica entre bases de datos relacionales clásicas y bases de datos NOSQL.

d) Una plataforma que permite automatizar las pruebas de sofware para aplicaciones con lenguaje de programación JAVA.

A

b) Una plataforma que permite el desarrollo de aplicaciones web “autocontenidas” que llevan embebido el contenedor de servlets.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

En Java, el operador ‘==’ es:

a) Un operador arigmetico

b) Un operador relacional.

c) Un operador de asignacion

d) Un operador a nivel de bit.

A

c) Un operador de asignacion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

En los módulos desarrollados en JAVA, se plantea como nuevo requisito realizar el registro de trazas a un fichero de logs. Indique qué librería podría utilizar en Java para ello:

a) log4j

b) logTrack

c) track4j

d) Nlog

A

a) log4j

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

La gestión de errores y excepciones se considera una tarea fundamental. De entre las siguientes, ¿cuál es la clase de la que heredan todas las excepciones Java?

a) Eror

b) Exception

c) Throwable

d) RuntimeException

A

c) Throwable

52
Q

Indique qué número hay que pasar como parámetro a la siguiente función Java para que produzca como salida el número 8:

int secuencia(int n){
if(n==1 || n==2) return1 ;
else return secuencia(n-1) + secuencia(n-2);
}

a) 4

b) 5

c) 6

d) 8

A

c) 6

53
Q

En el lenguaje Java, la clase raíz de toda la jerarquia de clases es:

a) Main

b) Bundle

c) Object

d) Super

A

c) Object

54
Q

JavaDB es:

a) La distribución de Oracle para la base de datos de código abierto Apache Derby.

b) Una API de acceso a bases de datos no relacionales en Java.

c) La distribución gratuita de la base de datos Oracle 11g.

d) Una versión de PostgreSQL configurada para la plataforma Java SE.

A

a) La distribución de Oracle para la base de datos de código abierto Apache Derby.

55
Q

Señale cuál de las siguientes herramientas sirve para realizar pruebas de estrés en Java:

a) Jmeter

b) SonarQube

c) Junit

d) Piwik

A

a) Jmeter

56
Q

Una diferencia entre las APIs de Java, SAX y JDOM, es:

a) SAX permite acceso directo a los elementos del XML, con JDOM el acceso es secuencial.

b) SAX requiere más memoria para procesar el documento XML que JDOM.

c) JDOM es recomendable para la edición o cambios en documentos XML, SAX para la lectura de documentos XML.

d) JDOM lanza un evento cuando encuentra un elemento en el documento XML, SAX no lanza eventos,

A
57
Q

Para la construcción de servicios web en Java podría usar la API Java denominada:

a) JPA

b) Java DOM

c) SOAP

d) JAX-WS

A

d) JAX-WS

58
Q

Para la generación de documentación de APIs de Java en el proyecto se podría usar:

a) Nagios

b) Javadoc

c) Alfresco

d) Todas son correctas.

A
59
Q

Respecto al siguiente código Java, ¿cuál es sería la afirmación correcta?

Public class Peticion (
public static void main(string[] args) (
String opcion=”anulada”;
switch (opcion) (
case “anulada”:
System.out.println(“opcién anulada”);
break;
case “cursada”:
System.out.printin (“opción cursada”);
break;
}
}

a) Este código funcionaría en el nuevo sistema y en el antiguo.

b) Se produciría un error de compilación si tratáramos de ejecutar en el antiguo sistema.

c) La salida sería: la cadena “opción anulada” para el antiguo sistema.

d) Ninguna de las anteriores.

A
60
Q

El código Java anterior, con el titulo de “Funcionalidad 1”, pertenece al sistema antiguo, en el nuevo sistema podría sustituir las líneas 5, 6 y 7 por el siguiente código con la misma funcionalidad:

a) Arrays.asList(3,0,1,8,7,2,5,4,9,6).forEach(numero-> System.out.print(numero + “ “));

b) Arrays.asist(3,0,1,8,7,2,5,4,9,6).forEach(System.out.print (numero + “”));

c) Arrays.asList(3,0,1,8,7,2,5,4,9,6).for (numero-> System.out.print (numero + “ “));

d) Arrays.asList(3,0,1,8,7,2,5,4,9,6).forEach(n-> System.out.print (numero + “ “));

A

a) Arrays.asList(3,0,1,8,7,2,5,4,9,6).forEach(numero-> System.out.print(numero + “ “));

61
Q

De acuerdo al código Java mostrado anteriormente con el titulo “Funcionalidad 2”, la ejecución del main de las líneas 10 a la 15, dará como resultado:

a) 2 8 22 52

b) 0 4 14 32

c) 0 4 14

d) Da un error de compilación.

A

d) Da un error de compilación.

62
Q

¿Cómo puedo definir el classpath a la hora de ejecutar una aplicación Java?

A

1.- Variable de entorno
2.- Al lanzar la aplicacion. java -classpath /lib/java/itext.jar
3.- En el fichero METAA-INF/Manifest.mf en el campo CLASS-PATH:

63
Q

Es posible crear más hilos de los predefinidos por el propio Java

A

Si, con la clase Thead. Normalmete ne apps de escritorio. En las apps web se suele hacer automaticamente.

64
Q

¿Que es el Garbage Collector?

A

Un hilo de poca prioridad que va liberando el HEAP de objetos desreferenciados.

65
Q

Que es herencia

A

Es un mecanismo de especialización. Cogemos atributos y métodos de la clase padre

public class clasePadre{
String nombre;
String apellido;

     public String nombreCompleto (){
               return this.nombre + " " + this.apellido;
     } }

public class claseHija extends clasePadre{
String segundoApellido;

     public String nombreCompletoConSegundoApellido (){
               return super.nombre + " " + super.apellido+ " " + this.segundoApellido;
     } }
66
Q

Que es sobrecarga

A

Mismo nombre de métodos pero con distintos parametros.

public class claseSobrecarga{
int operador1;
int operador2;

     public int suma (){
               return operador1 + operador2;
     }

     public int suma (int operador3){
               return operador1 + operador2 + operador3;
     }

     public int suma (int operador3, int operador4){
               return operador1 + operador2 + operador3 + operador4;
     }

}

67
Q

Ques es sobreescritura

A

Consiste en sobreescribir un método de la clase padre o de la interfaz que se implemente.

public class clasePadre{
String nombre;
String apellido;

     public String nombreCompleto (){
               return this.nombre + " " + this.apellido;
     } }

public class claseHija extends clasePadre{
String segundoApellido;

    @override
     public String nombreCompleto (){
               return super.nombre + " " + super.apellido+ " " + this.segundoApellido;
     }

}

68
Q

Qué es polimorfismo

A

Busca código genérico a varias clases concretas, con el objetivo de mejorar los mantenimientos, con el resultado de poder tener llamadas iguales con implementaciones diferentes según el caso concreto.

public interface vehiculo {
public int getNumeroDeRuedas ();
}

public class Coche implements Vehiculo {
int numeroRuedas;

   public int getNumeroDeRuedas (){
          return this.numeroRuedas;
   } }

public class Camion implements vehiculo {
int numeroRuedasCabeza;
int numeroRuedasRemolque;

   public int getNumeroDeRuedas (){
          return this.numeroRuedasCabeza + this.numeroRuedasRemolque;
   } }

……

public static void main(String args[]){

    Coche c1 = new Coche();
    Camion cm1 = new Camion();

    calcularPeaje(c1);
    calcularPeaje(cm1); }

//Esta función no cambia independientemente del tipo de vehículo
Public float calcularPeaje (Vehiculo v){
return v.getNumeroDeRuedas() * 12.5;
}

69
Q

Qué son y para que sirven los paquetes

A

Estructuras lógicas, que se traduciran en directorios, para organizar nuestras clases. Esto tiene importancia para los accesos a las clases (public, private, protected).

Cuando usas una clase que esté dentro del mismo paquete NO hace falta importarla, si trabajas en otro paquete SI hace falta importarla.

70
Q

Para que sirve la palabra static

A

Para marcar que un método no es de instancia sino de clase. La llamada al método se realizará con el nombre de la clase.

public class PruebaStatic{

     public static int metodoPrueba(){
               return 10;
      } }

public static void main(String args[]){

     PruebaStatic.metodoPrueba(); }
71
Q

Qué son las anotaciones en java

A

Elemento de programación

72
Q

Enum, creación y manejo

A

public enum TipoColor{
ROJO, VERDE, AMARILLO, AZUL
}

………….

TipoColor color = TipoColor.AZUL;

73
Q

@override

A

Indica que el método está sobreescrito

74
Q

Ques es una interface

A

Estructura que define signaturas de metodos abstractos de tal manera que las clases que implementen esta interface tengan que definirlos.

//Un interface no tien¡e atributos, es una estructura puramente funcional
//Un interface también es una especie de tipo de dato
//Otra forma de ver un interface es que es un contrato funcional (obligas a ciertas clases a cumplirlo)–>API

public interface IFactura{
public void abono parcial (float cantidad);
public void abono parcial (float cantidad, String fechaEfecto)
}

public interface FacturaEmpresa implements IFactura{
public void abono parcial (float cantidad){
………….
}
public void abono parcial (float cantidad, String fechaEfecto){
…………….
}
}

75
Q

Cómo haria una jerarquía donde pueda tener todos los tipos de factura que quiera y no tenga que tocar la llamada a negocio

A

public interface IFactura{
public void abonoParcial (float cantidad);
public void abonoParcial (float cantidad, String fechaEfecto)
}

public abstract class FacturaAbstract implements IFactura{
Date fechaFactura;
String descripcion;

      public abstract void abonoParcial (float cantidad);
      public abstract void abonoParcial (float cantidad, String fechaEfecto);

       public void metodoImplementado(){
                     //Implementación
       } }

public interface FacturaNormal extends FacturaAbstract {
@override
public void abonoParcial (float cantidad){
………….
}
@override
public void abonoParcial (float cantidad, String fechaEfecto){
…………….
}
}

public interface FacturaEmpresa extends FacturaAbstract {
@override
public void abonoParcial (float cantidad){
………….
}
@override
public void abonoParcial (float cantidad, String fechaEfecto){
…………….
}
}

public interface FacturaVIP extends FacturaAbstract {
@override
public void abonoParcial (float cantidad){
………….
}
@override
public void abonoParcial (float cantidad, String fechaEfecto){
…………….
}
}

//NEGOCIO
public class FacturaService {
public void realizarPagos(float cantidad, IFactura factura){
factura.abonoParcial(cantidad);
}
}

//APLICACION
public class App{
public static void main(String[] args){
FacturaEmpresa fe1 = new FacturaEmpresa();
FacturaNormal fn1 = new FacturaNormal();

              //Llamamos al mismo método con dos clases distintas pero que 
              //implementan la misma interfaz
              FacturaService serviciosFacturacion = new FacturaService();
               serviciosFacturacion.realizarPagos(10, fe1);
               serviciosFacturacion.realizarPagos(10, fn1);
    } }
76
Q

Qué es una clase abstracta

A

Clase que no se puede instanciar pero que sirve como padre para otras clases hijas. El sentido vital es “organizacion” de una jerarquia de clases

Una clase tiene que ser abstract si alguno de su metodos son abstractos.

Se pueden implementar métodos al contrario que en interfaces, de tal manera que podamos tener metodos implementados y abstractos

public abstract class FacturaAbstract implements IFactura{
Date fechaFactura;
String descripcion;

      public abstract void abono parcial (float cantidad);
      public abstract void abono parcial (float cantidad, String fechaEfecto);

       public void metodoImplementado(){
                     //Implementación
       } }

public interface FacturaNormal extends FacturaAbstract {
@override
public void abono parcial (float cantidad){
………….
}
@override
public void abono parcial (float cantidad, String fechaEfecto){
…………….
}
}

77
Q

Operador instanceof

A

Booleano, devuelve true si el objeto es de la instancia por la que se pregutna

if (atributo instanceof String) ….

78
Q

Palabra reservada final

A

En clases, marcar que no queremos que haya clases hijas.

En métodos no queremos que se hereden.

En atributos, que no se pueden modificar. Si van con static podemos hablar de constantes.

public final class NombreClase()
public final String nombreMetodo()
public static final String NOMBRE_ATRIBUTO

79
Q

Interfaces a partir de java 8

A

Podemos tener implementacion de métodos default y métodos Static .

DEFAULT

public interface Vehicle {

String getBrand();

String speedUp();

String slowDown();

default String turnAlarmOn() {
    return "Turning the vehicle alarm on.";
}

default String turnAlarmOff() {
    return "Turning the vehicle alarm off.";
} } ////////// public class Car implements Vehicle {

private String brand;

// constructors/getters

@Override
public String getBrand() {
    return brand;
}

@Override
public String speedUp() {
    return "The car is speeding up.";
}

@Override
public String slowDown() {
    return "The car is slowing down.";
} } ///////////////// public static void main(String[] args) { 
Vehicle car = new Car("BMW");
System.out.println(car.getBrand());
System.out.println(car.speedUp());
System.out.println(car.slowDown());
System.out.println(car.turnAlarmOn());
System.out.println(car.turnAlarmOff()); }

STATIC

public interface Vehicle {

// regular / default interface methods

static int getHorsePower(int rpm, int torque) {
    return (rpm * torque) / 5252;
} } /////////////// Vehicle.getHorsePower(2500, 480));
80
Q

Para que sirve la palabra reservada ‘native’

A

Si declaramos un método con ‘native’ java te permite ejecutar código nativo (c / c++ …..). Esto quiero decir que nuestro código hace uso de librerias o dll que no son java y hace que nuestro código no sea portable.

public native String SeerDelScanner(){
…..
}

81
Q

Para que sirve la interfaz ‘Serializable’

A

Interfaz que se implementa para hacer guardados secuenciales a disco.

82
Q

Pa que sirve la palabra reservada ‘transient’

A

Hace que el atributo que lo lleve no sea serializado ni guardado.

…….
private String login;
private transient String password;
……….

83
Q

Para que nos sirve la palabra reservada ‘syncronize’

A

Cuando marcamos un método con ‘syncronize’ significa qeu no puede haber varios hilos ejecutando el método a la vez.

84
Q

Acesos, public, protected, private y default

A

Default: acceso dentro del mismo paquete
Protected: accesible por las clases hijas y por las clases dentro del mismo paquete.
Public: se puede acceder desde cualquier sitio
Private: solo se tiene acceso desde la misma clase.

85
Q

Clase Object

A

Clase de la que heredan todos los objetos en java.

Método toString lo tienen todas las clases y en ocasiones cuando lo querremos hacer más legible lo sobreescribimos (@override)

86
Q

Clase Math

A

Clase static de utilidades matematicas y arigmeticas.
NOTA: en java no hay operador de exponente, se utiliza el método pow(double a, double b) de la clase Math

87
Q

Operadores a nivel de bit

A

’|’ Or a nivel de bits. Solo da 0 cuando los dos son 0
‘&’ And a nivel de bits. Solo da 1 cuando los dos son 1
‘^’ XOr a nivel de bits. Da 0 cuando los dos son iguales.
‘~’ Not a nivel de bits. Invierte los bits.
‘«’ Desplazamiento lógico a la izquierda. Mantiene signo
‘»’ Desplazamiento lógico a la izquierda. Mantiene signo.
‘»>’ Desplazamiento lógico a la izquierda sin signo.

Or a nivel de bits. Solo da 0 cuando los dos son 0.

88
Q

Como se usa la clase Thead

A

Hacemos un hijo de Thread y sobreescribimos el método run()

89
Q

Cómo se usa la interfaz Runnable

A

Implementamos la interfaz Runnable y sobreescribimos el método run()

90
Q

Relacionado con hilos. Todo lo que sepas

A
  • Thread (calse) –> método run
  • Runnable (interface) –>
  • start() método de la clase Thread para lanzar/ejecutar el hilo
  • syncronized (esto es como el nivel de aislamiento serializable en transacciones) no se puede ejecutar concurrentemente, bloquea hasta que un hilo haya acabado.
  • wait(), notify() –> con esto bloqueamos y despertamos a los hijos a nuestra voluntad.
91
Q

Clase System

A

Clase de utilidades de salida / entrada por pantalla.

92
Q

El paquete java.sql (API JDBC)

A

*Driver: driver propio de la bas ede datos concreta.
*Connection: Cuando me conecto a la BD
*Statement: Sentencias que ejecutamos sobre la BD
*Resultset/ResulsetMetada: Conjunto de datos devueltos por la BD

javax.sql –> DataSource (interface) Se pone por encima de Driver para gestionar las conexionnes de tal manera que cuando se pida una nueva y ya estemos en el maximo pone la petición en espera.

93
Q

DateFormat

A

A traves de SimpleDateFormat y los metodos:
parse(String) –> Date
format(Date) –> String

94
Q

El paquete java.util

A

Calendar/Date
Scanner
StringTokenizer
Timer/TimerTask –> schedule(TimerTask, Date)
UUID –> generación de identificadores únicos

java.util.logging
java.util.jar
java.util.zip
java.util.regex

95
Q

El paquete javax.xml

A

Manejo de documentos XML

javax.xml.parsers
* DocumentBuilder –>DOM
* SAXParser —> SAX

Xml de servicios web
javax.xml.ws –>Endpoint –> publish()

96
Q

Paquete javax.jws

A

Manejo de servicios web
Webservice —> anotaciones
WebMethod—> anotaciones

97
Q

Paquete java.io

A

Paquete para manejor de entrada y salida de ficheros

InputStream/ Readers
OutputStream / Writers
File
Console
Serializable

98
Q

Interfaz Collection

A
  • add( E e )
  • add( Collection<E> e )</E>
  • contains(Object o)
  • isEmpty()
  • size() –> ojo con los arrays de tipos primitivos que es con la propiedad length

//INTERFACES QUE IMPLEMENTAN COLLECTION
*List –> duplicados, add(index, value), get(index)
*Queue–> FIFO, peek()/poll() (no elimina/si elimina)
*Set—> no duplicados, contains(Obj o)

//OBJETOS
*Stack–>push(obj item), pop()/peek() (recupera/solo mira), empty()

NOTA: El tamaño de la cadenas se obtiene con el metodo cadena.length()

99
Q

Interface Map

A

//METODOS
* get (obj clave)
* put (obj clave, obj valor)

//CLASES
*HashMap –> null y no synchronize
*HashTable–> no null y synchronize

100
Q

Como se estructuran las excepciones en Java

A

Las que heredan de Error: no se pueden capturar, son errores que no deberían producirse.

Las que heredan de Exception (checked), necesitan ser capturadas y tratadas

Las que heredan RuntimeException (unchecked): no necesitan ser declaradas (NullPointerException), no te obliga a Throws ni a bloque try/catch, pero si lo pones puedes capturarlas.

101
Q

Cómo se gestionan las excepciones en java

A
  • throw –> lanza una excepción desde un punto del código
  • thorws –> indica que el método puede lanzar una excepción

public void metodoNegocio() throws NegocioException
{
…….
throw new NegocioException(“Texto de la excepcion de negocio”)
}

try{
//Bloque de código que puede producir la excepción
}catch (NegocioException ne){
//Lo que hacemos cuando se produce la excepción
}finally{
// Lo voy a hacer tenga o no tenga excepción
}

102
Q

Entornos de desarrollo java (IDE)

A

Eclipse
IntelliJ
NetBeans

103
Q

Herramientas de automatización Java

A

Ant
Maven
Gradle (build.gradle en Groovy on Kotlin DSL)
Ivy
Jenkins

104
Q

JDK’s que existen

A

OpenJDK
Amazon Corretto
IBM JDK

105
Q

Librerias Java

A
  • iText,PDFBox –> Generacion de PDF’s
  • BouncyCastle –> Criptografia
  • Log4j, Logback, SLF4J,… –> Logging
  • Xerces, Xalan, Woodstox y Apache FOP –> Parsers XML y Procesors XSL
  • JUnit+Mockito y JMeter –> Pruebas unitarias y de carga
  • Apache Commons (lang,dbcp,crypto,fileupload,io,codec,etc) y Guava de Google –> Proposito general
  • Apache HttpComponents (HttpClient) –> Peticiones http a bajo nivel (En Java 11 ya existe un equivalente en java.net.http.HttpClient)
  • Gson y Jackson –> manejo de información en formato JSON
  • Apache POI –> manejo de documentos de Office
  • Apache Tika. Deteccion y extraccion de contenido de multitud de formatos
  • Pentaho Kettle –> ETL para extraccion de información, transformación y carga de ficheros
106
Q

Relación entre una clase y un interface

A

Es una relación de implementación, mediante la palabra reservada implemetns.

NOTA: Una clase puede implemetar varios interfaces.
NOTA: Un interface “Funciona” como un tipo
NOTA: Un interface es un contrato funcional que debe de cumplir la clase
NOTA: Un interface puede extender a otro interface, extends
NOTA: Un interface (java 8+) puede tener métodos CON CODIGO (default y static)

107
Q

Uso de la palabra reservada final y static

A

a) final
- En una clase: impedir que se pueda heredar dicha clase hacia abajo. Si que puedes tener padres
- En un atributo: No puede modificarse.
- En un método: no puede sobreescribirse en las clases hijas

b) static
- En una clase: una clase estática es aquella que no puede ser instanciada, y todos sus miembros deben ser estáticos
- En un atributo: Define atributo de clase. Acceso mediante la clase y no mediante objeto (NombreClase.nombreAtributo)
- En un método: Define método de clase. Acceso mediante la clase y no mediante objeto (NombreClase.nombreMetodo() )

NOTA: Para poderlos usar no hace falta instanciar ningún objeto
NOTA: En una clase tu puedes tener miembros estaticos y no estaticos
NOTA: En un método static de una clase no puede usar/acceder/ver atributos no-estaticos
NOTA: El uso del final + static en Java nos sirve para definir constantes

108
Q

Modificador de acceso ‘protected’ … clases que pueden acceder a dichos miembros

A
  • Desde propia clase
  • Desde los hijos de la clase (estén donde estén a nivel de paquetes)
  • Desde cualqueir clase del mismo paquete
109
Q

¿Podemos añadir texto a un objeto de la clase String?

A

Nope, porqu elos ojetos de la clase String son ‘inmutables’
NOTA: Las cadenas variables serian StringBuffer y StringBuilder

110
Q

Uso de la palabra reservada synchronized

A

En un método lo que provoca es que los distintos hilos de ejecución entren de uno en uno.
NOTA: a esto se le llama thead–safe

111
Q

Diferencias entre un Hastable y un ArrayList

A

Hashtable: es un tipo ‘Map’ (aquí los objetos se ‘colocan’ en funcion de una clave)
ArrayList: es un tipo de ‘List’ (aquí los objetos tiene un indice dentro de la secuencia/conjunto)

112
Q

¿Cuál es la clase base para las excepciones y los errores?

A

Throwable

113
Q

Nombre de dos librerias para generar ficheros de log

A

Log4j, logback

114
Q

¿Que es @override y cual es su utilidad?

A

Anotación que nos sirve para decirle al compilador que estamos intentando sobreescribir un método de nuestra clase padre. No es obligatorio ponerla para hacer dicha sobreescritura

115
Q

¿Cuál es la herramienta para empaquetar los ficheros resultantes de la compilación?

A

jar
NOTA: A partir de java9 existen otros ficheros de empaquetado fisico que son los modules (.jmod)
NOTA: Otros ‘jar’ más especificos serían los .war y los .ear (tiene que ver con Jakarta EE)

116
Q

¿En qué consiste la utilidad de la herramienta javadoc?

A

Generacion de documentación en formato HTML a partir del código fuente.

NOTA: Los comentarios de javadoc empiezan por /**
NOTA Dentro de los comentarios podemos usar ciertos ‘metadatos’ ej. @since @author

117
Q

¿Cómo podemos obtener la fecha y hora actual a partir de jdk 1.8?

A

ANTES: GregorianCalendar.getInstance().getTime() –> objeto de java.util.Date

AHORA jdk 1.8: LocalDate.now() –> objeto de java.time.LocalDate

118
Q

¿Qué diferencia existe entre el interface Statement y el PreparedStatement del API JDBC?

A

Statement representa una sentencia SQL SIN parametros ni precompilación

PrepareStatement representa una sentencia SQL CON parametros y precompiladas

Ej.:
PrepareStatement pstConsulta = con.prepareStatement(“SELECT * FROM Producto WHERE id=?”);
pst.Consulta.setInt(1, “codigo”);
ResusltSet rsConsulta = pstConsulta.executeQuery();

Nota: otro detalle importante de que se ‘precompile’ es evitar los ataques de sql injection

119
Q

¿Cuál es la utilidad de la interfaz Iterable?

A

Acceder al objeto ‘iterador’ de cualquier colección y así poder recorrerla de manera genérica.

120
Q

¿Cómo podemos acceder al elemento que está en la cima de un Stack sin borrarlo?

A

Método peek()

121
Q

Utilidad del bloque “finally”

A

Despues de un try / catch el bloque finally se ejecutará siempre tanto si hubo error como si no

122
Q

Nombre el método que sirve para lanzar un hilo

A

Método start() de la clase java.lang.Thread

NOTA: el método run() solo representa el cuerpo del hilo, pero el metodo que lo lanza es start()
NOTA:
1) creo una clase que implemente run()
2) Creo un objeto de esa clase con new
3) Llamo al metodo start() sobre ese objeto

JRE(planificador) –> start() —> run()

123
Q

¿Qué dos metodos de Object es aconsejable sobreescribir en tus clases de negocio?

A

toString() –> retorna un string con la representación de tu objeto

equals(Object o) –> boolean

124
Q

Utilidad de la herramienta Apache Maven

A

Es una herramienta java para ayudarnos a la automatización de la construcción de proyectos Java.

a) Descargar librerias de terceros que querremos usar en nuestro proyecto ( gestion de dependencias)

b) Compilar nuestras clases

c) Ejecuta los posibles test unitarios y de integración que se hubieran programados (jUnit)

d) Empaquetar nuetras clases en ficheros .jar, .war o .ear (según le digamos)

Toda la info de configuración se especifica en un fichero llamado pom.xml

NOTA: Antes de Maven se usaba Apache Ant que no tiene nada que ver (sin gestion de dependencias)
NOTA: Competidores de Maven –> Graddle (esta está mu bien)

125
Q

Utilidad de la interfaz Closeable

A

Es un interface que proporciona el método close() para que lo implemente todo tipo de clases, sobre todo las que tienen que ver con E/S, ficheros, BBDD.

En la jdk 1.7 se inventó un nuevo try / catch, llamado try-catch-with-resources

ANTES
try{
///Sentencias
}catch(Exception e){
}finally{
//Cerramos explicitamente ‘cositas’
}

A PARTIR DE 1.7 (cuando implementen Closeable)
try(abrir conexión de bbdd){ /te ahorras el finally porque llama a close()/
//Sentencias varias
}catch(Exception e){
/// Tratamos la excepcion
}