35+ Java 8 perguntas e respostas da entrevista (2024)
Seja um técnico ou qualquer outro profissional, as entrevistas sempre tiram a adrenalina do nervosismo. Porém, para se destacar da multidão, é importante aprimorar suas habilidades e apostar em suas habilidades. Além disso, ter em mãos as perguntas mais frequentes Java 8 perguntas e respostas da entrevista podem ser mais inteligentes.
Portanto, aprofunde-se nessas perguntas da entrevista sobre Java 8 para iniciantes e experientes para acertar suas próximas entrevistas.
Java 8 perguntas da entrevista para calouros e experiência
1) Java 8 quedas em qual paradigma de programação?
Java 8 se enquadra no seguinte paradigma de programação:
- Linguagem de programação orientada a objetos ou classes.
- Linguagem de programação funcional.
- Linguagem de programação processual especificada.
- Linguagem de programação lógica.
2) Por que alguém deveria usar a classe Opcional?
A classe opcional é uma classe de contêiner recém-introduzida que é útil para demonstrar os valores opcionais existentes ou inexistentes. Sua principal vantagem é evitar verificações nulas e nulas e facilitar métodos úteis para verificar a existência de um valor para uma determinada variável.
3) Cite alguns recursos recentes introduzidos em Java 8.
Abaixo estão os recursos mais recentes introduzidos em Java 8:
- Expressões Lambda: É um Java função que você pode compartilhar ou chamar de objeto.
- Interferência do método: Ele usa a função como critério para implementar um método.
- Interferência Funcional: Cada interferência funcional está associada a um único método abstrato conhecido como método funcional.
- Método padrão: É útil na implementação de métodos nas interfaces que ajudam a permitir o potencial de 'evolução da interface'.
- API de data e hora: É uma versão aprimorada, porém inspirada, das APIs java time para lidar com as desvantagens da última versão.
- API de fluxo é chamada de camada abstrata, que ajuda a canalizar os dados de processamento.
- Opcional: A classe wrapper é útil para verificar os valores nulos e processar os dados adicionais.
- JavaScript e motor Nashorn: É a versão melhorada do JavaScript Engine, que é útil para habilitar sua funcionalidade em Java, substituindo Rinoceronte.
4) Especifique as vantagens de usar java 8
Aqui estão alguns benefícios de usar Java 8:
- Ajuda na criação de aplicativos de forma muito mais rápida e fácil.
- Ele fornece um ambiente muito estável para os desenvolvedores.
- Códigos concisos, reutilizáveis e fáceis de compreender.
- Suporte melhorado e eficaz.
- Fácil de portar em vários sistemas operacionais.
- Códigos padrão mínimos.
5) O que é uma coleção e em que ela difere de um stream?
Uma coleção é um banco de dados na memória que registra todos os valores de acordo com a estrutura de dados atual. Portanto, antes de adicioná-lo à coleção, é importante calcular cada um deles. Já um stream é uma estrutura de dados visualmente fixa onde podemos computar os elementos de acordo com nossas necessidades.
6) Qual é a expressão Lambada?
A expressão lambada é um tipo de função que não tem nome e às vezes é chamada de função anônima porque não possui seu próprio tipo de informação. Você pode usá-lo conforme sua necessidade e é muito útil para repetir, filtrar e extrair quaisquer dados da coleção.
Exemplo:
import java. util.Arrays; import java.util.List; import java.util.stream.Collectors; public class LambdaExpressionExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("C")) .map(name -> name.toUpperCase()) .collect(Collectors.toList()); System.out.println(filteredNames); } }
Saída:
Charlie
7) Definir pipeline de fluxo
O pipeline de fluxo é um método de agrupar diferentes operações. Você pode conseguir isso categorizando suas operações de fluxo em duas partes. Operações intermediárias e terminais.
Sempre que uma operação intermediária é executada, ela retorna uma instância para o pipeline de fluxo. Portanto, qualquer usuário pode configurar um número irracional de operações intermediárias para agilizar os dados e, em última análise, formar um pipeline de processamento.
Além disso, para finalizar os pipelines, é necessário que haja uma operação terminal ao final do processo.
8) O que são predicado e consumidor em Java 8?
Um predicado é uma interface funcional que normalmente recebe argumentos e recupera um valor booleano. Você pode usá-lo para aplicar filtro a uma coleção de objetos.
Por outro lado, o consumidor é referido como uma interface funcional embutida encontrada em JavaPacote .util.function. Você pode usá-lo para consumir qualquer objeto, e ele pega o valor de entrada e não fornece nada.
9) Por que o método peek() é usado em Java 8?
O método peek() ajuda a suportar a depuração, onde se deseja observar os elementos conforme eles tendem a fluir de um ponto específico em um pipeline. É uma representação da nossa observação de como cada elemento passa.
Sintaxe: public Object peek()
10) O que faz de você o candidato ideal para o Java função de desenvolvedor?
Aqui estão algumas qualidades importantes que podem torná-lo um candidato ideal para o Java função do desenvolvedor:
- Você deve ser capaz de escrever códigos claros, fáceis de compreender e eficientes.
- Uma compreensão profunda dos padrões e conceitos de “OOP ou programação orientada a objetos. "
- Um bom conhecimento de vários padrões arquitetônicos e de design.
- Familiaridade com Java padrões de simultaneidade.
- Experiência e conhecimento de trabalhar com vários frameworks de aplicações web, como Spark e jogar.
- Conhecimento fundamental de Java Máquina Virtual ou JVM, suas desvantagens, solução alternativa, etc.
- Boa experiência no uso de bancos de dados incorporados e externos.
11) Explique a 'Interface Funcional'.
Uma interface com apenas um resumo é chamada de interface funcional. Também é conhecido como Método Abstrato Único ou SAM. Entretanto, a anotação @FunctionalInterface é opcional e pode ser usada mesmo que não esteja lá. Ele se estende para a outra interface se não tiver nenhum resumo.
12) Por que os métodos estáticos são necessários em Java 8?
A referência de método estático é conhecida como utilitário ou método auxiliar, que está vinculado a uma interface. Também é uma classe que não está vinculada a nenhum objeto.
Aqui estão as razões para usar o método estático em Java:
- Útil para manter e estender a API.
- Implica uma divisão clara e concisa de responsabilidades, e você não precisa ter uma classe de utilitário para ter as coleções de utilitários.
- Útil para manter todas as interfaces em uma interface comum em vez de interfaces específicas.
13) Quais são as vantagens do Nashorn?
Nashorn é o mais avançado e novo JavaScript mecanismo de processamento introduzido em Java 8. Anteriormente, era baseado no Mozilla Rhino. Ele fornece conformidade aprimorada com ECMA JavaScript. É mais rápido que suas versões anteriores.
14) Qual a diferença entre a API Collection e a API Stream?
Aqui estão algumas diferenças importantes entre Collection API e Stream API
API de coleção | API de fluxo |
---|---|
A API de coleção foi usada pela primeira vez em Java 1.2 | A API Stream foi introduzida pela primeira vez em Java SE8. |
Você pode usá-lo para armazenar dados ilimitados. | Você pode usá-lo para calcular dados ilimitados. |
A API de coleção permite que você use Iterator e Spilterator para iterar os dados. | A API Stream permite que você use Iterator e Spilterator para iterar os dados. |
A API de coleção é fácil de acessar. | API in-stream, não há uma maneira direta de alcançar elementos específicos. |
Também facilita o processamento de acordo com suas necessidades. | A API Stream pode ser processada apenas uma vez. |
15) Descreva PermGenSpace e MetaSpace.
PermGen ou Espaço de Geração Permanente é um tipo exclusivo de espaço de heap usado para rastrear metadados armazenados que agora são removidos em Java 8.
Com esta nova versão, o armazenamento dos metadados será feito em uma memória semelhante conhecida como “MetaSpace”. Não é transferível Java A memória heap é uma versão melhorada do PermGen em aspectos de ajuste automático, coleta de lixo, etc.
16) Como a Interface Funcional é criada em Java 8?
Você pode empregar a expressão lambda para implementar o método abstrato da interface funcional em Java 8. Abaixo está um exemplo de codificação do mesmo:
Exemplo
import java.util.function.Consumer; public class FunctionalInterfaceExample { public static void main(String[] args) { Consumer<String> printer = System.out::println; printer.accept("Hello, world!"); } }
Saída:
Hello, world!
17) Quais são as diferenças e semelhanças entre Função e Predicado em Java 8?
Aqui estão as diferenças entre Função e Predicado em Java 8:
- A função é útil na transformação, enquanto o predicado pode ser usado para testar qualquer condição.
- A função pode receber um argumento e fornecer um resultado, enquanto o predicado também pode receber um argumento, mas fornecer apenas o valor booleano.
- A função é denotada por , e Predicado é denotado apenas por , onde T é o tipo de função e R é o resultado.
Abaixo estão as semelhanças entre Função e Predicado:
- Tanto a função quanto o predicado são interfaces funcionais.
- Tanto a função quanto o predicado são funções de argumento único.
18) Explique a diferença entre skip(long) e limit(long) usando um exemplo.
O skip (long) é uma operação intermediária que recupera os elementos restantes após eliminar os n elementos iniciais de um fluxo específico.
Exemplo:
import java.util.Arrays; import java.util.List; public class SkipExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Skip the first two elements of the stream .skip(2) // Print the remaining elements to the console .forEach(System.out::println); } }
Saída:
Charlie Dave Eve
O limite (longo) recupera o fluxo de elementos de um tamanho específico
Exemplo:
import java.util.Arrays; import java.util.List; public class LimitExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Limit the stream to the first three elements .limit(3) // Print the elements to the console .forEach(System.out::println); } }
Saída:
AliceBob Charlie
19) Qual situação é mais adequada para usar API de stream em Java 8?
Você pode usar a API de stream em Java 8. Há necessidade das operações abaixo:
- Você pode realizar processamento paralelo.
- Para executar operações preguiçosamente
- Para realizar operações de banco de dados
- Use para iterações internas.
- Para escrever programação de estilo funcional
- Você pode usar para usar operações de pipeline.
20) Qual é a função da Inferência de Tipo?
A Inferência de Tipo auxilia o compilador a identificar ou reconhecer os tipos de argumentos, apenas tendo uma visão geral da declaração correspondente e da invocação do método.
21) Qual é a maneira mais fácil de identificar e eliminar elementos duplicados de uma lista em Java 8?
A maneira mais fácil de identificar e remover os elementos duplicados é utilizando a operação stream e realizando uma coleta, seguida do uso do método Collections.toSet().
22) Quais são as diretrizes para Interface Funcional?
Abaixo estão as diretrizes para uma interface funcional que está entre as mais solicitadas Java 8 questões de programação:
- Deve ter apenas um método abstrato.
- Você pode ter quantos métodos padrão, pois não é abstrato, e a implementação é dada anteriormente pelo mesmo.
- Um método abstrato, o principal elemento dos métodos públicos de Java.lang, é conhecido em uma interface funcional. O objeto ainda é considerado uma interface útil.
Nota: A explicação para isso é que cada classe de implementação desta interface pode ter uma implementação para este método abstrato que é definida pela própria classe de implementação ou retirada de uma superclasse.
23) Diferencie entre divisor e Iterador.
Aqui estão algumas diferenças entre divisor e iterador:
Divisor | Iterador |
---|---|
Foi introduzido em Java 1.2. | Foi introduzido em Java 1.8. |
Ele apenas itera todos os elementos separadamente. | Ele atravessa todos os elementos separadamente e também em massa. |
Ele atua como um iterador para uma coleção completa de APIs. | Ele atua como um iterador para API de fluxo e coleção. |
Não suportará programação paralela. | Ele suporta programação paralela. |
24) Como você pode chamar um método padrão de uma interface em uma classe?
A palavra-chave default, que está presente no início da assinatura do método, é usada para designar uma declaração de método em uma interface como método padrão. Você pode ignorar o modificador public porque cada declaração de método em uma interface, incluindo métodos padrão, é automaticamente pública.
25) Defina o método padrão. Quando você pode usá-lo?
O método padrão está presente na interface e inclui uma implementação. Este método é útil para adicionar novas funcionalidades a uma determinada interface, mantendo a compatibilidade com versões anteriores junto com suas classes que já estão implementadas em uma interface.
26) Como os Streams são criados em Java, e está entre as perguntas mais frequentes de entrevistas sobre Java 8 Stream?
Streams em Java descreve a sequência de objetos de uma fonte específica, como uma coleção, que dará suporte a operações agregadas. Você pode utilizá-lo para coletar, filtrar, imprimir e alterar uma estrutura de dados para outra.
Aqui estão os exemplos de como criar fluxos em Java:
import java.util.stream.Stream; public class StreamExample { public static void main(String[] args) { Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve"); stream.forEach(System.out::println); } }
Saída:
Alice Bob Charlie Dave Eve
27) O que são operações de fluxo Map e FlatMap?
Map e FlatMap são considerados operações de fluxo e fluxo intermediário que aceitam uma função. Também ajuda na aplicação da função fornecida ao restante dos elementos.
28) Por que precisamos alterar o Java linguagem de programação com frequência?
Temos que alterar o Java linguagem de programação frequentemente devido aos motivos abaixo:
- Você pode usar os recursos de Programação funcional.
- Para utilizar a mais recente tecnologia de CPUs Multi-Core de forma eficaz.
29) Mencione algumas interfaces funcionais usadas em Java 8.
Abaixo estão algumas interfaces funcionais usadas em Java 8:
- BinárioOperator
- Consumidores
- função
- Fornecedor
- UnárioOperator
- BiFunção
- Predicado
30) Quais são as principais classes da API para hora e data?
Listadas abaixo estão as principais classes de API para hora e data usadas em Java 8:
- Horário local
- DataLocalHora
- LocalData
31) Forneça a estrutura/sintaxe básica da expressão Lambda.
A estrutura/sintaxe básica da expressão Lambda é:
(arugument - list) - > {body}
Aqui,
- Argumento – lista: Você pode mantê-lo cheio ou vazio.
- Ficha de seta: É útil para vincular expressões corporais e argumentos – lista.
- Corpo: Consiste em instruções e expressões para a expressão lambda.
32) Quais são as principais características do Stream?
Abaixo estão as principais características do Stream:
- Pipelining
- fonte
- Agregado Operações
- Sequência de Elementos
- Iterações Automáticas
33) Quais são as operações intermediárias mais comuns?
Alguns dos tipos mais comuns de expressões intermediárias são:
- Distinto ()
- Pular (n longo)
- Filtro (Predicado)
- Limite (n longo)
- Mapa (Função)
34) Quais são os tipos de operações mais comuns no Terminal?
Abaixo estão os tipos mais comuns de operações de terminal:
- Contar
- Reduzir
- min
- AllMatch
- Max
- Qualquer correspondência
- Para Matriz
35) O que é referência de método em Java 8?
Referência de método em Java 8 é uma forma de se referir à interface funcional. É conhecida como uma forma muito mais fácil e eficiente de expressão lambda. Ao usar expressões lambda para referir-se a um método, você pode substituí-las pela referência do método.
36) Qual a diferença entre as iterações internas e externas?
Abaixo estão as diferenças entre iteração interna e externa:
Iteração Interna | Iteração Externa |
---|---|
Também é conhecido como iterador passivo ou implícito. | Também é conhecido como iterador ativo ou explícito. |
É transportado internamente em vários objetos. | É transportado externamente em vários objetos. |
É utilizado na programação funcional. | É utilizado em programação orientada a objetos. |
É responsável por muito menos erros. No entanto, a codificação é obrigatória para isso. | É responsável por mais erros. No entanto, a codificação não é necessária. |
37) A inferência de tipo foi usada em versões anteriores do Java?
Java introduziu interferência de tipo em Java 5, mas com acesso muito limitado. Mas ao longo dos anos, as possibilidades de interferência de tipo aumentaram, e está no seu melhor Java 8.
38) Escreva um Java 8 programa que pode encontrar o número mínimo e máximo de um Stream.
import java.util.Arrays; import java.util.stream.IntStream; public class MinMaxExample { public static void main(String[] args) { int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4}; int min = IntStream.of(numbers).min().getAsInt(); int max = IntStream.of(numbers).max().getAsInt(); System.out.println("Minimum number: " + min); System.out.println("Maximum number: " + max); } }
Saída:
Minimum number: 1 Maximum number: 9
39) Como unir várias Strings por meio da classe StringJoiner?
StringJoiner ajuda a unir uma ou mais String, e isso pode ser feito por meio de um joiner ou delimitador específico. Por exemplo, pode-se unir várias strings separando-as com uma vírgula (,).
Para criar uma string CSV, pode-se gerar um caminho completo para um diretório específico no Linux, o que pode ser feito juntando a String com a ajuda da barra “/”.
40) Qual é a melhor alternativa para expressões lambda em Java 8?
Em geral, utilizamos expressões lambda para criar métodos anônimos que ajudam a obter o resultado desejado. No entanto, há casos em que as expressões lambda não funcionam e usam apenas um método existente.
Portanto, para evitar isso, você pode usar referência de método que pode ajudar a obter a saída desejada. A referência do método é representada usando o símbolo: (dois pontos duplos).