top 50 core java interview questions
Perguntas e respostas mais frequentes da entrevista sobre Java com exemplos:
Neste tutorial, cobrimos mais de 50 perguntas importantes da entrevista em Java para caloiros e candidatos experientes.
Este post sobre as perguntas da entrevista JAVA foi preparado para ajudá-lo a entender os conceitos básicos da programação Java para fins de entrevista. Todos os conceitos importantes de JAVA são explicados aqui com exemplos para seu fácil entendimento.
Este tutorial cobre tópicos de JAVA como definições básicas de Java, conceitos OOP, especificadores de acesso, coleções, exceções, threads, serialização, etc., com exemplos para fazer você se preparar perfeitamente para enfrentar qualquer entrevista JAVA com confiança.
Perguntas e respostas mais populares da entrevista sobre Java
Dada a seguir está uma lista abrangente das perguntas mais importantes e mais comuns da entrevista de programação Java básica e avançada com respostas detalhadas.
P # 1) O que é JAVA?
Responda: Java é uma linguagem de programação de alto nível e independente de plataforma.
Java é uma coleção de objetos. Foi desenvolvido pela Sun Microsystems. Existem muitos aplicativos, sites e jogos desenvolvidos em Java.
P # 2) Quais são os recursos do JAVA?
Resposta: Os recursos do Java são os seguintes:
- Conceitos OOP
- Orientado a Objeto
- Herança
- Encapsulamento
- Polimorfismo
- Abstração
- Plataforma independente: Um único programa funciona em diferentes plataformas sem nenhuma modificação.
- Alta performance: JIT (compilador Just In Time) permite alto desempenho em Java. O JIT converte o bytecode em linguagem de máquina e, em seguida, o JVM inicia a execução.
- Multi-threaded: Um fluxo de execução é conhecido como Thread. A JVM cria um encadeamento que é chamado de encadeamento principal. O usuário pode criar vários threads estendendo a classe de thread ou implementando a interface Runnable.
P # 3) Como o Java permite alto desempenho?
Responda: Java usa o compilador Just In Time para permitir alto desempenho. É usado para converter as instruções em bytecodes.
Q # 4) Nomeie o IDE do Java?
Responda: Eclipse e NetBeans são os IDE de JAVA.
Q # 5) O que você quer dizer com construtor?
Resposta: O construtor pode ser explicado em detalhes com os pontos alistados:
- Quando um novo objeto é criado em um programa, um construtor é chamado de acordo com a classe.
- O construtor é um método que tem o mesmo nome do nome da classe.
- Se um usuário não criar um construtor implicitamente, um construtor padrão será criado.
- O construtor pode estar sobrecarregado.
- Se o usuário criou um construtor com um parâmetro, ele deve criar outro construtor explicitamente sem um parâmetro.
Q # 6) O que se entende por variável local e variável de instância?
Responda:
Variáveis locais são definidos no método e escopo das variáveis que existem dentro do próprio método.
Variável de instância é definido dentro da classe e fora do método e o escopo das variáveis existe em toda a classe.
P # 7) O que é uma classe?
Responda: Todos os códigos Java são definidos em uma classe. Possui variáveis e métodos.
Variáveis são atributos que definem o estado de uma classe.
Métodos são o lugar onde a lógica de negócios exata deve ser executada. Ele contém um conjunto de instruções (ou) instruções para satisfazer o requisito específico.
Exemplo:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } } Q # 8) O que é um objeto?
Responda: Uma instância de uma classe é chamada de objeto. O objeto tem estado e comportamento.
Sempre que a JVM lê a palavra-chave “new ()”, ela criará uma instância dessa classe.
Exemplo:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } } O código acima cria o objeto para a classe Addition.
Q # 9) Quais são os conceitos de OOPs?
Resposta: Os conceitos de OOPs incluem:
- Herança
- Encapsulamento
- Polimorfismo
- Abstração
- Interface
Leitura sugerida = >> Principais perguntas da entrevista de OOPs
P # 10) O que é herança?
Responda: Herança significa que uma classe pode se estender para outra classe. Para que os códigos possam ser reutilizados de uma classe para outra. A classe existente é conhecida como Superclasse, enquanto a classe derivada é conhecida como subclasse.
Exemplo:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ } A herança é aplicável apenas ao público e membros protegidos apenas. Membros privados não podem ser herdados.
Q # 11) O que é encapsulamento?
Resposta: Objetivo do Encapsulamento:
- Protege o código de outras pessoas.
- Manutenção do código.
Exemplo:
Estamos declarando 'a' como uma variável inteira e não deve ser negativa.
public class Addition(){ int a=5; } Se alguém alterar a variável exata como “ a = -5 ' então é ruim.
Para superar o problema, precisamos seguir as etapas abaixo:
- Podemos tornar a variável privada ou protegida.
- Use métodos de acesso público, como set e get.
Para que o código acima possa ser modificado como:
public class Addition(){ private int a = 5; //Here the variable is marked as private } O código abaixo mostra o getter e o setter.
As condições podem ser fornecidas durante a configuração da variável.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }Para encapsulamento, precisamos tornar todas as variáveis de instância privadas e criar setter e getter para essas variáveis. O que, por sua vez, forçará outros a chamarem os configuradores em vez de acessar os dados diretamente.
Q # 12) O que é polimorfismo?
Responda: Polimorfismo significa muitas formas.
Um único objeto pode referir-se à superclasse ou subclasse, dependendo do tipo de referência, que é chamado de polimorfismo.
Exemplo:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args()){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } } Usando o tipo de referência Manipulação, podemos chamar o método “add ()” da classe Addition. Essa capacidade é conhecida como polimorfismo. O polimorfismo é aplicável para predominante e não para sobrecarregando .
P # 13) O que significa sobreposição de método?
Resposta: A substituição do método acontece se o método da subclasse satisfizer as condições abaixo com o método da superclasse:
- O nome do método deve ser o mesmo
- O argumento deve ser o mesmo
- O tipo de retorno também deve ser o mesmo
O principal benefício da substituição é que a subclasse pode fornecer algumas informações específicas sobre esse tipo de subclasse do que a superclasse.
Exemplo:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args()){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }add.add () método chama o método add () na subclasse e não na classe pai. Portanto, ele substitui o método da Superclasse e é conhecido como Substituição de Método.
Q # 14) O que significa sobrecarga?
Responda: A sobrecarga do método ocorre para classes diferentes ou dentro da mesma classe.
Para sobrecarga de método, o método da subclasse deve satisfazer as condições abaixo com o método (ou) métodos da superclasse na mesma classe:
- Mesmo nome de método
- Diferentes tipos de argumento
- Pode haver diferentes tipos de devolução
Exemplo:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args()){ Addition addition = new Addition(); addition.add(); } }Aqui, o método add () tem parâmetros diferentes na classe Addition que está sobrecarregado na mesma classe que com a superclasse.
Observação: O polimorfismo não é aplicável para sobrecarga de método.
Q # 15) O que significa interface?
Responda: Múltiplas heranças não podem ser alcançadas em java. Para superar este problema, o conceito de Interface é introduzido.
Uma interface é um modelo que possui apenas declarações de método e não a implementação de método.
Exemplo:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); } - Todos os métodos da interface são internamente vazio abstrato público .
- Todas as variáveis na interface são internamente final estática pública isso é constantes.
- As classes podem implementar a interface e não estende.
- A classe que implementa a interface deve fornecer uma implementação para todos os métodos declarados na interface.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } } Q # 16) O que significa classe abstrata?
Responda: Podemos criar a classe Abstract usando a palavra-chave “Abstract” antes do nome da classe. Uma classe abstrata pode ter métodos “abstratos” e métodos “não abstratos” que são uma classe concreta.
Método abstrato:
O método que possui apenas a declaração e não a implementação é denominado método abstrato e possui a palavra-chave denominada “abstrato”. As declarações terminam com um ponto e vírgula.
Exemplo:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } } - Uma classe abstrata também pode ter um método não abstrato.
- A Subclasse concreta que estende a classe Abstract deve fornecer a implementação para métodos abstratos.
Q # 17) Diferença entre Array e Array List.
Responda: A diferença entre Array e Lista de Array pode ser entendida na tabela abaixo:
| Variedade | Lista de Array |
|---|---|
| O tamanho deve ser fornecido no momento da declaração da matriz. String () name = nova String (2) | O tamanho pode não ser necessário. Ele muda o tamanho dinamicamente. ArrayList name = new ArrayList |
| Para colocar um objeto em array, precisamos especificar o índice. nome (1) = “livro” | Nenhum índice necessário. name.add (“livro”) |
| Array não tem tipo parametrizado | ArrayList em java 5.0 são parametrizados. Ex: Este colchete angular é um parâmetro de tipo que significa uma lista de String. |
Q # 18) Diferença entre String, String Builder e String Buffer.
Responda:
Fragmento: Variáveis de string são armazenadas em um “pool de string constante”. Uma vez que a referência da string altera o valor antigo que existe no “pool de strings constantes”, ela não pode ser apagada.
Exemplo:
Nome da string = “livro”;
Pool de cordas constantes
.
Se o nome-valor mudou de “livro” para “caneta”.
Pool de cordas constantes

