top 40 java 8 interview questions answers
En este tutorial, hemos proporcionado las preguntas más importantes de la entrevista de Java 8 y sus respuestas con ejemplos de código y explicación:
Todas las preguntas importantes que se enumeran en este tutorial son específicas de Java 8. Java ha evolucionado mucho (con el tiempo) con la introducción de nuevas versiones. Con cada versión, tenemos nuevas características asociadas con Java. Todas estas características importantes se cubrirán en este tutorial.
Estas son preguntas muy comunes que se le harán en cualquier entrevista de Java que requiera habilidades avanzadas. Estos conceptos son imprescindibles si va a presentarse a cualquier examen de certificación Java estándar como Oracle Certified Associate (OCA).
=> Eche un vistazo a la guía para principiantes de Java aquí.
Este artículo será muy adecuado tanto para los desarrolladores de Java como para los probadores de Java / probadores de automatización o cualquier persona que busque un salario más alto en el mismo campo porque exige conocimientos avanzados de Java.
Preguntas más frecuentes de la entrevista de Java 8
P # 1) ¿Enumere las nuevas características introducidas en Java 8?
Responder: Las nuevas características que se introducen en Java 8 se enumeran a continuación:
- Expresiones lambda
- Referencias de métodos
- Clase opcional
- Interfaz funcional
- Métodos predeterminados
- Rhinoceros, motor JavaScript
- API de transmisión
- API de fecha
P # 2) ¿Qué son las interfaces funcionales?
Responder: La interfaz funcional es una interfaz que tiene un solo método abstracto. La implementación de estas interfaces se proporciona mediante una expresión Lambda, lo que significa que para usar la expresión Lambda, debe crear una nueva interfaz funcional o puede usar la expresión predefinida interfaz funcional de Java 8 .
La anotación utilizada para crear una nueva interfaz funcional es ' @FunctionalInterface ”.
P # 3) ¿Qué es una clase opcional?
Responder: La clase opcional es una clase contenedora especial introducida en Java 8 que se utiliza para evitar NullPointerExceptions. Esta última clase está presente en el paquete java.util. NullPointerExceptions se produce cuando no podemos realizar las comprobaciones de Null.
P # 4) ¿Cuáles son los métodos predeterminados?
Responder: Los métodos predeterminados son los métodos de la interfaz que tiene un cuerpo. Estos métodos, como sugiere su nombre, utilizan las palabras clave predeterminadas. El uso de estos métodos predeterminados es 'Compatibilidad con versiones anteriores', lo que significa que si JDK modifica cualquier interfaz (sin el método predeterminado), las clases que implementan esta interfaz se romperán.
Por otro lado, si agrega el método predeterminado en una interfaz, podrá proporcionar la implementación predeterminada. Esto no afectará las clases de implementación.
Sintaxis:
|_+_|Q #5) ¿Cuáles son las principales características de la función Lambda?
Responder: Las principales características de la función Lambda son las siguientes:
- Un método definido como Lambda Expression se puede pasar como parámetro a otro método.
- Un método puede existir de forma independiente sin pertenecer a una clase.
- No es necesario declarar el tipo de parámetro porque el compilador puede obtener el tipo del valor del parámetro.
- Podemos usar paréntesis cuando usamos varios parámetros, pero no es necesario tener paréntesis cuando usamos un solo parámetro.
- Si el cuerpo de la expresión tiene una sola declaración, no es necesario incluir llaves.
Q #6) ¿Qué estaba mal con la fecha y hora antiguas?
Responder: A continuación se enumeran los inconvenientes de la fecha y hora antiguas:
- Java.util.Date es mutable y no es seguro para subprocesos, mientras que la nueva API de fecha y hora de Java 8 es seguro para subprocesos.
- La API de fecha y hora de Java 8 cumple con los estándares ISO, mientras que la fecha y la hora anteriores estaban mal diseñadas.
- Ha introducido varias clases de API para una fecha como LocalDate, LocalTime, LocalDateTime, etc.
- Hablando del rendimiento entre los dos, Java 8 funciona más rápido que el antiguo régimen de fecha y hora.
P # 7) ¿Cuál es la diferencia entre la API de colección y la API de transmisión?
Responder: La diferencia entre la API de Stream y la API de Colección se puede entender en la siguiente tabla:
API de transmisión | API de colección |
---|---|
Fue introducido en la versión Java 8 Standard Edition. | Fue introducido en la versión 1.2 de Java |
No se utilizan los iteradores ni los separadores. | Con la ayuda de forEach, podemos usar Iterator y Spliterators para iterar los elementos y realizar una acción en cada elemento o elemento. |
Se puede almacenar una cantidad infinita de funciones. | Se puede almacenar un número contable de elementos. |
El consumo y la iteración de elementos del objeto Stream solo se pueden realizar una vez. | El consumo y la iteración de elementos del objeto Colección se pueden realizar varias veces. |
Se utiliza para calcular datos. | Se utiliza para almacenar datos. |
Q #8) ¿Cómo se puede crear una interfaz funcional?
Responder: Aunque Java puede identificar una interfaz funcional, puede definir una con la anotación
@FunctionalInterface
Una vez que haya definido la interfaz funcional, solo puede tener un método abstracto. Como solo tiene un método abstracto, puede escribir varios métodos estáticos y métodos predeterminados.
A continuación se muestra el ejemplo de programación de FunctionalInterface escrito para la multiplicación de dos números.
|_+_|Producción:
P # 9) ¿Qué es una interfaz SAM?
Responder: Java 8 ha introducido el concepto de FunctionalInterface que solo puede tener un método abstracto. Dado que estas interfaces especifican solo un método abstracto, a veces se denominan interfaces SAM. SAM significa 'Método abstracto único'.
Q #10) ¿Qué es la referencia de método?
¿Qué es el control de calidad y la garantía de calidad?
Responder: En Java 8, se introdujo una nueva característica conocida como Referencia de método. Se utiliza para hacer referencia al método de interfaz funcional. Se puede usar para reemplazar Lambda Expression al hacer referencia a un método.
Por ejemplo: Si la expresión Lambda se parece a
|_+_|Entonces la referencia de método correspondiente sería,
|_+_|donde '::' es un operador que distingue el nombre de la clase del nombre del método.
Q #11) Explique la siguiente sintaxis
|_+_|Responder: Es una referencia de método estático al Valor de método del Cuerda clase. System.out :: println es una referencia de método estático al método println de un objeto de la clase System.
Devuelve la representación de cadena correspondiente del argumento que se pasa. El argumento puede ser Carácter, Entero, Booleano, etc.
P # 12) ¿Qué es un predicado? Indique la diferencia entre un predicado y una función.
Responder: El predicado es una interfaz funcional predefinida. Está bajo el paquete java.util.function.Predicate. Acepta solo un argumento que tiene la forma que se muestra a continuación,
Predicado
Predicado | Función |
---|---|
Tiene el tipo de retorno como booleano. | Tiene el tipo de retorno como Objeto. |
Está escrito en forma de Predicado que acepta un solo argumento. | Está escrito en forma de Función que también acepta un solo argumento. |
Es una interfaz funcional que se utiliza para evaluar expresiones Lambda. Esto se puede utilizar como destino para una referencia de método. | También es una interfaz funcional que se utiliza para evaluar expresiones Lambda. En Función, T es para el tipo de entrada y R es para el tipo de resultado. Esto también se puede utilizar como destino para una expresión Lambda y una referencia de método. |
Q #13) ¿Hay algún problema con el siguiente código? ¿Compilará o dará algún error específico?
|_+_|Responder: Si. El código se compilará porque sigue la especificación de la interfaz funcional de definir solo un método abstracto. El segundo método, printString (), es un método predeterminado que no cuenta como método abstracto.
Q #14) ¿Qué es una API Stream? ¿Por qué necesitamos la API Stream?
Responder: Stream API es una nueva característica agregada en Java 8. Es una clase especial que se usa para procesar objetos de una fuente como Collection.
Requerimos la API Stream porque,
- Admite operaciones agregadas que simplifican el procesamiento.
- Es compatible con la programación de estilo funcional.
- Hace un procesamiento más rápido. Por lo tanto, es apto para un mejor rendimiento.
- Permite operaciones paralelas.
Q #15) ¿Cuál es la diferencia entre limitar y saltar?
Responder: El método limit () se utiliza para devolver el Stream del tamaño especificado. Por ejemplo, Si ha mencionado el límite (5), entonces el número de elementos de salida sería 5.
Consideremos el siguiente ejemplo. La salida aquí devuelve seis elementos ya que el límite se establece en 'seis'.
|_+_|Producción:
Considerando que, el método skip () se usa para omitir el elemento.
Consideremos el siguiente ejemplo. En la salida, los elementos son 6, 7, 8, lo que significa que se han saltado los elementos hasta el sexto índice (comenzando desde 1).
|_+_|Producción:
Q #16) ¿Cómo obtendrá la fecha y hora actuales utilizando la API de fecha y hora de Java 8?
Responder: El siguiente programa está escrito con la ayuda de la nueva API introducida en Java 8. Hemos hecho uso de LocalDate, LocalTime y LocalDateTime API para obtener la fecha y hora actual.
En la primera y segunda declaración de impresión, hemos recuperado la fecha y hora actuales del reloj del sistema con la zona horaria establecida como predeterminada. En la tercera declaración de impresión, hemos utilizado la API LocalDateTime, que imprimirá la fecha y la hora.
|_+_|Producción:
Q #17) ¿Cuál es el propósito del método limit () en Java 8?
Responder: El método Stream.limit () especifica el límite de los elementos. El tamaño que especifique en el límite (X), devolverá el Stream del tamaño de 'X'. Es un método de java.util.stream.Stream
Sintaxis:
|_+_|Donde 'X' es el tamaño del elemento.
P # 18) ¿Escribir un programa para imprimir 5 números aleatorios usando forEach en Java 8?
Responder: El programa siguiente genera 5 números aleatorios con la ayuda de forEach en Java 8. Puede establecer la variable límite en cualquier número dependiendo de cuántos números aleatorios desee generar.
|_+_|Producción:
Q #19) ¿Escribir un programa para imprimir 5 números aleatorios en orden ordenado usando forEach en Java 8?
Responder: El programa siguiente genera 5 números aleatorios con la ayuda de forEach en Java 8. Puede establecer la variable límite en cualquier número dependiendo de cuántos números aleatorios desee generar. Lo único que necesita agregar aquí es el método sorted ().
|_+_|Producción:
Q #20) ¿Cuál es la diferencia entre operaciones intermedias y terminales en Stream?
Responder: Todas las operaciones de Stream son terminales o intermedias. Las Operaciones Intermedias son las operaciones que devuelven el Stream para que se puedan realizar otras operaciones en ese Stream. Las operaciones intermedias no procesan Stream en el sitio de la llamada, por lo que se denominan lazy.
Este tipo de operaciones (Operaciones Intermedias) procesan datos cuando se realiza una operación Terminal. Ejemplos de operación intermedia son mapa y filtro.
Las operaciones de terminal inician el procesamiento de la secuencia. Durante esta llamada, el Stream se somete a todas las operaciones intermedias. Ejemplos de Operación Terminal son suma, Cobro y paraCada.
En este programa, primero intentamos ejecutar una operación intermedia sin una operación de terminal. Como puede ver, el primer bloque de código no se ejecutará porque no hay soporte para operaciones de Terminal.
El segundo bloque se ejecutó con éxito debido a la operación de Terminal suma ().
|_+_|Producción:
Q #21) ¿Escribir un programa Java 8 para obtener la suma de todos los números presentes en una lista?
Responder: En este programa, hemos utilizado ArrayList para almacenar los elementos. Luego, con la ayuda del método sum (), hemos calculado la suma de todos los elementos presentes en ArrayList. Luego se convierte a Stream y se agrega cada elemento con la ayuda de los métodos mapToInt () y sum ().
|_+_|Producción:
P # 22) ¿Escribir un programa Java 8 para elevar al cuadrado la lista de números y luego filtrar los números mayores que 100 y luego encontrar el promedio de los números restantes?
Responder: En este programa, tomamos una matriz de enteros y los almacenamos en una lista. Luego, con la ayuda de mapToInt (), hemos elevado al cuadrado los elementos y filtrado los números mayores que 100. Finalmente, se calcula el promedio del número restante (mayor que 100).
|_+_|Producción:
Q #23) ¿Cuál es la diferencia entre findFirst () y findAny () de Stream?
Responder: Como sugiere el nombre, el método findFirst () se usa para encontrar el primer elemento de la secuencia, mientras que el método findAny () se usa para encontrar cualquier elemento de la secuencia.
FindFirst () es predestinarianismo por naturaleza, mientras que findAny () no es determinista. En programación, determinista significa que la salida se basa en la entrada o el estado inicial del sistema.
Q #24) ¿Cuál es la diferencia entre Iterator y Spliterator?
Responder: A continuación se muestran las diferencias entre Iterator y Spliterator.
Iterador | Disidente |
---|---|
Fue introducido en la versión 1.2 de Java | Fue introducido en Java SE 8 |
Se utiliza para la API de colección. | Se utiliza para Stream API. |
Algunos de los métodos de iteración son next () y hasNext () que se utilizan para iterar elementos. | El método del separador es tryAdvance (). |
Necesitamos llamar al método iterator () en Collection Object. | Necesitamos llamar al método spliterator () en Stream Object. |
Itera solo en orden secuencial. | Itera en orden paralelo y secuencial. |
Q #25) ¿Qué es la interfaz funcional del consumidor?
Responder: La interfaz funcional del consumidor también es una interfaz de un solo argumento (como Predicado y Función). Viene bajo java.util.function.Consumer. Esto no devuelve ningún valor.
En el programa siguiente, hemos utilizado el método accept para recuperar el valor del objeto String.
|_+_|Producción:
Q #26) ¿Qué es la interfaz funcional del proveedor?
Responder: La interfaz funcional del proveedor no acepta parámetros de entrada. Viene bajo java.util.function.Supplier. Esto devuelve el valor usando el método get.
En el programa siguiente, hemos utilizado el método get para recuperar el valor del objeto String.
|_+_|Producción:
Q #27) ¿Qué es Nashorn en Java 8?
Responder: Nashorn en Java 8 es un motor basado en Java para ejecutar y evaluar código JavaScript.
Q #28) ¿Escribir un programa Java 8 para encontrar el número más bajo y más alto de una secuencia?
Responder: En este programa, hemos utilizado los métodos min () y max () para obtener el número más alto y más bajo de una secuencia. En primer lugar, hemos inicializado un Stream que tiene Integers y con la ayuda del método Comparator.comparing () hemos comparado los elementos del Stream.
desarrollo de software fases del ciclo de vida pdf
Cuando este método se incorpora con max () y min (), le dará los números más altos y más bajos. También funcionará al comparar Strings.
|_+_|Producción:
Q #29) ¿Cuál es la diferencia entre Map y flatMap Stream Operation?
Responder: La operación Map Stream da un valor de salida por valor de entrada, mientras que la operación flatMap Stream da cero o más valor de salida por valor de entrada.
Ejemplo de mapa– La operación Map Stream se utiliza generalmente para una operación simple en Stream como la que se menciona a continuación.
En este programa, hemos cambiado los caracteres de “Nombres” a mayúsculas usando la operación de mapa después de almacenarlos en un Stream y con la ayuda de la operación forEach Terminal, hemos impreso cada elemento.
|_+_|Producción:
Ejemplo de flatMap– La operación flatMap Stream se utiliza para operaciones Stream más complejas.
Aquí hemos llevado a cabo la operación flatMap en 'Lista de Lista de tipo Cadena'. Hemos proporcionado nombres de entrada como lista y luego los hemos almacenado en una secuencia en la que hemos filtrado los nombres que comienzan con 'S'.
Finalmente, con la ayuda de la operación forEach Terminal, hemos impreso cada elemento.
|_+_|Producción:
Q #30) ¿Qué es MetaSpace en Java 8?
Responder: En Java 8, se introdujo una nueva característica para almacenar clases. El área donde todas las clases que se almacenan en Java 8 se denominan MetaSpace. MetaSpace ha reemplazado a PermGen.
Hasta Java 7, Java Virtual Machine utilizaba PermGen para almacenar las clases. Dado que MetaSpace es dinámico ya que puede crecer dinámicamente y no tiene ninguna limitación de tamaño, Java 8 reemplazó a PermGen con MetaSpace.
Q #31) ¿Cuál es la diferencia entre la iteración interna y externa de Java 8?
Responder: La diferencia entre iteración interna y externa se enumera a continuación.
Iteración interna | Iteración externa |
---|---|
Fue introducido en Java 8 (JDK-8). | Fue introducido y practicado en la versión anterior de Java (JDK-7, JDK-6 y así sucesivamente). |
Se itera internamente en los objetos agregados como Collection. | Se itera externamente en los objetos agregados. |
Es compatible con el estilo de programación funcional. | Es compatible con el estilo de programación OOPS. |
El iterador interno es pasivo. | El iterador externo está activo. |
Es menos erróneo y requiere menos codificación. | Requiere un poco más de codificación y es más propenso a errores. |
Q #32) ¿Qué es JJS?
Responder: JJS es una herramienta de línea de comandos que se utiliza para ejecutar código JavaScript en la consola. En Java 8, JJS es el nuevo ejecutable que es un motor JavaScript.
P # 33) ¿Qué son ChronoUnits en Java 8?
Responder: ChronoUnits es la enumeración que se introduce para reemplazar los valores Integer que se utilizan en la API anterior para representar el mes, el día, etc.
Q #34) ¿Explicar la clase StringJoiner en Java 8? ¿Cómo podemos lograr unir múltiples cadenas usando StringJoiner Class?
Responder: En Java 8, se introdujo una nueva clase en el paquete java.util que se conocía como StringJoiner. A través de esta clase, podemos unir varias cadenas separadas por delimitadores junto con proporcionarles prefijo y sufijo.
En el programa a continuación, aprenderemos cómo unir múltiples cadenas usando StringJoiner Class. Aquí tenemos ',' como delimitador entre dos cadenas diferentes. Luego, hemos unido cinco cadenas diferentes agregándolas con la ayuda del método add (). Finalmente, imprimió el String Joiner.
En la siguiente pregunta # 35, aprenderá a agregar prefijo y sufijo a la cadena.
|_+_|Producción:
mejores firewalls gratuitos para windows 10
P # 35) ¿Escribe un programa Java 8 para agregar prefijo y sufijo a la cadena?
Responder: En este programa, tenemos ',' como delimitador entre dos cadenas diferentes. Además, hemos dado corchetes “(” y “)” como prefijo y sufijo. Luego, se unen cinco cadenas diferentes agregándolas con la ayuda del método add (). Finalmente, imprimió el String Joiner.
|_+_|Producción:
Q #36) ¿Escribir un programa Java 8 para iterar una secuencia usando el método forEach?
Responder: En este programa, estamos iterando un Stream comenzando desde 'número = 2', seguido de la variable de conteo incrementada en '1' después de cada iteración.
Entonces, estamos filtrando el número cuyo resto no es cero cuando se divide por el número 2. Además, hemos establecido el límite como? 5, lo que significa que solo se repetirá 5 veces. Finalmente, estamos imprimiendo cada elemento usando forEach.
|_+_|Producción:
Q #37) ¿Escribir un programa Java 8 para ordenar una matriz y luego convertir la matriz ordenada en Stream?
Responder: En este programa, hemos utilizado la ordenación paralela para ordenar una matriz de enteros. Luego, convirtió la matriz ordenada en Stream y con la ayuda de forEach, imprimimos cada elemento de un Stream.
|_+_|Producción:
Q #38) ¿Escribir un programa Java 8 para encontrar el número de cadenas en una lista cuya longitud sea mayor que 5?
Responder: En este programa, se agregan cuatro cadenas en la lista usando el método add (), y luego, con la ayuda de la expresión Stream y Lambda, hemos contado las cadenas que tienen una longitud mayor que 5.
|_+_|Producción:
Q #39) ¿Escribir un programa Java 8 para concatenar dos flujos?
Responder: En este programa, hemos creado dos Streams a partir de las dos listas ya creadas y luego las hemos concatenado usando un método concat () en el que se pasan dos listas como argumento. Finalmente, imprimió los elementos de la secuencia concatenada.
|_+_|Producción:
Q #40) ¿Escribir un programa Java 8 para eliminar los elementos duplicados de la lista?
Responder: En este programa, hemos almacenado los elementos en una matriz y los hemos convertido en una lista. A partir de entonces, usamos stream y lo recopilamos en 'Set' con la ayuda del método 'Collectors.toSet ()'.
|_+_|Producción:
Conclusión
En este artículo, hemos entendido las nuevas características introducidas en Java 8. Hemos cubierto todas las preguntas principales de la entrevista de Java 8 y sus respuestas en detalle.
Al leer este tutorial, debe haber adquirido conocimientos sobre las nuevas API para la manipulación de fecha y hora, las nuevas funciones de Java 8, las nuevas API de transmisión junto con los ejemplos de programación de apt según el concepto. Estos nuevos conceptos o las características son parte del proceso de entrevista cuando está preparado para las posiciones de Java más desafiantes.
¡¡Todo lo mejor!!
=> Consulte TODOS los tutoriales de Java aquí.
Lectura recomendada
- Preguntas y respuestas de la entrevista
- Preguntas y respuestas de la entrevista de prueba ETL
- Algunas preguntas y respuestas complicadas sobre pruebas manuales
- Las 40 preguntas y respuestas principales de las entrevistas de programación en C
- Las 40 preguntas y respuestas más populares de la entrevista J2EE que debe leer
- Preguntas de la entrevista de Spock con respuestas (las más populares)
- Las 25 mejores preguntas y respuestas de la entrevista de pruebas ágiles
- Las 32 mejores preguntas y respuestas de las entrevistas de Datastage