top 40 java 8 interview questions answers
Neste tutorial, fornecemos as perguntas mais importantes da entrevista sobre Java 8 e suas respostas com exemplos e explicações de código:
Todas as questões importantes listadas neste tutorial são específicas do Java 8. Java evoluiu muito (ao longo do tempo) com a introdução de novas versões. Com cada versão, temos novos recursos associados ao Java. Todos esses recursos importantes serão abordados neste tutorial.
Essas são perguntas muito comuns que serão feitas em qualquer entrevista Java que exija habilidades avançadas. Esses conceitos são essenciais se você pretende comparecer a quaisquer Exames de Certificação Java padrão, como Oracle Certified Associate (OCA).
=> Dê uma olhada no guia para iniciantes em Java aqui.
Este artigo será muito adequado para desenvolvedores Java, bem como testadores de Java / testadores de automação ou qualquer pessoa que esteja procurando por uma remuneração mais alta no mesmo campo porque exige habilidades avançadas de Java.
Perguntas mais frequentes da entrevista sobre Java 8
P # 1) Liste os novos recursos introduzidos no Java 8?
Responda: Os novos recursos introduzidos no Java 8 são listados abaixo:
- Expressões Lambda
- Referências de Método
- Aula Opcional
- Interface Funcional
- Métodos padrão
- Rhinoceros, motor JavaScript
- API Stream
- API de data
P # 2) O que são interfaces funcionais?
Responda: Interface funcional é uma interface que possui apenas um método abstrato. A implementação dessas interfaces é fornecida usando uma Expressão Lambda, o que significa que para usar a Expressão Lambda, você precisa criar uma nova interface funcional ou pode usar a predefinida interface funcional do Java 8 .
A anotação usada para criar uma nova interface funcional é “ @FunctionalInterface ”.
P # 3) O que é uma aula opcional?
Responda: A classe opcional é uma classe de wrapper especial introduzida no Java 8 que é usada para evitar NullPointerExceptions. Esta classe final está presente no pacote java.util. NullPointerExceptions ocorre quando deixamos de realizar as verificações nulas.
P # 4) Quais são os métodos padrão?
Responda: Os métodos padrão são os métodos da Interface que possui um corpo. Esses métodos, como o nome sugere, usam as palavras-chave padrão. O uso desses métodos padrão é “Compatibilidade com versões anteriores”, o que significa que se o JDK modificar qualquer interface (sem o método padrão), as classes que implementam essa interface serão interrompidas.
Por outro lado, se você adicionar o método padrão em uma interface, poderá fornecer a implementação padrão. Isso não afetará as classes de implementação.
Sintaxe:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }Q # 5) Quais são as principais características da Função Lambda?
Responda: As principais características da Função Lambda são as seguintes:
- Um método que é definido como Lambda Expression pode ser passado como um parâmetro para outro método.
- Um método pode existir independentemente sem pertencer a uma classe.
- Não há necessidade de declarar o tipo de parâmetro porque o compilador pode buscar o tipo do valor do parâmetro.
- Podemos usar parênteses ao usar vários parâmetros, mas não há necessidade de parênteses quando usamos um único parâmetro.
- Se o corpo da expressão tiver uma única instrução, não há necessidade de incluir chaves.
Q # 6) O que havia de errado com a data e a hora antigas?
Responda: Listados abaixo estão as desvantagens da data e hora antigas:
- Java.util.Date é mutável e não seguro para thread, enquanto a nova API Java 8 Date and Time é segura para thread.
- A API Java 8 Date and Time atende aos padrões ISO, enquanto a data e a hora antigas eram mal projetadas.
- Ele introduziu várias classes de API para uma data como LocalDate, LocalTime, LocalDateTime, etc.
- Falando em desempenho entre os dois, o Java 8 funciona mais rápido que o antigo regime de data e hora.
P # 7) Qual é a diferença entre a API Collection e a API Stream?
Responda: A diferença entre a API Stream e a API Collection pode ser entendida na tabela abaixo:
| API Stream | API de coleta |
|---|---|
| Foi introduzido na versão Java 8 Standard Edition. | Foi introduzido no Java versão 1.2 |
| Não há uso de Iterator e Spliterators. | Com a ajuda de forEach, podemos usar o Iterator e Spliterators para iterar os elementos e executar uma ação em cada item ou elemento. |
| Um número infinito de recursos pode ser armazenado. | Um número contável de elementos pode ser armazenado. |
| O consumo e a iteração de elementos do objeto Stream podem ser feitos apenas uma vez. | O consumo e a iteração de elementos do objeto Collection podem ser feitos várias vezes. |
| Ele é usado para computar dados. | Ele é usado para armazenar dados. |
Q # 8) Como você pode criar uma interface funcional?
Responda: Embora o Java possa identificar uma interface funcional, você pode definir uma com a anotação
@FunctionalInterface
Depois de definir a interface funcional, você pode ter apenas um método abstrato. Como você tem apenas um método abstrato, pode escrever vários métodos estáticos e métodos padrão.
Abaixo está o exemplo de programação de FunctionalInterface escrito para a multiplicação de dois números.
@FunctionalInterface // annotation for functional interface interface FuncInterface { public int multiply(int a, int b); } public class Java8 { public static void main(String args()) { FuncInterface Total = (a, b) -> a * b; // simple operation of multiplication of 'a' and 'b' System.out.println('Result: '+Total.multiply(30, 60)); } }Resultado:

P # 9) O que é uma interface SAM?
Responda: Java 8 introduziu o conceito de FunctionalInterface, que pode ter apenas um método abstrato. Como essas interfaces especificam apenas um método abstrato, às vezes são chamadas de interfaces SAM. SAM significa “Single Abstract Method”.
Q # 10) O que é referência de método?
melhor software de backup grátis para mac
Responda: No Java 8, um novo recurso foi introduzido, conhecido como Referência de Método. Isso é usado para se referir ao método de interface funcional. Pode ser usado para substituir a Expressão Lambda ao se referir a um método.
Por exemplo: Se a expressão Lambda parecer
num -> System.out.println(num)Então, a Referência de Método correspondente seria,
System.out::printlnonde “::” é um operador que distingue o nome da classe do nome do método.
Q # 11) Explique a seguinte sintaxe
String:: Valueof ExpressionResponda: É uma referência de método estático para o Valor de método do Fragmento aula. System.out :: println é uma referência de método estático para o método println de fora do objeto da classe System.
Ele retorna a representação de string correspondente do argumento que é passado. O argumento pode ser Character, Integer, Boolean e assim por diante.
Q # 12) O que é um predicado? Indique a diferença entre um predicado e uma função?
Responda: Predicate é uma interface funcional predefinida. Ele está no pacote java.util.function.Predicate. Ele aceita apenas um único argumento que está na forma mostrada abaixo,
Predicado
| Predicado | Função |
|---|---|
| Ele tem o tipo de retorno Booleano. | Possui o tipo de retorno como Object. |
| Está escrito na forma de Predicado que aceita um único argumento. | Está escrito na forma de Função que também aceita um único argumento. |
| É uma interface funcional que é usada para avaliar expressões lambda. Isso pode ser usado como um alvo para uma Referência de Método. | É também uma interface funcional que é usada para avaliar as expressões Lambda. Em Função, T é para o tipo de entrada e R é para o tipo de resultado. Isso também pode ser usado como um destino para uma expressão lambda e referência de método. |
Q # 13) Há algo de errado com o código a seguir? Ele vai compilar ou dar algum erro específico?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } } Responda: sim. O código será compilado porque segue a especificação da interface funcional de definir apenas um único método abstrato. O segundo método, printString (), é um método padrão que não conta como um método abstrato.
Q # 14) O que é uma API Stream? Por que exigimos a API Stream?
Responda: Stream API é um novo recurso adicionado ao Java 8. É uma classe especial usada para processar objetos de uma fonte, como Collection.
Exigimos a API Stream porque,
- Suporta operações agregadas que tornam o processamento simples.
- Suporta programação de estilo funcional.
- Ele faz um processamento mais rápido. Portanto, está apto para um melhor desempenho.
- Ele permite operações paralelas.
Q # 15) Qual é a diferença entre limit e skip?
Responda: O método limit () é usado para retornar o Stream do tamanho especificado. Por exemplo, Se você mencionou o limite (5), o número de elementos de saída seria 5.
Vamos considerar o seguinte exemplo. A saída aqui retorna seis elementos, pois o limite é definido como 'seis'.
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .limit(6) /*limit is set to 6, hence it will print the numbers starting from 0 to 5 */ .forEach(num->System.out.print('
'+num)); } }Resultado:

Enquanto o método skip () é usado para pular o elemento.
Vamos considerar o seguinte exemplo. Na saída, os elementos são 6, 7, 8, o que significa que os elementos foram ignorados até o 6º índice (começando em 1).
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .skip(6) /* It will skip till 6th index. Hence 7th, 8th and 9th index elements will be printed */ .forEach(num->System.out.print('
'+num)); } }Resultado:

Q # 16) Como você obterá a data e hora atuais usando a API Java 8 Date and Time?
Responda: O programa abaixo foi escrito com a ajuda da nova API introduzida em Java 8. Usamos LocalDate, LocalTime e LocalDateTime API para obter a data e hora atuais.
Na primeira e na segunda declaração de impressão, recuperamos a data e a hora atuais do relógio do sistema com o fuso horário definido como padrão. Na terceira instrução de impressão, usamos a API LocalDateTime que imprimirá a data e a hora.
class Java8 { public static void main(String() args) { System.out.println('Current Local Date: ' + java.time.LocalDate.now()); //Used LocalDate API to get the date System.out.println('Current Local Time: ' + java.time.LocalTime.now()); //Used LocalTime API to get the time System.out.println('Current Local Date and Time: ' + java.time.LocalDateTime.now()); //Used LocalDateTime API to get both date and time } } Resultado:

Q # 17) Qual é o propósito do método limit () em Java 8?
Responda: O método Stream.limit () especifica o limite dos elementos. O tamanho que você especificar no limite (X), ele retornará o Stream do tamanho de 'X'. É um método de java.util.stream.Stream
Sintaxe:
limit(X)Onde 'X' é o tamanho do elemento.
Q # 18) Escreva um programa para imprimir 5 números aleatórios usando forEach no Java 8?
Responda: O programa abaixo gera 5 números aleatórios com a ajuda de forEach em Java 8. Você pode definir a variável de limite para qualquer número, dependendo de quantos números aleatórios você deseja gerar.
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).forEach(System.out::println); /* limit is set to 5 which means only 5 numbers will be printed with the help of terminal operation forEach */ } }Resultado:

Q # 19) Escreva um programa para imprimir 5 números aleatórios em ordem classificada usando forEach no Java 8?
Responda: O programa abaixo gera 5 números aleatórios com a ajuda de forEach em Java 8. Você pode definir a variável de limite para qualquer número, dependendo de quantos números aleatórios você deseja gerar. A única coisa que você precisa adicionar aqui é o método Sorted ().
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).sorted().forEach(System.out::println); /* sorted() method is used to sort the output after terminal operation forEach */ } }Resultado:

Q # 20) Qual é a diferença entre operações intermediárias e terminais no fluxo?
Responda: Todas as operações de Stream são Terminal ou Intermediário. Operações intermediárias são as operações que retornam o fluxo para que algumas outras operações possam ser realizadas nesse fluxo. As operações intermediárias não processam o Stream no local da chamada, por isso são chamadas de lazy.
Estes tipos de operações (Operações Intermediárias) processam dados quando há uma operação de Terminal executada. Exemplos de operação intermediária são mapear e filtrar.
As operações de terminal iniciam o processamento de fluxo. Durante esta chamada, o Stream passa por todas as operações intermediárias. Exemplos de Operação do Terminal são sum, Collect e forEach.
Neste programa, primeiro tentamos executar a operação intermediária sem a operação Terminal. Como você pode ver, o primeiro bloco de código não será executado porque não há suporte para operação de Terminal.
O segundo bloco foi executado com sucesso devido à soma da operação do Terminal ().
import java.util.Arrays; class Java8 { public static void main(String() args) { System.out.println('Intermediate Operation won't execute'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // No terminal operation so it won't execute }); System.out.println('Terminal operation starts here'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // This is followed by terminal operation sum() }).sum(); } }Resultado:

Q # 21) Escreva um programa Java 8 para obter a soma de todos os números presentes em uma lista?
Responda: Neste programa, usamos ArrayList para armazenar os elementos. Então, com a ajuda do método sum (), calculamos a soma de todos os elementos presentes na ArrayList. Em seguida, ele é convertido em Stream e adicionado cada elemento com a ajuda dos métodos mapToInt () e sum ().
import java.util.*; class Java8 { public static void main(String() args) { ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); // Added the numbers into Arraylist System.out.println(sum(list)); } public static int sum(ArrayList list) { return list.stream().mapToInt(i -> i).sum(); // Found the total using sum() method after // converting it into Stream } }Resultado:

Q # 22) Escreva um programa Java 8 para elevar ao quadrado a lista de números e, em seguida, filtrar os números maiores que 100 e, em seguida, encontrar a média dos números restantes.
Responda: Neste programa, pegamos uma matriz de inteiros e os armazenamos em uma lista. Em seguida, com a ajuda de mapToInt (), elevamos os elementos ao quadrado e filtramos os números maiores que 100. Finalmente, a média do número restante (maior que 100) é calculada.
import java.util.Arrays; import java.util.List; import java.util.OptionalDouble; public class Java8 { public static void main(String() args) { Integer() arr = new Integer() { 100, 100, 9, 8, 200 }; List list = Arrays.asList(arr); // Stored the array as list OptionalDouble avg = list.stream().mapToInt(n -> n * n).filter(n -> n > 100).average(); /* Converted it into Stream and filtered out the numbers which are greater than 100. Finally calculated the average */ if (avg.isPresent()) System.out.println(avg.getAsDouble()); } }Resultado:

Q # 23) Qual é a diferença entre findFirst () e findAny () do Stream?
como criar um plano de teste para teste de software
Responda: Como o nome sugere, o método findFirst () é usado para encontrar o primeiro elemento do fluxo, enquanto o método findAny () é usado para encontrar qualquer elemento do fluxo.
O findFirst () é predestinarianismo por natureza, enquanto o findAny () é não determinístico. Na programação, Determinística significa que a saída é baseada na entrada ou no estado inicial do sistema.
Q # 24) Qual é a diferença entre Iterator e Spliterator?
Responda: Abaixo estão as diferenças entre Iterator e Spliterator.
| Iterator | Divisor |
|---|---|
| Foi introduzido no Java versão 1.2 | Foi introduzido em Java SE 8 |
| É usado para a API de coleta. | Ele é usado para Stream API. |
| Alguns dos métodos de iteração são next () e hasNext (), que são usados para iterar elementos. | O método do divisor é tryAdvance (). |
| Precisamos chamar o método iterator () no objeto Collection. | Precisamos chamar o método spliterator () no Stream Object. |
| Repete apenas em ordem sequencial. | Repete em ordem paralela e sequencial. |
Q # 25) O que é a interface funcional do consumidor?
Responda: A Interface Funcional do Consumidor também é uma interface de argumento único (como Predicado e Função). Ele vem em java.util.function.Consumer. Isso não retorna nenhum valor.
No programa a seguir, usamos o método accept para recuperar o valor do objeto String.
import java.util.function.Consumer; public class Java8 { public static void main(String() args) Consumer str = str1 -> System.out.println(str1); str.accept('Saket'); /* We have used accept() method to get the value of the String Object */ } }Resultado:

Q # 26) O que é a interface funcional do fornecedor?
Responda: A Interface Funcional do Fornecedor não aceita parâmetros de entrada. Ele vem em java.util.function.Supplier. Isso retorna o valor usando o método get.
No programa a seguir, usamos o método get para recuperar o valor do objeto String.
import java.util.function.Supplier; public class Java8 { public static void main(String() args) { Supplier str = () -> 'Saket'; System.out.println(str.get()); /* We have used get() method to retrieve the value of String object str. */ } }Resultado:

Q # 27) O que é Nashorn em Java 8?
Responda: Nashorn em Java 8 é um mecanismo baseado em Java para executar e avaliar código JavaScript.
Q # 28) Escreva um programa Java 8 para encontrar o menor e o maior número de um Stream?
Responda: Neste programa, usamos os métodos min () e max () para obter o maior e o menor número de um Stream. Em primeiro lugar, inicializamos um Stream que possui inteiros e com a ajuda do método Comparator.comparing (), comparamos os elementos do Stream.
Quando este método é incorporado com max () e min (), ele fornecerá os números mais alto e mais baixo. Também funcionará ao comparar as Strings.
import java.util.Comparator; import java.util.stream.*; public class Java8{ public static void main(String args()) { Integer highest = Stream.of(1, 2, 3, 77, 6, 5) .max(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ Integer lowest = Stream.of(1, 2, 3, 77, 6, 5) .min(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ System.out.println('The highest number is: ' + highest); System.out.println('The lowest number is: ' + lowest); } }Resultado:

Q # 29) Qual é a diferença entre a operação Map e flatMap Stream?
Responda: A operação Map Stream fornece um valor de saída por valor de entrada, enquanto a operação flatMap Stream fornece zero ou mais valores de saída por valor de entrada.
Exemplo de mapa- A operação do Map Stream é geralmente usada para operação simples no Stream, como o mencionado abaixo.
Neste programa, mudamos os caracteres de “Nomes” para maiúsculas usando a operação de mapa depois de armazená-los em um Stream e com a ajuda da operação forEach Terminal, imprimimos cada elemento.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Map { public static void main(String() str) { List Names = Arrays.asList('Saket', 'Trevor', 'Franklin', 'Michael'); List UpperCase = Names.stream().map(String::toUpperCase).collect(Collectors.toList()); // Changed the characters into upper case after converting it into Stream UpperCase.forEach(System.out::println); // Printed using forEach Terminal Operation } } Resultado:

Exemplo de flatMap- A operação de fluxo flatMap é usada para uma operação de fluxo mais complexa.
Aqui realizamos a operação flatMap na “Lista da Lista do tipo String”. Fornecemos nomes de entrada como uma lista e, em seguida, os armazenamos em um fluxo no qual filtramos os nomes que começam com ‘S’.
Finalmente, com a ajuda da operação forEach Terminal, imprimimos cada elemento.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class flatMap { public static void main(String() str) { List Names = Arrays.asList(Arrays.asList('Saket', 'Trevor'), Arrays.asList('John', 'Michael'), Arrays.asList('Shawn', 'Franklin'), Arrays.asList('Johnty', 'Sean')); /* Created a “List of List of type String” i.e. List Stored names into the list */ List Start = Names.stream().flatMap(FirstName -> FirstName.stream()).filter(s -> s.startsWith('S')) .collect(Collectors.toList()); /* Converted it into Stream and filtered out the names which start with 'S' */ Start.forEach(System.out::println); /* Printed the Start using forEach operation */ } }
Resultado:

Q # 30) O que é MetaSpace em Java 8?
Responda: No Java 8, um novo recurso foi introduzido para armazenar classes. A área onde todas as classes armazenadas em Java 8 são chamadas de MetaSpace. MetaSpace substituiu o PermGen.
Até o Java 7, PermGen foi usado pela Java Virtual Machine para armazenar as classes. Como o MetaSpace é dinâmico, pois pode crescer dinamicamente e não tem qualquer limitação de tamanho, o Java 8 substituiu o PermGen pelo MetaSpace.
Q # 31) Qual é a diferença entre a iteração interna e externa do Java 8?
Responda: A diferença entre iteração interna e externa é listada abaixo.
| Iteração Interna | Iteração Externa |
|---|---|
| Ele foi introduzido no Java 8 (JDK-8). | Foi introduzido e praticado na versão anterior do Java (JDK-7, JDK-6 e assim por diante). |
| Ele itera internamente nos objetos agregados, como Coleção. | Ele itera externamente nos objetos agregados. |
| Suporta o estilo de programação funcional. | Ele suporta o estilo de programação OOPS. |
| O iterador interno é passivo. | O iterador externo está ativo. |
| É menos errôneo e requer menos codificação. | Requer um pouco mais de codificação e está mais sujeito a erros. |
Q # 32) O que é JJS?
melhor espião de celular para android
Responda: JJS é uma ferramenta de linha de comando usada para executar código JavaScript no console. No Java 8, JJS é o novo executável que é um mecanismo JavaScript.
Q # 33) O que é ChronoUnits em Java 8?
Responda: ChronoUnits é o enum introduzido para substituir os valores Inteiros usados na API antiga para representar o mês, o dia, etc.
Q # 34) Explicar a classe StringJoiner em Java 8? Como podemos conseguir juntar várias Strings usando a classe StringJoiner?
Responda: Em Java 8, uma nova classe foi introduzida no pacote java.util, que era conhecido como StringJoiner. Por meio dessa classe, podemos juntar várias strings separadas por delimitadores, além de fornecer prefixo e sufixo a elas.
No programa a seguir, aprenderemos como juntar várias Strings usando a classe StringJoiner. Aqui, temos “,” como o delimitador entre duas strings diferentes. Em seguida, juntamos cinco strings diferentes adicionando-as com a ajuda do método add (). Finalmente, imprimiu o String Joiner.
Na próxima pergunta # 35, você aprenderá como adicionar prefixo e sufixo à string.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(','); // Separated the elements with a comma in between. stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }Resultado:

Q # 35) Escreva um programa Java 8 para adicionar prefixo e sufixo à String?
Responda: Neste programa, temos “,” como delimitador entre duas strings diferentes. Além disso, fornecemos colchetes “(” e “)” como prefixo e sufixo. Em seguida, cinco strings diferentes são unidas, adicionando-as com a ajuda do método add (). Finalmente, imprimiu o String Joiner.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(',', '(', ')'); // Separated the elements with a comma in between. //Added a prefix '(' and a suffix ')' stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }Resultado:

Q # 36) Escreva um programa Java 8 para iterar um Stream usando o método forEach?
Responda: Neste programa, estamos iterando um Stream começando em “número = 2”, seguido pela variável de contagem incrementada em “1” após cada iteração.
Então, estamos filtrando o número cujo resto não é zero quando dividido pelo número 2. Além disso, definimos o limite como? 5, o que significa apenas 5 vezes que ele irá iterar. Finalmente, estamos imprimindo cada elemento usando forEach.
import java.util.stream.*; public class Java8 { public static void main(String() args){ Stream.iterate(2, count->count+1) // Counter Started from 2, incremented by 1 .filter(number->number%2==0) // Filtered out the numbers whose remainder is zero // when divided by 2 .limit(5) // Limit is set to 5, so only 5 numbers will be printed .forEach(System.out::println); } } Resultado:

Q # 37) Escreva um programa Java 8 para classificar uma matriz e, em seguida, converta a matriz classificada em Stream?
Responda: Neste programa, usamos a classificação paralela para classificar uma matriz de inteiros. Em seguida, convertemos o array classificado em Stream e com a ajuda de forEach, imprimimos cada elemento de um Stream.
import java.util.Arrays; public class Java8 { public static void main(String() args) { int arr() = { 99, 55, 203, 99, 4, 91 }; Arrays.parallelSort(arr); // Sorted the Array using parallelSort() Arrays.stream(arr).forEach(n -> System.out.print(n + ' ')); /* Converted it into Stream and then printed using forEach */ } }Resultado:

Q # 38) Escreva um programa Java 8 para encontrar o número de Strings em uma lista cujo comprimento é maior que 5?
Responda: Neste programa, quatro Strings são adicionadas à lista usando o método add () e, em seguida, com a ajuda da expressão Stream e Lambda, contamos as strings que têm um comprimento maior que 5.
import java.util.ArrayList; import java.util.List; public class Java8 { public static void main(String() args) { List list = new ArrayList(); list.add('Saket'); list.add('Saurav'); list.add('Softwaretestinghelp'); list.add('Steve'); // Added elements into the List long count = list.stream().filter(str -> str.length() > 5).count(); /* Converted the list into Stream and filtering out the Strings whose length more than 5 and counted the length */ System.out.println('We have ' + count + ' strings with length greater than 5'); } }Resultado:

Q # 39) Escreva um programa Java 8 para concatenar dois Streams?
Responda: Neste programa, criamos dois Streams das duas listas já criadas e depois os concatenamos usando um método concat () no qual duas listas são passadas como um argumento. Por fim, imprimiu os elementos do fluxo concatenado.
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Java8 { public static void main(String() args) { List list1 = Arrays.asList('Java', '8'); List list2 = Arrays.asList('explained', 'through', 'programs'); Stream concatStream = Stream.concat(list1.stream(), list2.stream()); // Concatenated the list1 and list2 by converting them into Stream concatStream.forEach(str -> System.out.print(str + ' ')); // Printed the Concatenated Stream } }Resultado:

Q # 40) Escreva um programa Java 8 para remover os elementos duplicados da lista?
Responda: Neste programa, armazenamos os elementos em um array e os convertemos em uma lista. Depois disso, usamos stream e o coletamos como “Set” com a ajuda do método “Collectors.toSet ()”.
import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Java8 { public static void main(String() args) { Integer() arr1 = new Integer() { 1, 9, 8, 7, 7, 8, 9 }; List listdup = Arrays.asList(arr1); // Converted the Array of type Integer into List Set setNoDups = listdup.stream().collect(Collectors.toSet()); // Converted the List into Stream and collected it to “Set” // Set won't allow any duplicates setNoDups.forEach((i) -> System.out.print(' ' + i)); } }Resultado:

Conclusão
Neste artigo, entendemos os novos recursos introduzidos no Java 8. Cobrimos todas as principais perguntas da entrevista do Java 8 e suas respostas em detalhes.
Ao ler este tutorial, você deve ter adquirido conhecimento sobre as novas APIs para manipulação de data e hora, novos recursos do Java 8, novas APIs de streaming junto com os exemplos de programação apt de acordo com o conceito. Esses novos conceitos ou recursos fazem parte do processo de entrevista quando você está pronto para as posições Java mais desafiadoras.
Tudo de bom!!
=> Verifique TODOS os tutoriais Java aqui.
Leitura recomendada
- Perguntas e respostas da entrevista
- Perguntas e respostas da entrevista de teste de ETL
- Algumas perguntas e respostas complicadas de testes manuais
- 40 principais perguntas e respostas da entrevista de programação C
- As 40 perguntas e respostas mais populares da entrevista J2EE que você deve ler
- Perguntas da entrevista de Spock com respostas (mais populares)
- 25 melhores perguntas e respostas da entrevista de teste do Agile
- As 32 melhores perguntas e respostas da entrevista de datastage