Então, o valor mais antigo permanece no pool de string constante.
Buffer de string:
- Aqui, os valores da string são armazenados em uma pilha. Se os valores forem alterados, o novo valor substituirá o antigo.
- O buffer de string é sincronizado, o que é seguro para threads.
- O desempenho é mais lento do que o String Builder.
Exemplo:
String Buffer name = ”livro”;

Assim que o valor do nome tiver sido alterado para “caneta”, o “livro” é apagado da pilha.

String Builder:
É o mesmo que String Buffer, exceto para o String Builder que não é encadeado com segurança que não está sincronizado. Obviamente, o desempenho é rápido.
Q # 19) Explique sobre os especificadores de acesso Público e Privado.
Responda: Métodos e variáveis de instância são conhecidos como membros.
Público:
Os membros públicos são visíveis no mesmo pacote, bem como no pacote externo de outros pacotes.

Os membros públicos da Classe A são visíveis para a Classe B (mesmo pacote), bem como para a Classe C (pacotes diferentes).
Privado:
Os membros privados são visíveis apenas na mesma classe e não para as outras classes no mesmo pacote, bem como classes nos pacotes externos.

Os membros privados da classe A são visíveis apenas nessa classe. É invisível para a classe B e também para a classe C.
Q # 20) Diferença entre especificadores de acesso padrão e protegido.
Responda:
Predefinição: Métodos e variáveis declarados em uma classe sem nenhum especificador de acesso são chamados de padrão.

