baixar PDF
Compilamos as perguntas e respostas da entrevista sobre Java mais frequentes que o ajudarão a se preparar para as perguntas da entrevista sobre Java básico que um entrevistador pode fazer durante sua entrevista. Nesta lista de perguntas da entrevista do Basic Java, cobrimos todas as perguntas mais comuns da entrevista básica e avançada do Core Java com respostas detalhadas para ajudá-lo a limpar a entrevista de emprego.
A lista a seguir contém 100 perguntas importantes da entrevista Core Java para caloiros, bem como perguntas da entrevista Java e respostas para programadores experientes para ajudá-los a se preparar para a entrevista. Este guia detalhado de perguntas de entrevista para programação Java o ajudará a quebrar sua entrevista de emprego facilmente.
Principais perguntas e respostas da entrevista em Java para novatos e experientes
T1. Qual é a diferença entre uma classe interna e uma subclasse?
Resposta: Uma classe Inner é uma classe aninhada em outra classe. Uma classe Inner tem direitos de acesso para a classe que a está aninhando e pode acessar todas as variáveis e métodos definidos na classe externa.
Uma subclasse é uma classe que herda de outra classe chamada superclasse. A subclasse pode acessar todos os métodos e campos públicos e protegidos de sua superclasse.
2º trimestre. Quais são os vários especificadores de acesso para classes Java?
Resp: Em Java, especificadores de acesso são as palavras-chave usadas antes de um nome de classe que define o escopo de acesso. Os tipos de especificadores de acesso para classes são:
1. Público: Classe, Método, Campo acessível de qualquer lugar.
2. Protegido: Método, Campo pode ser acessado da mesma classe a que pertence ou das subclasses, e da classe do mesmo pacote, mas não de fora.
3. Padrão: Método, Campo, classe podem ser acessados apenas do mesmo pacote e não de fora de seu pacote nativo.
4. Privado: Método, Campo podem ser acessados a partir da mesma classe a que pertencem.
3º trimestre. Qual é o propósito dos métodos estáticos e variáveis estáticas?
Resp: Quando há um requisito para compartilhar um método ou uma variável entre vários objetos de uma classe, em vez de criar cópias separadas para cada objeto, usamos a palavra-chave estática para fazer um método ou variável compartilhada por todos os objetos.
Q4. O que é encapsulamento de dados e qual é o seu significado?
Resposta: Encapsulamento é um conceito em Programação Orientada a Objetos para combinar propriedades e métodos em uma única unidade.
O encapsulamento ajuda os programadores a seguir uma abordagem modular para o desenvolvimento de software, pois cada objeto tem seu próprio conjunto de métodos e variáveis e cumpre suas funções independentemente de outros objetos. O encapsulamento também serve para fins de ocultação de dados.
Q5. O que é uma classe única? Dê um exemplo prático de seu uso.
Uma classe singleton em java pode ter apenas uma instância e, portanto, todos os seus métodos e variáveis pertencem a apenas uma instância. O conceito de classe Singleton é útil para as situações em que é necessário limitar o número de objetos para uma classe.
O melhor exemplo de cenário de uso de singleton é quando há um limite de apenas uma conexão com um banco de dados devido a algumas limitações do driver ou devido a quaisquer problemas de licenciamento.
Q6. O que são loops em Java? Quais são os três tipos de loops?
Resp: O loop é usado na programação para executar uma instrução ou bloco de instrução repetidamente. Existem três tipos de loops em Java:
1) For Loops
Os loops For são usados em java para executar instruções repetidamente por um determinado número de vezes. Os loops For são usados quando o número de vezes para executar as instruções é conhecido pelo programador.
2) Loops While
O loop while é usado quando certas instruções precisam ser executadas repetidamente até que uma condição seja satisfeita. Em loops while, a condição é verificada antes da execução das instruções.
3) Loops Do While
O Loop Do While é o mesmo que o Loop While com apenas a diferença de que a condição é verificada após a execução do bloco de instruções. Portanto, no caso do loop do while, as instruções são executadas pelo menos uma vez.
Q7: O que é um loop infinito? Como o loop infinito é declarado?
Resposta: Um loop infinito é executado sem qualquer condição e é executado infinitamente. Um loop infinito pode ser quebrado definindo qualquer lógica de quebra no corpo dos blocos de instrução.
O loop infinito é declarado da seguinte forma:
for (;;){// Statements to execute// Add any loop breaking logic}
Q8. Qual é a diferença entre continue e break statement?
Resposta: interromper e continuar são duas palavras-chave importantes usadas em Loops. Quando uma palavra-chave break é usada em um loop, o loop é interrompido instantaneamente, enquanto quando a palavra-chave continue é usada, a iteração atual é interrompida e o loop continua com a próxima iteração.
No exemplo abaixo, o Loop é interrompido quando o contador atinge 4.
for (counter = 0; counter & lt; 10; counter++)system.out.println(counter);if (counter == 4) {break;}}
No exemplo a seguir, quando counter atinge 4, o loop salta para a próxima iteração e quaisquer instruções após a palavra-chave continue são ignoradas para a iteração atual.
for (counter = 0; counter < 10; counter++)system.out.println(counter);if (counter == 4) {continue;}system.out.println("This will not get printed when counter is 4");}
Q9. Qual é a diferença entre variáveis double e float em Java?
Resp: Em java, float ocupa 4 bytes na memória, enquanto Double ocupa 8 bytes na memória. Float é um número decimal de ponto flutuante de precisão simples, enquanto Double é um número decimal de precisão dupla.
Q10. O que é palavra-chave final em Java? Dê um exemplo.
Resp: Em java, uma constante é declarada usando a palavra-chave Final. O valor pode ser atribuído apenas uma vez e após a atribuição, o valor de uma constante não pode ser alterado.
No exemplo a seguir, uma constante com o nome const_val é declarada e atribuída a um valor:
Final Privado int const_val = 100
Quando um método é declarado como final, ele NÃO pode ser sobrescrito pelas subclasses. Esse método é mais rápido do que qualquer outro método, porque eles são resolvidos no tempo de conformidade.
Quando uma classe é declarada como final, ela não pode ser subclassificada. Exemplo de String, Integer e outras classes de wrapper.
Q11. O que é operador ternário? Dê um exemplo.
Resposta: O operador ternário, também chamado de operador condicional, é usado para decidir qual valor atribuir a uma variável com base em uma avaliação de valor booleano. É denotado como?
No exemplo a seguir, se a classificação for 1, o status receberá o valor "Concluído" e "Pendente".
public class conditionTest {public static void main(String args[]) {String status;int rank = 3;status = (rank == 1) ? "Done" : "Pending";System.out.println(status);}}
Q12: como você pode gerar números aleatórios em Java?
Resp:
- Usando Math.random () você pode gerar números aleatórios no intervalo maior ou igual a 0,1 e menor que 1,0
- Usando a classe Random no pacote java.util
Q13. Qual é a caixa do interruptor padrão? Dê um exemplo.
Resposta: Em uma instrução switch, o caso padrão é executado quando nenhuma outra condição de switch corresponde. O caso padrão é um caso opcional. Ele pode ser declarado apenas depois que todos os outros casos de switch foram codificados.
No exemplo abaixo, quando a pontuação não é 1 ou 2, o caso padrão é usado.
public class switchExample {int score = 4;public static void main(String args[]) {switch (score) {case 1:system.out.println("Score is 1");break;case 2:system.out.println("Score is 2");break;default:system.out.println("Default Case");}}}
Q14. Qual é a classe base em Java da qual todas as classes são derivadas?
Resposta: java.lang.object
Q15. O método main () em Java pode retornar quaisquer dados?
Resposta: Em java, o método main () não pode retornar nenhum dado e, portanto, é sempre declarado com um tipo de retorno void.
Q16. O que são pacotes Java? Qual é o significado dos pacotes?
Resp: Em Java, pacote é uma coleção de classes e interfaces que são agrupadas conforme estão relacionadas umas às outras. O uso de pacotes ajuda os desenvolvedores a modularizar o código e agrupar o código para reutilização adequada. Uma vez que o código foi empacotado em Pacotes, ele pode ser importado em outras classes e usado.
Q17. Podemos declarar uma classe como Abstract sem ter nenhum método abstrato?
Resposta: Sim, podemos criar uma classe abstrata usando a palavra-chave abstrata antes do nome da classe, mesmo que não haja nenhum método abstrato. No entanto, se uma classe tiver pelo menos um método abstrato, ele deve ser declarado como abstrato, caso contrário, ocorrerá um erro.
Q18. Qual é a diferença entre uma classe abstrata e uma interface em Java?
Resposta: A principal diferença entre uma classe abstrata e uma interface é que uma interface só pode possuir declaração de métodos estáticos públicos sem implementação concreta, enquanto uma classe abstrata pode ter membros com quaisquer especificadores de acesso (público, privado etc.) com ou sem implementação concreta.
Outra diferença fundamental no uso de classes e interfaces abstratas é que uma classe que implementa uma interface deve implementar todos os métodos da interface, enquanto uma classe que herda de uma classe abstrata não requer a implementação de todos os métodos de sua superclasse.
Uma classe pode implementar várias interfaces, mas pode estender apenas uma classe abstrata.
Q19. Quais são as implicações de desempenho das interfaces sobre as classes abstratas?
Resp: Interfaces são mais lentas em desempenho em comparação com classes abstratas, pois indiretos extras são necessários para interfaces. Outro fator importante a ser levado em consideração pelos desenvolvedores é que qualquer classe pode estender apenas uma classe abstrata, enquanto uma classe pode implementar várias interfaces.
O uso de interfaces também sobrecarrega os desenvolvedores, pois a qualquer momento uma interface é implementada em uma classe; o desenvolvedor é forçado a implementar todo e qualquer método de interface.
Q20. Importar um pacote importa seus subpacotes também em Java?
Resp: Em java, quando um pacote é importado, seus subpacotes não são importados e o desenvolvedor precisa importá-los separadamente, se necessário.
Por exemplo, se um desenvolvedor importar um pacote university. *, Todas as classes no pacote denominado university serão carregadas, mas nenhuma classe do subpacote será carregada. Para carregar as classes de seu subpacote (digamos, departamento), o desenvolvedor deve importá-lo explicitamente da seguinte maneira:
Import university.department. *
Q21. Podemos declarar o método principal de nossa classe como privado?
Resposta: Em java, o método principal deve ser public static para executar qualquer aplicativo corretamente. Se o método principal for declarado como privado, o desenvolvedor não obterá nenhum erro de compilação, entretanto, ele não será executado e apresentará um erro de tempo de execução.
Q22. Como podemos passar um argumento para uma função por referência em vez de passar por valor?
Resp: Em java, podemos passar o argumento para uma função apenas por valor e não por referência.
Q23. Como um objeto é serializado em java?
Resp: Em java, para converter um objeto em fluxo de bytes por serialização, uma interface com o nome Serializable é implementada pela classe. Todos os objetos de uma classe que implementa interface serializável são serializados e seu estado é salvo no fluxo de bytes.
Q24. Quando devemos usar a serialização?
Resposta: A serialização é usada quando os dados precisam ser transmitidos pela rede. Usando a serialização, o estado do objeto é salvo e convertido em fluxo de bytes. O fluxo de bytes é transferido pela rede e o objeto é recriado no destino.
Q25. É obrigatório que um bloco Try seja seguido por um bloco Catch em Java para tratamento de exceções?
Resposta: O bloco de teste deve ser seguido por um bloco Catch, um bloco Finalmente ou ambos. Qualquer exceção lançada a partir do bloco try precisa ser capturada no bloco catch ou então quaisquer tarefas específicas a serem realizadas antes que o aborto do código seja colocado no bloco finally.
Q26. Existe alguma maneira de pular o bloco de exceção Finalmente, mesmo se ocorrer alguma exceção no bloco de exceção?
Resp: Se uma exceção é levantada no bloco Try, o controle passa para o bloco catch se ele existir, caso contrário, para o bloco finally. O bloco Finalmente é sempre executado quando ocorre uma exceção e a única maneira de evitar a execução de qualquer instrução no bloco Finalmente é abortando o código forçosamente escrevendo a seguinte linha de código no final do bloco try:
System.exit(0);
Q27. Quando o construtor de uma classe é invocado?
Resposta: O construtor de uma classe é invocado sempre que um objeto é criado com uma nova palavra-chave.
Por exemplo, na classe a seguir, dois objetos são criados usando a palavra-chave nova e, portanto, o construtor é chamado duas vezes.
public class const_example {const_example() {system.out.println("Inside constructor");}public static void main(String args[]) {const_example c1 = new const_example();const_example c2 = new const_example();}}
Q28. Uma classe pode ter vários construtores?
Resposta: Sim, uma classe pode ter vários construtores com parâmetros diferentes. Qual construtor é usado para a criação do objeto depende dos argumentos passados durante a criação dos objetos.
Q29. Podemos substituir os métodos estáticos de uma classe?
Resposta: Não podemos substituir métodos estáticos. Os métodos estáticos pertencem a uma classe e não a objetos individuais e são resolvidos no momento da compilação (não no tempo de execução). Mesmo se tentarmos substituir o método estático, não obteremos um erro de complitação, nem o impacto da substituição ao executar o código.
Q30. No exemplo abaixo, qual será a saída?
public class superclass {public void displayResult() {system.out.println("Printing from superclass");}}public class subclass extends superclass {public void displayResult() {system.out.println("Displaying from subClass");super.displayResult();}public static void main(String args[]) {subclass obj = new subclass();obj.displayResult();}}
Resp : A saída será:
Exibindo da subclasse
Exibindo da superclasse
Q31. String é um tipo de dados em java?
Resp: String não é um tipo de dados primitivo em java. Quando uma string é criada em java, ela é, na verdade, um objeto da classe Java.Lang.String que é criado. Após a criação deste objeto string, todos os métodos internos da classe String podem ser usados no objeto string.
Q32. No exemplo abaixo, quantos String Objects são criados?
String s1="I am Java Expert";String s2="I am C Expert";String s3="I am Java Expert";
Resp: No exemplo acima, dois objetos da classe Java.Lang.String são criados. s1 e s3 são referências ao mesmo objeto.
Q33. Por que as strings em Java são chamadas de imutáveis?
Resp: Em java, os objetos string são chamados de imutáveis, uma vez que o valor foi atribuído a uma string, ele não pode ser alterado e, se alterado, um novo objeto é criado.
No exemplo abaixo, a referência str refere-se a um objeto string com o valor "Valor um".
String str="Value One";
Quando um novo valor é atribuído a ele, um novo objeto String é criado e a referência é movida para o novo objeto.
str="New Value";
Q34. Qual é a diferença entre uma matriz e um vetor?
Resp: Um array agrupa dados do mesmo tipo primitivo e é estático por natureza, enquanto os vetores são dinâmicos por natureza e podem conter dados de diferentes tipos de dados.
Q35. O que é multi-threading?
Resposta: Multi threading é um conceito de programação para executar várias tarefas de maneira simultânea em um único programa. Threads compartilham a mesma pilha de processos e são executados em paralelo. Ajuda na melhoria do desempenho de qualquer programa.
Q36. Por que a interface Runnable é usada em Java?
Resposta: A interface executável é usada em java para implementar aplicativos multiencadeados. A interface Java.Lang.Runnable é implementada por uma classe para suportar multiencadeamento.
Q37. Quais são as duas maneiras de implementar multi-threading em Java?
Resposta: Aplicativos multiencadeados podem ser desenvolvidos em Java usando qualquer uma das duas metodologias a seguir:
1. Usando a interface Java.Lang.Runnable. As classes implementam esta interface para habilitar multiencadeamento. Há um método Run () nesta interface que é implementado.
2. Escrevendo uma classe que estende a classe Java.Lang.Thread.
Q38. Quando muitas alterações são necessárias nos dados, qual deve ser a preferência a ser usada? String ou StringBuffer?
Resposta: Como StringBuffers são dinâmicos por natureza e podemos alterar os valores dos objetos StringBuffer ao contrário de String que é imutável, é sempre uma boa escolha usar StringBuffer quando os dados estão sendo alterados demais. Se usarmos String nesse caso, para cada alteração de dados, um novo objeto String será criado, o que será uma sobrecarga extra.
Q39. Qual é o propósito de usar Break em cada caso de instrução Switch?
Resp: Break é usado após cada caso (exceto o último) em um switch para que o código seja quebrado após o caso válido e não flua nos casos anteriores também.
Se break não for usado após cada caso, todos os casos após o caso válido também serão executados, resultando em resultados errados.
Q40. Como a coleta de lixo é feita em Java?
Resposta: Em java, quando um objeto não é mais referenciado, a coleta de lixo ocorre e o objeto é destruído automaticamente. Para as chamadas java de coleta de lixo automática, o método System.gc () ou o método Runtime.gc ().
Q41. Como podemos executar qualquer código antes mesmo do método principal?
Resposta: Se quisermos executar qualquer instrução antes mesmo da criação de objetos no momento do carregamento da classe, podemos usar um bloco estático de código na classe. Quaisquer instruções dentro deste bloco estático de código serão executadas uma vez no momento do carregamento da classe, mesmo antes da criação de objetos no método principal.
Q42. Uma classe pode ser uma superclasse e uma subclasse ao mesmo tempo? Dê um exemplo.
Resposta: Se houver uma hierarquia de herança usada, uma classe pode ser uma superclasse para outra classe e uma subclasse para outra ao mesmo tempo.
No exemplo abaixo, a classe continente é uma subclasse da classe mundial e sua superclasse da classe country.
public class world {… .}public class continenet extends world {… }public class country extends continent {… .}
Q43. Como os objetos de uma classe são criados se nenhum construtor é definido na classe?
Resposta: Mesmo que nenhum construtor explícito seja definido em uma classe java, os objetos são criados com sucesso, já que um construtor padrão é usado implicitamente para a criação do objeto. Este construtor não possui parâmetros.
Q44. No multi-threading, como podemos garantir que um recurso não seja usado por vários threads simultaneamente?
Resp: Em multi-threading, o acesso aos recursos que são compartilhados entre vários threads pode ser controlado usando o conceito de sincronização. Usando a palavra-chave synchronized, podemos garantir que apenas um thread possa usar o recurso compartilhado por vez e outros possam obter o controle do recurso apenas quando ele se tornar livre do outro que o usa.
Q45. Podemos chamar o construtor de uma classe mais de uma vez para um objeto?
Resposta: Construtor é chamado automaticamente quando criamos um objeto usando uma nova palavra-chave. Ele é chamado apenas uma vez para um objeto no momento da criação do objeto e, portanto, não podemos invocar o construtor novamente para um objeto após sua criação.
Q46. Existem duas classes chamadas classA e classB. Ambas as classes estão no mesmo pacote. Um membro privado da classe A pode ser acessado por um objeto da classe B?
Resposta: Membros privados de uma classe não podem ser acessados fora do escopo dessa classe e qualquer outra classe, mesmo no mesmo pacote, não pode acessá-los.
Q47. Podemos ter dois métodos em uma classe com o mesmo nome?
Resposta: Podemos definir dois métodos em uma classe com o mesmo nome, mas com número / tipo de parâmetros diferente. Qual método deve ser invocado dependerá dos parâmetros passados.
Por exemplo, na classe abaixo, temos dois métodos de impressão com o mesmo nome, mas parâmetros diferentes. Dependendo dos parâmetros, o apropriado será chamado:
public class methodExample {public void print() {system.out.println("Print method without parameters.");}public void print(String name) {system.out.println("Print method with parameter");}public static void main(String args[]) {methodExample obj1 = new methodExample();obj1.print();obj1.print("xx");}}
Q48. Como podemos fazer uma cópia de um objeto java?
Resposta: Podemos usar o conceito de clonagem para criar a cópia de um objeto. Usando clone, criamos cópias com o estado real de um objeto.
Clone () é um método de interface clonável e, portanto, a interface clonável precisa ser implementada para fazer cópias de objetos.
Q49. Qual é a vantagem de usar herança?
Resposta: O principal benefício de usar herança é a capacidade de reutilização do código, pois a herança permite que as subclasses reutilizem o código de sua superclasse. O polimorfismo (extensibilidade) é outro grande benefício que permite que uma nova funcionalidade seja introduzida sem afetar as classes derivadas existentes.
Q50. Qual é o especificador de acesso padrão para variáveis e métodos de uma classe?
Resp: O especificador de acesso padrão para variáveis e método é protegido por pacote, ou seja, variáveis e classe estão disponíveis para qualquer outra classe, mas no mesmo pacote, não fora do pacote.
Q51. Dê um exemplo de uso de Ponteiros na classe Java.
Resposta: Não há ponteiros em Java. Portanto, não podemos usar o conceito de ponteiros em Java.
Q52. Como podemos restringir a herança de uma classe de forma que nenhuma classe possa ser herdada dela?
Resposta: Se quisermos que uma classe não seja estendida por nenhuma classe, podemos usar a palavra-chave Final com o nome da classe.
No exemplo a seguir, a classe Stone é Final e não pode ser estendida
public Final Class Stone {// Class methods and Variables}
Q53. Qual é o escopo de acesso do especificador de acesso protegido?
Resp: Quando um método ou uma variável é declarada com o especificador de acesso protegido, ele se torna acessível na mesma classe, qualquer outra classe do mesmo pacote, bem como uma subclasse.
Modificador |
Aula |
Pacote |
Subclasse |
Mundo |
público |
Y |
Y |
Y |
Y |
protegido |
Y |
Y |
Y |
N |
sem modificador |
Y |
Y |
N |
N |
privado |
Y |
N |
N |
N |
Q54. Qual é a diferença entre Stack e Queue?
Resp: Stack e Queue são usados como espaço reservado para uma coleção de dados. A principal diferença entre uma pilha e uma fila é que a pilha é baseada no princípio do último a entrar, primeiro a sair (LIFO), enquanto a fila é baseada no princípio FIFO (primeiro a entrar, primeiro a sair).
Q55. Em java, como podemos proibir a serialização de variáveis?
Resposta: Se quisermos que certas variáveis de uma classe não sejam serializadas, podemos usar a palavra-chave transient ao declará-las. Por exemplo, a variável trans_var abaixo é uma variável transitória e não pode ser serializada:
public class transientExample {private transient trans_var;// rest of the code}
Q56. Como podemos usar tipos de dados primitivos como objetos?
Resposta: Tipos de dados primitivos como int podem ser tratados como objetos pelo uso de suas respectivas classes de wrapper. Por exemplo, Integer é uma classe de wrapper para o tipo de dados primitivo int. Podemos aplicar métodos diferentes a uma classe de invólucro, como qualquer outro objeto.
Q57. Quais tipos de exceções são capturados em tempo de compilação?
Resposta: As exceções verificadas podem ser capturadas no momento da compilação do programa. As exceções verificadas devem ser tratadas usando o bloco try catch no código para compilar o código com êxito.
Q58. Descreva os diferentes estados de um tópico.
Resp: Um thread em Java pode estar em um dos seguintes estados:
- Pronto: quando um thread é criado, ele está no estado Pronto.
- Em execução: uma thread atualmente em execução está em estado de execução.
- Em espera: um encadeamento aguardando outro encadeamento para liberar certos recursos está em estado de espera.
- Dead: Um thread que foi morto após a execução está em estado morto.
Q59. Podemos usar um construtor padrão de uma classe, mesmo se um construtor explícito for definido?
Resposta: Java fornece um construtor sem argumento padrão se nenhum construtor explícito for definido em uma classe Java. Mas se um construtor explícito foi definido, o construtor padrão não pode ser chamado e o desenvolvedor pode usar apenas aqueles construtores que são definidos na classe.
Q60. Podemos substituir um método usando o mesmo nome de método e argumentos, mas diferentes tipos de retorno?
Resposta: A condição básica da substituição do método é que o nome do método, os argumentos e o tipo de retorno devem ser exatamente os mesmos do método que está sendo substituído. Portanto, usar um tipo de retorno diferente não substitui um método.
Q61.Qual será a saída do seguinte trecho de código?
public class operatorExample {public static void main(String args[]) {int x = 4;system.out.println(x++);}}
Resp: Neste caso, o operador postfix ++ é usado, o que primeiro retorna o valor e depois aumenta. Portanto, sua saída será 4.
Q61. Uma pessoa disse que compilou uma classe java com sucesso, mesmo sem ter um método principal nela? É possível?
Ans: o método principal é um ponto de entrada da classe Java e, entretanto, é necessário para a execução do programa; uma classe é compilada com sucesso mesmo se não tiver um método principal. Mas não pode ser executado.
Q62. Podemos chamar um método não estático de dentro de um método estático?
Resposta: Os métodos não estáticos são propriedade de objetos de uma classe e têm escopo de nível de objeto e, para chamar os métodos não estáticos de um bloco estático (como a partir de um método principal estático), um objeto da classe precisa ser criado primeiro. Então, usando a referência de objeto, esses métodos podem ser chamados.
Q63. Quais são as duas variáveis de ambiente que devem ser definidas para executar qualquer programa Java?
Resp: Os programas Java podem ser executados em uma máquina apenas depois que as duas variáveis de ambiente a seguir forem definidas corretamente:
- Variável PATH
- Variável CLASSPATH
Q64. As variáveis podem ser usadas em Java sem inicialização?
Resp: Em Java, se uma variável é usada em um código sem inicialização prévia por um valor válido, o programa não compila e dá um erro, pois nenhum valor padrão é atribuído a variáveis em Java.
Q65. Uma classe em Java pode ser herdada de mais de uma classe?
Resp: Em Java, uma classe pode ser derivada de apenas uma classe e não de várias classes. Múltiplas heranças não são suportadas por Java.
Q66. Um construtor pode ter um nome diferente de um nome de classe em Java?
Resposta: O construtor em Java deve ter o mesmo nome que o nome da classe e se o nome for diferente, ele não atua como um construtor e o compilador o considera um método normal.
Q67. Qual será a saída de Round (3.7) e Ceil (3.7)?
Resp: Round (3.7) retorna 4 e Ceil (3.7) retorna 4.
Q68: podemos usar goto em Java para ir para uma linha específica?
Resposta: Em Java, não há palavra-chave goto e java não oferece suporte a esse recurso de ir para uma linha rotulada específica.
Q69. Um thread morto pode ser iniciado novamente?
Resposta: Em java, um thread que está em estado morto não pode ser iniciado novamente. Não há como reiniciar um thread morto.
Q70. A seguinte declaração de classe está correta?
Resp:
public abstract final class testClass {// Class methods and variables}
Resposta: A declaração de classe acima está incorreta porque uma classe abstrata não pode ser declarada como Final.
Q71. O JDK é necessário em cada máquina para executar um programa Java?
Resposta: JDK é um Kit de desenvolvimento de Java e é necessário apenas para desenvolvimento e para executar um programa Java em uma máquina, o JDK não é necessário. Apenas o JRE é necessário.
Q72. Qual é a diferença entre a comparação feita pelo método equals e o operador ==?
Resp: Em Java, o método equals () é usado para comparar o conteúdo de dois objetos de string e retorna true se os dois tiverem o mesmo valor enquanto o operador == compara as referências de dois objetos de string.
No exemplo a seguir, equals () retorna true, pois os dois objetos de string têm os mesmos valores. No entanto, o operador == retorna falso, pois ambos os objetos de string fazem referência a objetos diferentes:
public class equalsTest {public static void main(String args[]) {String str1 = new String("Hello World");String str2 = new String("Hello World");if (str1.equals(str2)){ // this condition is trueSystem.out.println("str1 and str2 are equal in terms of values");}if (str1 == str2) {//This condition is trueSystem.out.println("Both strings are referencing same object");} else{// This condition is NOT trueSystem.out.println("Both strings are referencing different objects");}}}
Q73. É possível definir um método na classe Java, mas fornecer sua implementação no código de outra linguagem como C?
Resposta: Sim, podemos fazer isso usando métodos nativos. No caso de desenvolvimento baseado em método nativo, definimos métodos estáticos públicos em nossa classe Java sem sua implementação e, em seguida, a implementação é feita em outra linguagem como C separadamente.
Q74. Como os destruidores são definidos em Java?
Resp: Em Java, não há destruidores definidos na classe, pois não há necessidade de fazê-lo. Java tem seu próprio mecanismo de coleta de lixo que faz o trabalho automaticamente, destruindo os objetos quando não são mais referenciados.
Q75. Uma variável pode ser local e estática ao mesmo tempo?
Resposta: Não, uma variável não pode ser estática e local ao mesmo tempo. Definir uma variável local como estática resulta em erro de compilação.
Q76. Podemos ter métodos estáticos em uma interface?
Resposta: Os métodos estáticos não podem ser sobrescritos em nenhuma classe, enquanto quaisquer métodos em uma interface são, por padrão, abstratos e devem ser implementados nas classes que estão implementando a interface. Portanto, não faz sentido ter métodos estáticos em uma interface em Java.
Q77. Em uma classe que implementa uma interface, podemos alterar o valor de qualquer variável definida na interface?
Resposta: Não, não podemos alterar o valor de qualquer variável de uma interface na classe de implementação, pois todas as variáveis definidas na interface são, por padrão, públicas, estáticas e as variáveis finais e finais são como constantes que não podem ser alteradas posteriormente.
Q78. É correto dizer que, devido ao recurso de coleta de lixo em Java, um programa java nunca fica sem memória?
Resp: Mesmo que a coleta de lixo automática seja fornecida por Java, isso não garante que um programa Java não fique sem memória, pois existe a possibilidade de que a criação de objetos Java esteja sendo feita em um ritmo mais rápido em comparação com a coleta de lixo resultando em preenchimento de todos os recursos de memória disponíveis.
Portanto, a coleta de lixo ajuda a reduzir as chances de um programa ficar sem memória, mas não garante isso.
Q79. Podemos ter qualquer outro tipo de retorno além de void para o método principal?
Resposta: Não, o método principal da classe Java pode ter apenas o tipo de retorno nulo para que o programa seja executado com sucesso.
No entanto, se você absolutamente deve retornar um valor para na conclusão do método principal, você pode usar System.exit (int status)
Q80. Desejo alcançar e usar um objeto depois de ter sido coletado como lixo. Como é possível?
Resp: Depois que um objeto é destruído pelo coletor de lixo, ele não existe mais no heap e não pode ser acessado novamente. Não há como referenciá-lo novamente.
Q81. Na programação de thread Java, qual método é uma implementação obrigatória para todos os threads?
Ans: Run () é um método de interface Runnable que deve ser implementado por todos os threads.
Q82. Desejo controlar as conexões do banco de dados em meu programa e desejo que apenas um thread seja capaz de fazer a conexão do banco de dados por vez. Como posso implementar essa lógica?
Resp: Isso pode ser implementado pelo uso do conceito de sincronização. O código relacionado ao banco de dados pode ser colocado em um método que tem a palavra - chave synchronized para que apenas um thread possa acessá-lo por vez.
Q83. Como uma exceção pode ser lançada manualmente por um programador?
Resp: Para lançar uma exceção em um bloco de código manualmente, a palavra-chave throw é usada. Em seguida, essa exceção é capturada e tratada no bloco catch.
public void topMethod() {try {excMethod();} catch (ManualException e) {}}public void excMethod {String name = null;if (name == null) {throw (new ManualException("Exception thrown manually ");}}
Q84. Quero que minha classe seja desenvolvida de forma que nenhuma outra classe (mesmo uma classe derivada) possa criar seus objetos. Como posso fazer isso?
Resposta: Se declararmos o construtor de uma classe como privado, ele não será acessível por nenhuma outra classe e, portanto, nenhuma outra classe será capaz de instanciá-lo e a formação de seu objeto será limitada apenas a ela mesma.
Q85. Como os objetos são armazenados em Java?
Resp: Em java, cada objeto, quando criado, obtém um espaço de memória de um heap. Quando um objeto é destruído por um coletor de lixo, o espaço alocado para ele no heap é realocado para o heap e fica disponível para quaisquer novos objetos.
Q86. Como podemos encontrar o tamanho real de um objeto na pilha?
Resp: Em java, não há como descobrir o tamanho exato de um objeto no heap.
Q87. Qual das seguintes classes terá mais memória alocada?
Classe A: três métodos, quatro variáveis, nenhum objeto
Classe B: cinco métodos, três variáveis, nenhum objeto
Resp: A memória não é alocada antes da criação dos objetos. Como para ambas as classes, não há objetos criados, portanto, nenhuma memória é alocada no heap para qualquer classe.
Q88. O que acontece se uma exceção não for tratada em um programa?
Resp: Se uma exceção não for tratada em um programa usando blocos try catch, o programa é abortado e nenhuma instrução é executada após a instrução que causou o lançamento da exceção.
Q89. Tenho vários construtores definidos em uma classe. É possível chamar um construtor do corpo de outro construtor?
Resposta: Se uma classe tem vários construtores, é possível chamar um construtor do corpo de outro usando this () .
Q90. O que significa classe anônima?
Resposta: Uma classe anônima é uma classe definida sem nenhum nome em uma única linha de código usando nova palavra-chave.
Por exemplo, no código a seguir, definimos uma classe anônima em uma linha de código:
public java.util.Enumeration testMethod(){return new java.util.Enumeration(){@Overridepublic boolean hasMoreElements(){// TODO Auto-generated method stubreturn false;}@Overridepublic Object nextElement(){// TODO Auto-generated method stubreturn null;}}
Q91. Existe uma maneira de aumentar o tamanho de uma matriz após sua declaração?
Resposta: Os arrays são estáticos e, uma vez que especificamos seu tamanho, não podemos alterá-lo. Se quisermos usar tais coleções onde podemos exigir uma mudança de tamanho (não de itens), devemos preferir vetor em vez de array.
Q92. Se um aplicativo tiver várias classes, é correto ter um método principal em mais de uma classe?
Resp: Se houver um método principal em mais de uma classe em um aplicativo java, isso não causará nenhum problema, pois o ponto de entrada para qualquer aplicativo será uma classe específica e o código começará a partir do método principal dessa classe específica apenas.
Q93. Desejo manter dados de objetos para uso posterior. Qual é a melhor abordagem para fazer isso?
Resp: A melhor maneira de persistir os dados para uso futuro é usar o conceito de serialização.
Q94. O que é uma classe local em Java?
Resp: Em Java, se definirmos uma nova classe dentro de um bloco particular, é chamada de classe local. Essa classe tem escopo local e não pode ser usada fora do bloco onde está definida.
Q95. String e StringBuffer representam objetos String. Podemos comparar String e StringBuffer em Java?
Resposta: Embora String e StringBuffer representem objetos String, não podemos compará-los entre si e, se tentarmos compará-los, obteremos um erro.
Q96. Qual API é fornecida pelo Java para operações em conjunto de objetos?
Ans: Java fornece uma API de coleção que fornece muitos métodos úteis que podem ser aplicados em um conjunto de objetos. Algumas das classes importantes fornecidas pela API Collection incluem ArrayList, HashMap, TreeSet e TreeMap.
Q97. Podemos converter qualquer outro tipo para o Tipo Booleano com conversão de tipo?
Resposta: Não, não podemos converter qualquer outro tipo primitivo para o tipo de dados Booleano, nem converter o tipo de dados Booleano para qualquer outro tipo de dados primitivo.
Q98. Podemos usar diferentes tipos de retorno para métodos quando substituídos?
Resposta: O requisito básico da substituição de método em Java é que o método substituído deve ter o mesmo nome e parâmetros. Mas um método pode ser substituído com um tipo de retorno diferente, desde que o novo tipo de retorno estenda o original.
Por exemplo, o método está retornando um tipo de referência.
Class B extends A {A method(int x) {//original method}B method(int x) {//overridden method}}
Q99. Qual é a classe base de todas as classes de exceção?
Resp: Em Java, Java.lang.Throwable é a superclasse de todas as classes de exceção e todas as classes de exceção são derivadas desta classe base.
Q100. Qual é a ordem de chamada dos construtores na herança?
Resp: Em caso de herança, quando um novo objeto de uma classe derivada é criado, primeiro o construtor da superclasse é invocado e, em seguida, o construtor da classe derivada é invocado.
Prepare-se para sua entrevista de emprego !!! Vá até o tutorial Java para se preparar melhor.
Este pdf detalhado de perguntas da entrevista em Java o ajudará a esclarecer as dúvidas sobre as perguntas da entrevista em Java e também a desvendar a entrevista.