Os membros padrão da Classe A são visíveis para as outras classes que estão dentro do pacote e invisíveis para as classes que estão fora do pacote.
Portanto, os membros da Classe A são visíveis para a Classe B e invisíveis para a Classe C.
Protegido:
.
Protegido é o mesmo que Padrão, mas se uma classe estender, ela ficará visível mesmo se estiver fora do pacote.
Os membros da Classe A são visíveis para a Classe B porque está dentro do pacote. Para a Classe C, é invisível, mas se a Classe C estender a Classe A, os membros ficarão visíveis para a Classe C, mesmo se estiver fora do pacote.
Q # 21) Diferença entre HashMap e HashTable.
Responda: A diferença entre HashMap e HashTable pode ser vista abaixo:
| HashMap | HashTable |
|---|---|
| Métodos não são sincronizados | Métodos-chave são sincronizados |
| Não é thread safety | Segurança da linha |
| Iterator é usado para iterar os valores | Enumerator é usado para iterar os valores |
| Permite uma chave nula e vários valores nulos | Não permite nada que seja nulo |
| O desempenho é alto do que HashTable | O desempenho está lento |
Q # 22) Diferença entre HashSet e TreeSet.
Responda: A diferença entre HashSet e TreeSet pode ser vista abaixo:
| HashSet | TreeSet |
|---|---|
| Os elementos inseridos estão em ordem aleatória | Mantém os elementos na ordem de classificação |
| Pode ser capaz de armazenar objetos nulos | Não foi possível armazenar objetos nulos |
| O desempenho é rápido | O desempenho está lento |
Q # 23) Diferença entre classe abstrata e interface.
Resposta: As diferenças entre Abstract Class e Interface são as seguintes:
Classe abstrata:
- As classes abstratas têm um construtor padrão e é chamado sempre que a subclasse concreta é instanciada.
- Ele contém métodos abstratos, bem como métodos não abstratos.
- A classe que estende a classe Abstract não deve exigir a implementação de todos os métodos, apenas métodos Abstract precisam ser implementados na subclasse concreta.
- A classe abstrata contém variáveis de instância.
Interface:
- Ele não tem nenhum construtor e não pode ser instanciado.
- O método abstrato sozinho deve ser declarado.
- As classes que implementam a interface devem fornecer a implementação de todos os métodos.
- A interface contém apenas constantes.
Q # 24) Qual é o significado de coleções em Java?
Responda: Coleção é uma estrutura projetada para armazenar os objetos e manipular o design para armazenar os objetos.
As coleções são usadas para realizar as seguintes operações:
- Procurando
- Ordenação
- Manipulação
- Inserção
- Eliminação
Um grupo de objetos é conhecido como coleções. Todas as classes e interfaces para coleta estão disponíveis no pacote de utilitários Java.
Q # 25) Quais são todas as classes e interfaces que estão disponíveis nas coleções?
Responda: A seguir estão as classes e interfaces disponíveis nas coleções:
Interfaces:
- Coleção
- Lista
- Definir
- Mapa
- Conjunto Ordenado
- Mapa Ordenado
- Fila
Aulas:
- Listas:
- Lista de Array
- Vetor
- Lista Ligada
Conjuntos:
- Conjunto de hash
- Conjunto de hash vinculado
- Conjunto de árvores
Mapas:
- Hash Map
- Tabela Hash
- TreeMap
- Mapa Hashed Vinculado
Fila:
- Fila de prioridade
P # 26) O que significa ordenado e classificado em coleções?
Responda:
Pedido: Isso significa que os valores armazenados em uma coleção são baseados nos valores adicionados à coleção. Portanto, podemos iterar os valores da coleção em uma ordem específica.
Ordenado: Os mecanismos de classificação podem ser aplicados interna ou externamente, de modo que o grupo de objetos classificados em uma coleção específica seja baseado nas propriedades dos objetos.
Q # 27) Explique as diferentes listas disponíveis na coleção.
Responda: Os valores adicionados à lista são baseados na posição do índice e são ordenados pela posição do índice. Duplicados são permitidos.
Os tipos de listas são:
a) Lista de matrizes:
- Iteração rápida e acesso aleatório rápido.
- É uma coleção ordenada (por índice) e não ordenada.
- Ele implementa a interface de acesso aleatório.
Exemplo:
public class Fruits{ public static void main (String ( ) args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }Resultado:
(Maçã, cereja, kiwi, banana, cereja)
A partir da saída, Array List mantém o pedido de inserção e aceita as duplicatas. Mas não está resolvido.
b) Vetor:
É o mesmo que Array List.
- Os métodos vetoriais são sincronizados.
- Segurança da linha.
- Ele também implementa o acesso aleatório.
- A segurança do thread geralmente causa um impacto no desempenho.
Exemplo:
public class Fruit { public static void main (String ( ) args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }Resultado:
(cereja, maçã, banana, kiwi, maçã)
Vector também mantém o pedido de inserção e aceita as duplicatas.
c) Lista vinculada:
- Os elementos estão duplamente ligados uns aos outros.
- O desempenho é mais lento do que a lista Array.
- Boa escolha para inserção e exclusão.
- Em Java 5.0, ele suporta métodos de fila comuns peek (), Pool (), Offer () etc.
Exemplo:
public class Fruit { public static void main (String ( ) args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } } Resultado:
(banana, cereja, maçã, kiwi, banana)
Mantém o pedido de inserção e aceita as duplicatas.
P # 28) Explique sobre Set e seus tipos em uma coleção.
Responda: Set se preocupa com a exclusividade. Não permite duplicações. Aqui, o método “equals ()” é usado para determinar se dois objetos são idênticos ou não.
a) Conjunto de hash:
- Não ordenado e não ordenado.
- Usa o código hash do objeto para inserir os valores.
- Use quando o requisito for 'sem duplicatas e não se preocupe com o pedido'.
Exemplo:
public class Fruit { public static void main (String( ) args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } } Resultado:
(banana, cereja, kiwi, maçã)
Ele não segue nenhum pedido de inserção. Duplicatas não são permitidas.
b) Conjunto de hash vinculado:
- Uma versão ordenada do conjunto hash é conhecida como Conjunto Hash Vinculado.
- Mantém uma lista duplamente vinculada de todos os elementos.
- Use quando um pedido de iteração for necessário.
Exemplo:
public class Fruit { public static void main (String( ) args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }Resultado:
(banana, cereja, maçã, kiwi)
Ele mantém a ordem de inserção na qual foram adicionados ao Conjunto. Duplicatas não são permitidas.
c) Conjunto de árvores:
- É uma das duas coleções classificadas.
- Utiliza a estrutura em árvore “Read-Black” e garante que os elementos estarão em ordem crescente.
- Podemos construir um conjunto de árvores com o construtor usando um comparador (ou) comparável.
Exemplo:
public class Fruits{ public static void main (String( )args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }Resultado:
(maçã, banana, cereja, kiwi)
TreeSet classifica os elementos em ordem crescente. E duplicatas não são permitidas.
P # 29) Explique sobre o Mapa e seus tipos.
Resposta: Mapa se preocupa com o identificador exclusivo. Podemos mapear uma chave única para um valor específico. É um par chave / valor. Podemos pesquisar um valor com base na chave. Como o conjunto, o mapa também usa o método “equals ()” para determinar se duas chaves são iguais ou diferentes.
O mapa é dos seguintes tipos:
a) Hash Map:
- Mapa não ordenado e não ordenado.
- Hashmap é uma boa escolha quando não nos importamos com o pedido.
- Ele permite uma chave nula e vários valores nulos.
Exemplo:
Public class Fruit{ Public static void main(String( ) args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }Resultado:
{key2 = banana, key1 = cherry, key4 = kiwi, key3 = apple}
Chaves duplicadas não são permitidas no mapa.
Ele não mantém nenhum pedido de inserção e não está classificado.
b) Tabela de hash:
- Como a chave vetorial, os métodos da classe são sincronizados.
- Segurança do fio e, portanto, retarda o desempenho.
- Não permite nada que seja nulo.
Exemplo:
public class Fruit{ public static void main(String( )args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }Resultado:
{key2 = apple, key1 = cherry, key4 = kiwi, key3 = banana}
Chaves duplicadas não são permitidas.
c) Mapa de hash vinculado:
- Mantém o pedido de inserção.
- Mais lento do que o mapa Hash.
- Posso esperar uma iteração mais rápida.
Exemplo:
public class Fruit{ public static void main(String( ) args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }Resultado:
{key2 = apple, key1 = cherry, key4 = kiwi, key3 = banana}
Chaves duplicadas não são permitidas.
d) TreeMap:
- Mapa ordenado.
- Como o conjunto de árvores, podemos construir uma ordem de classificação com o construtor.
Exemplo:
public class Fruit{ public static void main(String( )args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }Resultado:
perguntas da entrevista de consulta sql para testadores
{key1 = cereja, key2 = banana, key3 = apple, key4 = kiwi}
Ele é classificado em ordem crescente com base na chave. Chaves duplicadas não são permitidas.
Q # 30) Explique a fila de prioridade.
Resposta: Interface da fila
Fila de prioridade: A classe de lista vinculada foi aprimorada para implementar a interface de fila. As filas podem ser tratadas com uma lista vinculada. O objetivo de uma fila é “Prioridade de entrada, Prioridade de saída”.
Portanto, os elementos são ordenados naturalmente ou de acordo com o comparador. A ordem dos elementos representa sua prioridade relativa.
P # 31) O que se entende por exceção?
Responda: Uma exceção é um problema que pode ocorrer durante o fluxo normal de execução. Um método pode lançar uma exceção quando algo soa em tempo de execução. Se essa exceção não puder ser tratada, a execução será encerrada antes de concluir a tarefa.
Se tratamos da exceção, o fluxo normal continua. As exceções são uma subclasse de java.lang.Exception.
Exemplo para lidar com a exceção:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block } P # 32) Quais são os tipos de exceções?
Responda: Existem dois tipos de exceções. Eles são explicados abaixo em detalhes.
a) Exceção verificada:
Essas exceções são verificadas pelo compilador no momento da compilação. As classes que estendem a classe Throwable, exceto Runtime exception e Error, são chamadas de exceção marcada.
As exceções verificadas devem declarar a exceção usando a palavra-chave throws (ou) cercada por try / catch apropriado.
Por exemplo, Exceção ClassNotFound
b) Exceção não verificada:
Essas exceções não são verificadas durante o tempo de compilação pelo compilador. O compilador não força para lidar com essas exceções. Inclui:
- Exceção Aritmética
- Índice de matriz fora dos limites de exceção
P # 33) Quais são as diferentes maneiras de lidar com exceções?
Responda: Duas maneiras diferentes de lidar com exceções são explicadas a seguir:
a) Usando try / catch:
O código arriscado está rodeado por um bloco try. Se ocorrer uma exceção, ela será capturada pelo bloco catch que é seguido pelo bloco try.
Exemplo:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } } b) Ao declarar a palavra-chave throws:
No final do método, podemos declarar a exceção usando a palavra-chave throws.
Exemplo:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } } P # 34) Quais são as vantagens do tratamento de exceções?
Resposta: As vantagens são as seguintes:
- O fluxo normal da execução não será encerrado se uma exceção for tratada
- Podemos identificar o problema usando a declaração catch
Q # 35) Quais são as palavras-chave de tratamento de exceção em Java?
Resposta: Listados abaixo estão as duas palavras-chave de tratamento de exceções:
uma tentativa:
Quando um código arriscado é cercado por um bloco try. Uma exceção que ocorre no bloco try é capturada por um bloco catch. Try pode ser seguido por catch (ou) finally (ou) both. Mas qualquer um dos blocos é obrigatório.
b) pegar:
Isso é seguido por um bloco try. As exceções são detectadas aqui.
c) finalmente:
Isso é seguido por um bloco try (ou) bloco catch. Este bloco é executado independentemente de uma exceção. Portanto, geralmente são fornecidos códigos de limpeza aqui.
Q # 36) Explique sobre a propagação de exceções.
Responda: A exceção é primeiro lançada do método que está no topo da pilha. Se não travar, ele exibe o método e passa para o método anterior e assim por diante até que sejam obtidos.
Isso é chamado de propagação de exceção.
Exemplo:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); } No exemplo acima, a pilha se parece com a mostrada abaixo:
Se ocorrer uma exceção no Adição() método não é capturado, então ele passa para o método adicionar() . Em seguida, ele é movido para o a Principal() método e então interromperá o fluxo de execução. É chamado de Propagação de Exceção.
Q # 37) Qual é a palavra-chave final em Java?
Responda:
Final variável: Depois que uma variável é declarada como final, o valor da variável não pode ser alterado. É como uma constante.
Exemplo:
final int = 12;
Método final: Uma palavra-chave final em um método não pode ser substituída. Se um método for marcado como final, ele não pode ser substituído pela subclasse.
Aula final: Se uma classe é declarada como final, então a classe não pode ser subclassificada. Nenhuma classe pode estender a aula final.
Q # 38) O que é um Tópico?
Responda: Em Java, o fluxo de execução é denominado Thread. Cada programa java tem pelo menos um encadeamento chamado encadeamento principal, o encadeamento principal é criado pela JVM. O usuário pode definir seus próprios threads estendendo a classe Thread (ou) implementando a interface Runnable. Threads são executados simultaneamente.
Exemplo:
public static void main(String() args){//main thread starts here } Q # 39) Como você faz um thread em Java?
Responda: Existem duas maneiras de criar um tópico.
a) Estender classe Thread: Estender uma classe Thread e substituir o método de execução. O tópico está disponível em java.lang.thread.
Exemplo:
Public class Addition extends Thread { public void run () { } } A desvantagem de usar uma classe de thread é que não podemos estender nenhuma outra classe porque já estendemos a classe de thread. Podemos sobrecarregar o método run () em nossa classe.
b) Implementar interface executável: Outra maneira é implementar a interface executável. Para isso, devemos fornecer a implementação do método run () que é definido na interface.
Exemplo:
Public class Addition implements Runnable { public void run () { } } Q # 40) Explique sobre o método join ().
Responda: O método Join () é usado para unir um segmento ao final do segmento atualmente em execução.
Exemplo:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); } Com base no código acima, o thread principal iniciou a execução. Quando chega ao código t.start () então 'thread t' inicia a própria pilha para a execução. JVM alterna entre o encadeamento principal e o 'encadeamento t'.
Assim que alcançar o código t.join () então 'thread t' sozinho é executado e completa sua tarefa, então apenas o thread principal inicia a execução.
É um método não estático. O método Join () possui uma versão sobrecarregada. Portanto, podemos mencionar a duração do tempo no método join () também “.s”.
Q # 41) O que o método de rendimento da classe Thread faz?
Responda: Um método yield () move o thread atualmente em execução para um estado executável e permite que outros threads sejam executados. Para que os threads de prioridade igual tenham uma chance de execução. É um método estático. Ele não libera nenhum bloqueio.
O método Yield () move o thread de volta ao estado Executável apenas, e não o thread para o bloco sleep (), wait () (ou).
Exemplo:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } } Q # 42) Explique sobre o método wait ().
Resposta: espere () método é usado para fazer o thread esperar no pool de espera. Quando o método wait () é executado durante a execução de uma thread, imediatamente a thread desiste do bloqueio do objeto e vai para o pool de espera. O método Wait () diz ao thread para esperar por um determinado período de tempo.
Então, a thread será ativada após o método notificar () (ou) notificar all () ser chamado.
Wait () e os outros métodos mencionados acima não fornecem o bloqueio no objeto imediatamente até que o thread em execução no momento conclua o código sincronizado. É usado principalmente em sincronização.
Exemplo:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } } Q # 43) Diferença entre o método Notice () e o método NoticeAll () em Java.
Resposta: As diferenças entre o método notificar () e o método notificarAll () estão listadas abaixo:
| notificar () | notificar tudo () |
|---|---|
| Este método é usado para enviar um sinal para despertar um único thread no pool de espera. | Este método envia o sinal para despertar todos os threads em um spool em espera. |
Q # 44) Como parar um tópico em java? Explicar sobre o método sleep () em um tópico?
Responda: Podemos interromper um thread usando os seguintes métodos de thread:
- Dormindo
- Espera
- Bloqueado
Dorme: O método Sleep () é usado para suspender a thread atualmente em execução por um determinado período de tempo. Assim que o thread é ativado, ele pode passar para o estado executável. Portanto, o método sleep () é usado para atrasar a execução por algum período.
É um método estático.
Exemplo:
Fio. Sono (2000)
Portanto, isso atrasa o thread para dormir 2 milissegundos. O método Sleep () lança uma exceção ininterrupta, portanto, precisamos cercar o bloco com try / catch.
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } } Q # 45) Quando usar a interface Runnable Vs classe Thread em Java?
Responda: Se precisarmos que nossa classe estenda algumas outras classes além do thread, então podemos ir com a interface executável porque em java podemos estender apenas uma classe.
Se não vamos estender nenhuma classe, podemos estender a classe thread.
Q # 46) Diferença entre os métodos start () e run () da classe de thread.
Responda: O método Start () cria uma nova thread e o código dentro do método run () é executado na nova thread. Se chamarmos diretamente o método run (), um novo thread não será criado e o thread em execução continuará a executar o método run ().
Q # 47) O que é Multi-threading?
Responda: Vários threads são executados simultaneamente. Cada encadeamento inicia sua própria pilha com base na prioridade de fluxo (ou) dos encadeamentos.
Programa de exemplo:
public class MultipleThreads implements Runnable { public static void main (String() args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here } Na execução da primeira linha, a JVM chama o método principal e a pilha de encadeamentos principal é exibida como mostrado abaixo.

Assim que a execução chegar, t.start () linha então um novo encadeamento é criado e a nova pilha para o encadeamento também é criada. Agora a JVM muda para o novo encadeamento e o encadeamento principal está de volta ao estado executável.
As duas pilhas têm a aparência mostrada abaixo.

Agora, o thread do usuário executou o código dentro do método run ().

Assim que o método run () for concluído, a JVM volta para o encadeamento principal e o encadeamento do usuário conclui a tarefa e a pilha desaparece.
A JVM alterna entre cada encadeamento até que ambos os encadeamentos sejam concluídos. Isso é chamado de Multi-threading.
Q # 48) Explique o ciclo de vida do thread em Java.
Responda: O tópico tem os seguintes estados:
- Novo
- Executável
- Correndo
- Não executável (bloqueado)
- Rescindido

- Novo: No estado Novo, uma instância de Thread foi criada, mas o método start () ainda não foi chamado. Agora, o tópico não é considerado vivo.
- Executável : O Thread está no estado executável após a invocação do método start (), mas antes do método run () ser invocado. Mas um thread também pode retornar ao estado executável após aguardar / dormir. Nesse estado, o thread é considerado ativo.
- Correndo : O thread está em um estado de execução após chamar o método run (). Agora o thread começa a execução.
- Não Executável (Bloqueado): O tópico está ativo, mas não é elegível para execução. Não está no estado executável, mas também retornará ao estado executável após algum tempo. Exemplo: espere, durma, bloqueie.
- Rescindido : Assim que o método de execução for concluído, ele será encerrado. Agora o tópico não está vivo.
Q # 49) O que é sincronização?
Responda: A sincronização faz com que apenas um thread acesse um bloco de código por vez. Se vários threads acessam o bloco de código, há uma chance de resultados imprecisos no final. Para evitar esse problema, podemos fornecer sincronização para o bloco sensível de códigos.
A palavra-chave synchronized significa que um thread precisa de uma chave para acessar o código sincronizado.
Os bloqueios são por objetos. Cada objeto Java possui um bloqueio. Uma fechadura possui apenas uma chave. Um thread pode acessar um método sincronizado somente se o thread puder obter a chave para os objetos a serem bloqueados.
Para isso, usamos a palavra-chave “Sincronizado”.
Exemplo:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }Q # 50) Qual é a desvantagem da sincronização?
Anos: A sincronização não é recomendada para implementar todos os métodos. Porque se um thread acessa o código sincronizado, o próximo thread deve esperar. Portanto, ele tem um desempenho lento na outra extremidade.
Q # 51) O que se entende por serialização?
Responda: A conversão de um arquivo em um fluxo de bytes é conhecida como serialização. Os objetos no arquivo são convertidos em bytes para fins de segurança. Para isso, precisamos implementar uma interface java.io.Serializable. Não tem método para definir.
Variáveis marcadas como temporárias não farão parte da serialização. Portanto, podemos pular a serialização das variáveis no arquivo usando uma palavra-chave transiente.
Saiba mais = >> Serializável e clonável
Q # 52) Qual é o propósito de uma variável transitória?
Responda: Variáveis transitórias não fazem parte do processo de serialização. Durante a desserialização, os valores das variáveis temporárias são definidos para o valor padrão. Não é usado com variáveis estáticas.
Exemplo:
números internos transitórios;
Q # 53) Quais métodos são usados durante o processo de serialização e desserialização?
Responda: As classes ObjectOutputStream e ObjectInputStream são java.io. pacote. Nós os usaremos com as classes de nível inferior FileOutputStream e FileInputStream.
ObjectOutputStream.writeObject —-> Serialize o objeto e grave o objeto serializado em um arquivo.
ObjectInputStream.readObject -> Lê o arquivo e desserializa o objeto.
Para ser serializado, um objeto deve implementar a interface serializável. Se a superclasse implementar Serializable, a subclasse será serializável automaticamente.
Q # 54) Qual é o propósito de uma variável volátil?
Responda: Os valores das variáveis voláteis são sempre lidos da memória principal e não da memória cache do thread. Isso é usado principalmente durante a sincronização. É aplicável apenas para variáveis.
Exemplo:
número int volátil;
Q # 55) Diferença entre serialização e desserialização em Java.
Responda: Estas são as diferenças entre serialização e desserialização em java:
| Serialização | Desserialização |
|---|---|
| A serialização é o processo que é usado para converter os objetos em fluxo de bytes | A desserialização é o processo oposto de serialização, onde podemos obter os objetos de volta do fluxo de bytes. |
| Um objeto é serializado gravando-o em ObjectOutputStream. | Um objeto é desserializado lendo-o de um ObjectInputStream. |
P # 56) O que é SerialVersionUID?
Responda: Sempre que um objeto é serializado, o objeto é carimbado com um número de ID de versão para a classe de objeto. Esse ID é chamado de SerialVersionUID. Isso é usado durante a desserialização para verificar se o remetente e o receptor são compatíveis com a serialização.
Conclusão
Estas são algumas das principais perguntas da entrevista JAVA que cobrem os conceitos Java básicos e avançados para programação, bem como a entrevista do desenvolvedor, e estas foram respondidas por nossos especialistas em JAVA.
Espero que este tutorial forneça uma ótima visão detalhada dos principais conceitos de codificação JAVA. As explicações fornecidas acima irão realmente enriquecer seu conhecimento e aumentar sua compreensão da programação JAVA.
Prepare-se para uma entrevista em JAVA com confiança.