Mais de 130 perguntas e respostas de entrevistas sobre Java 2022

Publicados: 2021-01-01

Perguntas e respostas da entrevista sobre Java

Neste artigo, compilamos as perguntas de entrevista sobre Java mais frequentes. Essas perguntas lhe darão uma familiaridade com o tipo de perguntas que um entrevistador pode fazer durante sua entrevista para Programação Java

Como calouro, você acabou de participar de uma entrevista ou planeja participar de uma em breve. Um candidato a emprego de nível básico que procura expandir sua carreira em programação de software, você pode estar nervoso com suas próximas entrevistas . Todos nós temos aqueles momentos de pânico em que ficamos em branco e podemos até esquecer o que é um fio. Vamos simplificar para você, tudo o que você precisa fazer é respirar fundo e verificar as perguntas mais prováveis ​​de serem feitas.

Você não pode evitar entrar em pânico, mas definitivamente pode se preparar para isso quando entrar na sala de entrevista. Você está confiante e sabe que pode lidar com qualquer coisa que o entrevistador possa jogar em você.

Aprenda programas de engenharia de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Aqui está uma lista compilada de 24 perguntas de entrevista Java com respostas abrangentes (último 2022) que ajudarão você a conquistar essa confiança e garantir que você passe pela entrevista.

1. Em que consiste a JVM?
A JVM, abreviação de Java Virtual Machine, é exigida por qualquer sistema para executar programas Java. A sua arquitetura é composta essencialmente por:
● Classloader: É um subsistema da JVM e sua principal função é carregar arquivos de classe sempre que um programa Java for executado.
● Heap: são os dados de tempo de execução que são usados ​​para alocar objetos.
● Área de classe: contém o nível de classe de cada arquivo de classe, como variáveis ​​estáticas, metadados e pool de execução constante.
● Stack: usado para armazenar variáveis ​​temporárias.
● Registro: o registro contém o endereço da instrução JVM que está sendo executada no momento
● Motor de execução: o EE é composto por um processador virtual, um interpretador que executa as instruções após a leitura do bytecode e um compilador JIT que melhora o desempenho quando a taxa de execução é lenta.
● Java Native Interface: atua como meio de comunicação para interação com outra aplicação desenvolvida em C, C++, etc.

2. O que é programação orientada a objetos? Java é uma linguagem orientada a objetos?
Essencialmente, a programação orientada a objetos é um paradigma de programação que trabalha com o conceito de objetos. Simplificando, os objetos são contêineres – eles contêm dados na forma de campos e código na forma de procedimentos. Seguindo essa lógica, uma linguagem orientada a objetos é uma linguagem que funciona em objetos e procedimentos.

Como o Java utiliza 8 tipos de dados primitivos — boolean, byte, char, int, float, long, short, double — que não são objetos, o Java não pode ser considerado uma linguagem 100% orientada a objetos.

3. O que você entende por Agregação no contexto de Java?
A agregação é uma forma de associação na qual cada objeto recebe seu próprio ciclo de vida. Mas há propriedade nisso, e o objeto filho não pode pertencer a nenhum outro objeto pai de nenhuma maneira.

4. Nomeie a superclasse em Java.
Java.lang. Todos os diferentes não primitivos são herdados direta ou indiretamente dessa classe.

5. Explique a diferença entre 'finally' e 'finalize' em Java?
Usado com o bloco try-catch, o bloco 'finally' é usado para garantir que uma parte específica do código seja sempre executada, mesmo que a execução seja lançada pelo bloco try-catch.

Em contraste, finalize() é um método especial na classe de objeto. Geralmente é substituído para liberar recursos do sistema quando o valor de lixo é coletado do objeto.

6. O que é uma classe interna anônima? Como é diferente de uma classe interna?
Qualquer classe interna local que não tenha nome é conhecida como uma classe interna anônima. Como não tem nome, é impossível criar seu construtor. Ele sempre estende uma classe ou implementa uma interface e é definido e instanciado em uma única instrução.

Uma classe aninhada não estática é chamada de classe interna. As classes internas são associadas aos objetos da classe e podem acessar todos os métodos e variáveis ​​da classe externa.

7. O que é uma classe de sistema?
É uma classe central em Java. Como a classe é final, não podemos substituir seu comportamento por meio de herança. Também não podemos instanciar essa classe, pois ela não fornece nenhum construtor público. Portanto, todos os seus métodos são estáticos.

8. Como criar thread daemon em Java?
Usamos a classe setDaemon(true) para criar este thread. Chamamos este método antes do método start(), caso contrário obtemos IllegalThreadStateException.

Perfil de trabalho para desenvolvedor de software

9. O Java suporta variáveis ​​globais? Porque porque não?
Não, Java não suporta variáveis ​​globais. Isso ocorre principalmente por dois motivos:
● Eles criam colisões no namespace.
● Quebram a transparência referencial.

10. Como é desenvolvido um objeto RMI?
As etapas a seguir podem ser executadas para desenvolver um objeto RMI:
● Defina a interface
● Implemente a interface
● Compile a interface e suas implementações com o compilador Java
● Compile a implementação do servidor com o compilador RMI
● Executar registro RMI
● Executar aplicativo

11. Explique as diferenças entre divisão de tempo e programação preemptiva?
No caso de fatiamento de tempo, uma tarefa é executada por um período de tempo especificado – também conhecido como fatia. Depois disso, ele entra na fila de prontos - um conjunto de tarefas 'prontas'. O escalonador então escolhe a próxima tarefa a ser executada com base na prioridade e em outros fatores.

Enquanto no escalonamento preemptivo, a tarefa com a prioridade mais alta é executada até entrar em estado morto ou de aviso ou se outra tarefa de prioridade mais alta aparecer.

12. O fio do coletor de lixo é que tipo de fio?
É um thread daemon.

13. Qual é o ciclo de vida de uma thread em Java?
Qualquer thread em Java passa pelos seguintes estágios em seu ciclo de vida:
● Novo
● Executável
● Correndo
● Não executável (bloqueado)
● Encerrado

14. Indique os métodos usados ​​durante o processo de desserialização e serialização.
ObjectInputStream.readObject
Lê o arquivo e desserializa o objeto.

ObjectOutputStream.writeObject
Serialize o objeto e grave o objeto serializado em um arquivo.

15. O que são variáveis ​​voláteis e para que servem?
Variáveis ​​voláteis são variáveis ​​que sempre lêem da memória principal, e não da memória cache da thread. Geralmente são usados ​​durante a sincronização.

16. O que são classes wrapper em Java?
Todos os tipos de dados primitivos em Java têm uma classe associada a eles – conhecidas como classes wrapper. Elas são conhecidas como classes wrapper porque elas 'empacotam' o tipo de dados primitivo em um objeto para a classe. Em resumo, eles convertem as primitivas Java em objetos.

17. Como podemos fazer uma classe singleton?
Tornando seu construtor privado.

18. Quais são os métodos importantes da Exception Class em Java?
● string getMessage()
● string toString()
● void printStackTrace()
● sincronizado Throwable getCause()
● public StackTraceElement[] getStackTrace()

19. Como podemos fazer uma thread em Java?
Podemos seguir uma das duas maneiras de fazer um thread em Java:
● Ao estender a classe de thread

A desvantagem desse método é que não podemos estender nenhuma outra classe, pois a classe de thread já foi estendida.
● Ao implementar a interface executável

20. Explique as diferenças entre os métodos get() e load().
Os métodos get() e load() têm as seguintes diferenças:
● get() retorna null se o objeto não for encontrado, enquanto load() lança a exceção ObjectNotFound.
● get() sempre retorna um objeto real, enquanto load() retorna um objeto proxy.
● O método get() sempre atinge o banco de dados enquanto load() não.
● get() deve ser usado se você não tiver certeza sobre a existência de uma instância, enquanto load() deve ser usado se você tiver certeza de que a instância existe.

21. Qual é o valor padrão das variáveis ​​locais?
Eles não são inicializados com nenhum valor padrão. Nem são primitivos ou referências de objeto.

22. O que é Singleton em Java?
É uma classe com uma instância em todo o aplicativo Java. Por exemplo, java.lang.Runtime é uma classe Singleton. O objetivo principal do Singleton é controlar a criação do objeto mantendo o construtor privado.

23. O que é o método estático?

Um método estático pode ser invocado sem a necessidade de criar uma instância de uma classe. Um método estático pertence à classe e não a um objeto de uma classe. Um método estático pode acessar o membro de dados estático e pode alterar o valor dele.

24. Qual é a exceção?

Exceções Condições incomuns durante o programa. Isso pode ser devido a uma lógica incorreta escrita por uma entrada de usuário ou programador incorreto.

25. Em termos simples, como você definiria Java?

Java é um portal orientado a objetos de alto nível, independente de plataforma e oferece suporte com alto desempenho para a construção de programas, aplicativos e sites sofisticados. Java é uma linguagem de programação de uso geral que capacita os desenvolvedores a criar aplicativos de funcionalidade rica com seu ambiente WORA (write once run anywhere). James Arthur Gosling, um cientista da computação do Canadá, desenvolveu Java em 1991 e é popularmente conhecido como 'Dr Java'. Hoje, o Java se tornou uma base essencial para o setor de TI moderno.

26 . O que é Java String Pool?

Um String Pool em Java é um local distinto que possui um pool de strings armazenado por meio da Java Heap Memory. Aqui, String representa uma classe especial em Java, e objetos string podem ser criados usando um novo operador ou valores entre aspas duplas.
A String é imutável em Java, portanto, viabilizando o pool de Strings e, em seguida, a implementação posterior via conceitos de internamento de Strings.

27. O que é uma classe de coleção em Java? Liste seus métodos e interfaces?

Java Collection Classes são classes especiais, que são usadas exclusivamente com métodos estáticos que funcionam especificamente em coleções de retorno. Java Collection por padrão herda uma classe e possui duas características essenciais como:

  • Eles suportam e operam com algoritmos polimórficos que retornam novas coleções para cada coleção específica.
  • Métodos em Java Collection lançam um NullPointerException caso os objetos de classe ou coleções tenham valor Null.

Eles são representados e declarados como Java.util.Collectionclass.

Existem mais de 60 métodos, modificadores e tipos de classes Java Collection. Aqui está uma lista dos métodos mais importantes na classe de coleção Java:

S. Não. Modificador, Método e Tipo Descrição
1. estático <T> booleano addAll() Este método permite a adição de elementos específicos a uma determinada coleção.
2. estático <T> Fila <T> asLifoQueue() Este método permite a listagem da coleção como Last-in-first-out (LIFO) em vista.
3. estático <T> int binarySearch() Este método permite pesquisar um objeto específico e depois retorná-los em uma lista ordenada.
4. estática <E> Coleção<E> Esse método retorna a exibição dinâmica de qualquer coleção específica.
5. estático <E> Lista <E> Esse método fornece um retorno de uma exibição dinâmica typesafe de uma lista específica.

Aqui estão alguns exemplos para Java Collection:
Coleção Java min() Exemplo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 import java.util.* ;  
 	classe pública ColeçõesExemplo {  
 	    public static void main ( String a []){         
 	        List < Integer > lista = new ArrayList < Integer >();  
 	        lista . adicionar ( 90 );  
 	        lista . adicionar ( 80 );  
 	        lista . adicionar ( 76 );  
 	        lista . adicionar ( 58 );  
 	        lista . adicionar ( 12 );  
          Sistema . fora . println ( "Elemento de Valor Mínimo na coleção: " + Coleções . min ( list ));  
      }  
  } 

A saída será:

Elemento de valor mínimo na coleção: 12

Coleção Java max() Exemplo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 import java.util.* ;  
  classe pública ColeçõesExemplo {  
      public static void main ( String a []){         
          List < Integer > lista = new ArrayList < Integer >();  
          lista . adicionar ( 90 );  
          lista . adicionar ( 80 );  
          lista . adicionar ( 76 );  
          lista . adicionar ( 58 );  
          lista . adicionar ( 12 );  
          Sistema . fora . println ( "Maximum value elemento na coleção: " + Collections . max ( list ));  
      }  
  }

A saída será:

Elemento de valor máximo na coleção: 90

28 . O que é um servlet?

Servlets são componentes de software Java que adicionam mais recursos a um servidor Java por meio de tecnologia, API, interface, classe ou qualquer implementação da web. Os servlets são executados especificamente em servidores de aplicativos da Web com tecnologia Java e são capazes de lidar com solicitações complexas do servidor da Web. Os servlets adicionam o benefício de maior desempenho, robustez, escalabilidade, portabilidade e garantem segurança para os aplicativos Java.

Processo ou Execução do Servlet:

  • Isso começa quando um usuário envia uma solicitação de um navegador da web.
  • O servidor web recebe e passa essa solicitação para o servlet específico.
  • O Servlet então processa essa solicitação para obter uma resposta específica com saída.
  • O Servlet então envia esta resposta de volta ao servidor web.
  • Em seguida, o servidor web obtém as informações que o navegador exibe na tela.

Java Servlets vêm com várias classes e interfaces como GenericServlet, ServletRequest, Servlet API, HttpServlet, ServeResponse, etc.

29. O que é o Despachante de Solicitação?

No Servlet, RequestDispatcher atua como uma interface para definir um objeto para receber solicitações de clientes de um lado e então despachá-lo para recursos específicos do outro lado (que pode ser um servlet, HTML, JSP). Este RequestDispatcher tem dois métodos em geral:

void forward (solicitação ServletRequest, resposta ServletResponse) Isso permite e encaminha as solicitações de qualquer servlet para recursos do servidor na forma de um Servlet, arquivo HTML ou arquivo JSP.
void include (solicitação ServletRequest, resposta ServletResponse) Que tenha conteúdo para um recurso específico na forma de uma resposta, como arquivo HTML, página JSP ou um servlet.

30. Qual é o ciclo de vida de um servlet?

Servlet é um componente de software Java que tem a função principal de primeiro receber a solicitação, depois processar a solicitação e dar uma resposta ao usuário em uma página HTML. Aqui, o Servlet Container gerencia o ciclo de vida de um servlet. Aqui estão as principais etapas:

  • Carregando Servlet.
  • Em seguida, inicializando o Servlet.
  • Manipulando a Solicitação (invocando o método de serviço).
  • Em seguida, destruindo o Servlet.

Aqui está um diagrama rápido mostrando o ciclo de vida de um Java Servlet:
Ciclo de Vida do Servlet

Fonte

  • Carregando Servlet

O ciclo de vida do Servlet começa com o estágio de carregamento no contêiner do Servlet. O servlet é carregado de uma das duas maneiras com:

    • Configurando o servlet como um valor integral positivo ou zero.
    • Em segundo lugar, esse processo pode sofrer atrasos, pois o contêiner seleciona o servlet certo para lidar com a solicitação.

Agora, os contêineres primeiro carregam a classe Servlet e, em seguida, constroem uma instância por meio do construtor sem argumentos.

  • Inicializando Servlet

A próxima etapa é usar o método Servlet.init(ServletConfig) para inicializar o Servlet para a origem de dados JDBC de instância.

  • Lidando com a solicitação (invocando o método de serviço)

Aqui, o Servlet recebe as solicitações do cliente e executa a operação necessária usando o método service().

  • Destruindo o Servlet

Agora, o contêiner Servlet destrói o servlet executando e concluindo tarefas específicas e chamando o método destroy() na instância.

31. Quais são os diferentes métodos de gerenciamento de sessão em servlets?

As sessões rastreiam a atividade do usuário depois que ele faz login no site. O gerenciamento de sessão fornece o mecanismo para obter informações para cada usuário independente. Aqui estão os quatro métodos diferentes para gerenciamento de sessão nos servlets:

  • HttpSession
  • Biscoitos
  • Reescrita de URL
  • Campo oculto HTML

32. O que é um Driver JDBC?

Java Database Connectivity (JDBC) aqui atua como um componente de software que permite que aplicativos Java se comuniquem com um banco de dados.

Os drivers JDBC têm os quatro tipos a seguir no ambiente:

  • Driver de ponte JDBC-ODBC
  • Driver de protocolo de rede (driver de middleware)
  • Driver de protocolo de banco de dados (driver totalmente Java)
  • Driver de API nativa

33. O que é a interface de conexão JDBC?

As conexões definem as sessões entre o banco de dados e os aplicativos Java. A interface de conexão JDBC faz parte apenas do pacote java.sql e fornece informações de sessão para um banco de dados específico. Eles representam várias instruções SQL para execução e resultados no contexto de uma única interface de conexão. Aqui estão os principais métodos para a interface Connections:

  • createStatement() : Para criar um objeto de instrução específico para adicionar instruções SQL ao banco de dados específico.
  • setAutoCommit(boolean status) : Para definir a conexão de um modo de confirmação para uma diretiva falsa ou verdadeira.
  • commit() : Isso faz todas as modificações do último commit e libera ainda mais qualquer banco de dados atualmente mantido pelo objeto Connection específico.
  • rollback() : Isso desfaz ou reverte todas as alterações feitas na transação passada ou atual e também libera o banco de dados atualmente mantido no objeto de conexão.
  • close() : Isso encerra ou fecha a conexão atual e também libera ou limpa os recursos JDBC instantaneamente.

34. Nomeie os diferentes módulos do framework Spring?

Existem vários módulos no framework Spring:

  • Módulo da Web
  • Módulo de suportes
  • Módulo servlet
  • Módulo de contêiner principal
  • Programação Orientada a Aspectos (AOP)
  • Módulo de contexto do aplicativo
  • Módulo de estrutura MVC
  • Abstração JDBC e módulo DAO
  • Módulo OXM
  • Módulo de linguagem de expressão
  • Módulo de transação
  • Módulo Java Messaging Service (JMS)
  • Módulo de integração ORM

Esses módulos estão presentes em grupos:

módulos de mola

Fonte

35. Explique o Bean no Spring e liste os diferentes escopos do Spring bean.

Beans são um dos conceitos fundamentais do framework Spring no gerenciamento eficiente de estruturas. Em uma definição simples, Spring Bean representa os containers IoC que gerenciam o objeto formando a espinha dorsal das aplicações.

Escopos do Spring Bean:

Os escopos desempenham um papel crucial no uso eficaz dos beans Spring no aplicativo. O escopo nos ajuda a entender o ciclo de vida do Spring Bean, e eles possuem os seguintes tipos .

S. Não. Escopo e Descrição
1. Singleton – Por padrão, o escopo do bean Spring tem um escopo singleton que representa apenas uma instância para o contêiner Spring IOC. Esse mesmo objeto é compartilhado para cada solicitação.
2. Protótipo – Neste, uma nova instância será chamada e criada para cada definição de bean, toda vez que uma requisição for feita para um bean específico.
3. Request – Neste escopo, um único bean será chamado e criado para cada solicitação HTTP para aquele bean específico.
4. Sessão – Este escopo define o uso de um único bean para um ciclo de vida em uma sessão HTTP global específica.
5. Global-session – Este escopo permite um único bean para o ciclo de vida específico para implementação na sessão HTTP global.

Observação: os três últimos escopos são aplicáveis ​​apenas no Spring ApplicationContext com reconhecimento da Web.

Deve ler: Por que Java é tão popular entre os desenvolvedores

36. Explique a função de DispatcherServlet e ContextLoaderListener.

Ao configurar a configuração Spring MVC baseada em XML no arquivo web.xml, duas declarações de DispatcherServlet e ContextLoaderListener desempenham um papel essencial na complementação do objetivo da estrutura.

  • DispatcherServlet –

DispatcherServlet tem o objetivo principal de gerenciar solicitações da Web recebidas para padrões de URI configurados de correspondência específicos. O DispatcherServlet atua como o controlador frontal para o núcleo do aplicativo Spring MVC e carrega especificamente o arquivo de configuração e, em seguida, inicializa os beans corretos presentes nesse arquivo. E quando as anotações estão habilitadas, ele também pode verificar e verificar as configurações e pacotes para todos os anotados com @Repository, @Component, @Service ou @Controller.

  • ContextLoaderListener –

ContextLoaderListener aqui atua como o ouvinte de solicitação para iniciar e encerrar o WebApplicationContext raiz. Portanto, ele cria e compartilha o contexto do aplicativo raiz com os contextos filho pelos contextos DispatcherServlet. Os aplicativos podem usar apenas uma entrada para o ContextLoaderListener no web.xml.

37. Explique a arquitetura do Hibernate.

O Hibernate define uma arquitetura em camadas que capacita os usuários a operar e executar sem conhecer as APIs subjacentes, ou seja, o Hibernate atua como um framework para construir e desenvolver lógica de persistência independente do software de banco de dados.

A arquitetura Hibernate tem as quatro camadas principais com:

  • camada de aplicação Java
  • Camada de banco de dados
  • Camada da API de back-end
  • Camada de estrutura de hibernação

Elementos da Arquitetura Hibernate

Existem vários aspectos e escopo para a arquitetura Hibernate. Para saber mais sobre eles, você deve conhecer os elementos da arquitetura Hibernate.

  • SessionFactory: Sessionfactory fornece o método para criar objetos de sessão que estão presentes apenas no pacote org.hiberate. É thread-safe por natureza, imutável e mantém e preserva o cache de segundo nível dos dados.
  • Sessão: Os objetos de sessão fornecem a interface para o software de conexão e banco de dados por meio da estrutura de hibernação.
  • Transação: Interface que auxilia o gerenciamento de transações e permite uma alteração no banco de dados.
  • ConnectiveProvider: Parte das conexões JDBC, separa o aplicativo principal do DataSource ou DriverManager.
  • TransactionFactory: representa a fábrica da transação.

38. O que é uma hierarquia de exceções em Java?

A exceção define os eventos indesejados que se apresentam durante a execução ou execução do programa. A exceção interrompe o fluxo regular do programa.
A hierarquia de exceção faz parte da classe java.lang.Exception e vem apenas na classe Throwable primária. Outra subclasse ' Error ' também representa a classe Throwable em Java. Embora os Erros sejam condições incomuns em caso de falha, eles ainda não são tratados ou eliminados com os programas Java.
Existem duas subclasses primárias para hierarquia excepcional em Java com a classe RuntimeException e a classe IOCException.

39. O que é sincronização?

A sincronização em Java define a capacidade de gerenciar e controlar o acesso de vários encadeamentos a um recurso específico. Assim, um thread pode acessar um recurso específico no momento. Aqui, o Java permite o desenvolvimento de threads e, em seguida, a sincronização de tarefas por meio dos blocos de sincronização.

Esses blocos sincronizados permitem apenas a execução de uma thread por um determinado tempo e bloqueiam as outras threads até que a thread atual saia do bloco. Aqui o conceito de monitores é crucial na implementação da sincronização em Java. Uma vez que o encadeamento entra em uma fase de bloqueio, ele é denominado para entrar no monitor. Assim, bloqueando todos os outros threads, a menos que o primeiro thread tenha saído do monitor.

40. Quais são as características que fazem do Java uma das melhores linguagens de programação?

Aqui estão os principais recursos que tornam o Java para iniciar sua curva de aprendizado no mundo da programação:

  • Simplicidade: Java é bastante simples de aprender e escrever. A sintaxe Java está em C++, o que permite que os desenvolvedores escrevam programas sem problemas.
  • OOPS: Java é baseado no sistema de programação orientado a objetos (OOPS), permitindo assim construir código em vários tipos de objetos com dados e comportamentos diferentes.
  • Dinâmico: Java é uma linguagem dinâmica completa que suporta o carregamento de classes dinâmicas quando e onde for necessário. E também possui suporte abrangente para linguagem de código nativa, como C, C++, etc.
  • Independente de plataforma: Java também suporta linguagem de programação exclusiva e independente de plataforma, permitindo assim que os desenvolvedores executem seu programa apenas em sua plataforma.
  • Portabilidade: Java tem uma abordagem de alcance uma vez escrita em qualquer lugar que permite que o código seja executado em qualquer plataforma.
  • Segurança: Seguir o conceito de ByteCode, manipulação de exceção e nenhum uso de ponteiros explícitos torna o Java um ambiente altamente seguro.

Java também é arquiteto neutro sem dependência de qualquer arquitetura. O gerenciamento de memória forte e a coleta de lixo automatizada adicionam mais robustez ao seu ambiente.

41. O que faz o Java possibilitar alto desempenho?

O uso do compilador Just in Time (JIT) em sua arquitetura faz do Java uma das linguagens de programação de alto desempenho, pois transforma instruções em bytecodes.

42. Cite os IDEs Java mais populares.

Existem muitos IDEs disponíveis na indústria para Java. Aqui estão os cinco principais IDEs Java que você pode usar para começar a aprender essa linguagem de programação hoje:

  • Eclipse
  • Netbeans
  • IntelliJ
  • JDeveloperName
  • Meu Eclipse

43. Defina as principais diferenças entre Java e outras plataformas?

Duas diferenças principais que fazem o Java se destacar de outras plataformas são:

  • Java é principalmente uma plataforma baseada em software, enquanto outras podem ser plataformas baseadas em software ou hardware.
  • Java é executado ou executado em qualquer plataforma de hardware, enquanto outros requerem requisitos de hardware específicos.

44. O que faz o Java ter sua natureza 'gravar uma vez e executar em qualquer lugar' (WORA)?

Bem, a resposta de uma palavra é Bytecode. O compilador Java converte todos os programas Java em um Byte Code específico atuando como uma linguagem mediadora entre o código de máquina e o código fonte. ByteCode pode ser executado em qualquer computador e não tem dependência de plataforma.

45. Explique os diferentes tipos de especificadores de acesso usados ​​em Java.

Na linguagem de programação Java, os especificadores de acesso representam o escopo exato da classe, variável ou método. Existem quatro especificadores de acesso principais:

  • Variáveis, métodos ou classes definidas públicas são acessíveis em qualquer método ou classe.
  • O especificador de acesso protegido define o escopo de uma classe, método e variável para o mesmo pacote, dentro da mesma classe ou para essa subclasse específica de classe.
  • O escopo Padrão existe para todas as classes, variáveis ​​e métodos presentes apenas com acesso ao pacote.
  • O escopo Private mantém o acesso de classe, variáveis ​​e métodos apenas a uma classe específica.

Leia: Projeto Java Swing

46. ​​Explique o significado dos pacotes em Java e suas vantagens.

Os pacotes são um mecanismo de agrupamento para tipos semelhantes (interface, classes, anotações e enumerações) garantindo a proteção dos ativos e o gerenciamento abrangente de nomes.

Aqui estão as vantagens dos pacotes em Java:

  • Os pacotes nos ajudam a evitar conflitos de nomenclatura quando existem classes com o mesmo nome em dois pacotes diferentes.
  • Os pacotes ajudam a tornar o controle de acesso sistematicamente.
  • Construa classes ocultas para serem usadas pelos pacotes.
  • Ajuda na localização de classes relacionadas ao pacote.

47. Como você definiria o Construtor em Java?

Construtores são um bloco especial de códigos que inicializa um objeto no momento da criação. Embora tenha uma semelhança com o método de instância, ainda assim os Construtores não são o método, pois não possuem nenhum tipo de retorno explícito. Assim, toda vez que um objeto está sendo criado no sistema, há um construtor chamado para que ele seja executado. Se não houver um construtor definido, o compilador usará um construtor padrão.

Aqui está uma apresentação simples do Constructor em Java:

 1
2
3
4
5
6
 classe pública MinhaClasse {
   //Este é o construtor
   MinhaClasse (){
   }
   ..
}

48. Quais são os diferentes tipos de construtores usados ​​em Java?

Existem três tipos de construtores usados ​​em Java:

  • Construtor padrão: Quando um desenvolvedor não usa um construtor, o compilador Java adiciona um construtor padrão mais específico existente no arquivo .class.
  • Construtor sem argumentos: neste caso, não há argumentos no construtor e o compilador não aceita nenhum parâmetro, pois o método de variável de instância é inicializado com valores fixos específicos.
  • Construtor parametrizado: Neste caso, um ou mais parâmetros estão presentes no construtor escrito apenas dentro dos parênteses do elemento principal.

49. Quais são as diferenças entre construtores e métodos?

A principal diferença nos construtores e métodos são:

  • Objetivo: O objetivo dos construtores é inicializar o objeto de uma classe enquanto o método executa tarefas específicas na execução do código.
  • O método tem tipos de retorno enquanto os construtores não.
  • Em Métodos, existem abstratos, estáticos, finais e sincronização, enquanto em construtores, você não pode fazer procedimentos específicos.

50. Explique o significado da variável Local e da variável Instance?

  • Variáveis ​​locais estão presentes no método e o escopo existe apenas dentro do método.
  • As variáveis ​​de instância estão presentes e definidas na classe apenas com seu escopo na classe.

51. Explique o significado de Classe em Java?

Em Java, todos os códigos, variáveis ​​e métodos são definidos na classe.

  • Variáveis ​​representam atributos que definem o estado de uma determinada classe.
  • Os métodos representam onde a lógica de negócios tem efeito. Os métodos incluem um conjunto de declarações e instruções para atender aos requisitos.

Aqui está um exemplo simples para uma classe em Java :

 1
2
3
4
5
6
7
 public class Adição { //Declaração do nome da classe
int x = 10 ; //Declaração de variável
int y = 10 ;
public void add (){ //Declaração do método
int z = a + b ;
}
}

52. Explique o significado de Object em Java?

Objetos são definidos como uma instância de uma classe apenas com estado e comportamento específicos. Por exemplo, um cachorro com um estado específico de nome, raça e cor, enquanto o comportamento inclui latir, abanar o rabo, etc. Assim, sempre que a JVM ler qualquer palavra-chave new(), uma instância correspondente será criada. Um objeto precisa ser declarado primeiro, depois instanciado e finalmente inicializado para continuar a ser executado.

53. Defina o valor padrão para o tipo de dados byte na linguagem Java.

Para o tipo de dados Byte, o valor padrão é 0.

54. Por que o tipo de dados byte é mais benéfico em Java?

Como o tipo de dados byte é quase quatro vezes menor que um inteiro, ele pode armazenar mais espaço para matrizes grandes.

55. Explique os conceitos de POO em Java.

OOPs, são os conceitos fundamentais da linguagem de programação Java. Estes incluem abstração, polimorfismo, herança e encapsulamento. Os conceitos Java OOPs capacitam os desenvolvedores a criar variáveis, métodos e componentes que permitem reutilizá-los de maneira personalizada, mantendo a segurança.

56. Explique o significado de Herança.

Em Java, Herança é um mecanismo específico que permite que uma classe adquira as propriedades (com campos e métodos) de outra classe. A herança é um dos conceitos básicos de Java OOPs.

A herança torna possível construir novas classes, adicionar mais campos e métodos nas classes existentes para reutilizá-los de qualquer forma.

  • Uma subclasse é aquela que herda as propriedades da outra classe.
  • Superclasse é aquela cujas propriedades são herdadas.

57. Explique os conceitos de Encapsulamento em Java?

Como um dos principais conceitos de Java OOPs, o Encapsulation permite o encapsulamento de dados e código em uma única unidade. O encapsulamento também é conhecido como ocultação de dados, com variáveis ​​de uma classe específica ocultas de todas as outras classes e acessíveis apenas com os métodos da classe existente.

As duas coisas essenciais para alcançar o encapsulamento em Java são:

  • Declarando as variáveis ​​de uma classe específica como privada.
  • Aproveitando os métodos setter e getter públicos para fazer alterações e visualizar os valores das variáveis.

58. Explique os conceitos de Polimorfismo.

O polimorfismo em Java permite que os desenvolvedores executem uma única tarefa de várias maneiras. Existem dois tipos de polimorfismo em Java com tempo de execução e tempo de compilação. Você pode usar métodos de substituição e sobrecarga para operar o polimorfismo em Java.

59. Explique o significado de interface.

Em Java, não podemos obter heranças múltiplas. Aqui, a interface desempenha um papel crucial na superação desse problema para alcançar a abstração, auxiliar nas heranças múltiplas e também suportar o acoplamento fraco. Agora temos um método padrão, estático e privado na interface com as atualizações mais recentes do Java.

60. O que se entende por classe abstrata?

As classes abstratas são construídas com uma palavra-chave abstrata específica em Java. Eles representam métodos abstratos e não abstratos.

61. Explique a classe de abstração em Java?

A abstração é uma das propriedades essenciais para ocultar as informações de implementação do usuário e então representar apenas as funções do usuário. For instance, when you send an SMS from one person to another person. The user gets to know only the message and number while the backend process remains hidden.

You can achieve abstraction in Java using the following two ways:

  • Abstract Class (0 to 100%)
  • Interface (100%)

62. Explain the difference between Abstraction and Encapsulation in Java.

Here are the main differences:

Abstração Encapsulamento
Abstraction aims to gain information. Encapsulation's main aim is to contain or procure information.
In the abstraction process, issues or problems are handled at the interface/ design level. In Encapsulation, problems are handled at a specific implementation level.
Abstraction aids in hiding unwanted information. Encapsulation method applies hiding data within a single unit.
Implemented with interfaces and abstract classes. Implemented with a particular access modifier (public, private, and protected).
Use abstract classes and interfaces to hide complexities. Use getters and setters to hide data.
Objects that extend to abstraction must be encapsulated. An object for encapsulation must not be abstracted.

63. Explain the differences between Abstract class and interface.

Abstract Class Interface
Abstract Class comes with a default constructor. The interface doesn't have a constructor. So, no further process.
Uses both Abstract and Non-Abstract methods. Only use Abstract methods.
Classes that must extend for Abstract class need only abstract methods throughout their sub-class. Classes that extend to interface must provide implementation across all the methods.
These include instance variables. The interface presents constants only.

64. Explain the main differences between Array and Array List.

Variedade Array List
The size needs to be defined for the declaring array.

String[] name = new String[5]

No size requirements; and modifies dynamically.

ArrayList name = new ArrayList

You must specify an index for putting an object inside the array.

name[1] = “dog”

There are no index requirements.

name.add(“dog”)

Arrays are not parameterised. From Java 5.0 onwards, ArrayLists have a specific parameterised type.

65. Explain the difference between static method and instance method.

Static or Class Method Instance Method
You must declare a method static for a static method. All methods with declaration as static come under Instance method only.
No requirements for creating objects in the Static method. The object is a must for calling the instance method.
You cannot access Instance or Non-static methods in the static context. You can access both static and non-static in the instance method.

66. How to make Constructors static?

Constructors invoked with the object, and static context is part of the class, not the object. Hence, constructors cannot be static and show compiler error if run or executed.

67. Explain the use of 'this' keyword in Java?

In Java, 'this' keyword represents a specific reference on the current object. There are multiple uses for this keyword for referring to the current class properties from a variable, constructors, methods, and more. You can also pass this as an argument within constructors or methods. You can also fetch this as a return value from the current class instance. You can also refer to this as a static context.

Leia também: Como codificar, compilar e executar projetos Java

68. What is a classloader in Java? What are the different types of ClassLoaders in Java?

Java Classloader's main function is to dynamically load all classes into the Java Virtual Machine (JVM). ClassLoaders are part of the JRE only. So every time we run a Java program, classloader loads the classes to execute this program. A single ClassLoader loads only a specific class on requirements and uses getClassLoader() method to specify the class. These classes are loaded by calling their names, and in case these are not found then it retrieves or throws a ClassNotFoundException or NoClassDefFoundError.

Java ClassLoader uses three principles in performing tasks with delegation, uniqueness, and visibility.
There are three different types of Java ClassLoader:

  • BootStrap ClassLoader:

BootStrap ClassLoader represents the parent or superclass for extension classloader and all other classloaders. It has machine code that loads the pure first Java ClassLoader and takes classes from the rt.jar and also known as Primordial ClassLoader.

  • Extension ClassLoader:

Extension ClassLoader represents the child classloader for the superclass or BootStrap ClassLoader. It loads core java classes from jre/lib/ext , ie, JDK extension library.

  • System ClassLoader:

Application or System ClassLoader are further child classes of Extension ClassLoader. It takes and loads a file from the current directory for the program that you can customise with the 'classpath' switch.

69. Explain the meaning of Java Applet.

Java Applet is a program that executes or runs in the web browser only. Applets are specifically designed to function and embed with HTML web pages. Applets have the capability to function full Java applications with the entire use of Java API. JVM is a must requirement to view an applet on the browser. Applet extends with the use of java.applet.Applet class.

70. What are the types of Applets?

Based on location, there are two types of Java applets as Local Applets that are stored on the same computer or system. The Remote Applets that have files on remote systems.

71 What are immutable objects in Java?

Em Java, objetos imutáveis ​​são aqueles cujo estado não muda após sua criação. Objetos imutáveis ​​são ideais para aplicativos multithread que permitem compartilhar os threads, evitando a sincronização. Objetos imutáveis ​​são preferidos para construir código simples, sólido e confiável para combinar com uma estratégia eficaz.

72. O que você entende por JRE (Java Runtime Environment)?

Java Runtime Environment é a camada de software que fornece suporte aos requisitos mínimos para executar programas Java em uma máquina. Junto com JDK e JRE, esses três constituem a base para executar e desenvolver programas Java em uma máquina específica.

73. Do que faz parte um JDK?

O Java Development Kit (JDK) é um dos principais pacotes de tecnologia essenciais para executar programas Java. Pode ser a implementação de qualquer uma das plataformas Java, Standard Edition, Micro ou Enterprise Edition desenvolvidas pela Oracle para a construção de aplicativos em Windows, Linux ou macOS.

74. O que é uma Máquina Virtual Java (JVM)?

Java Virtual Machine (JVM) é um dos três requisitos fundamentais para executar e executar programas Java juntamente com JDK e JRE. A JVM tem duas funções principais; primeiro, para capacitar os programas Java a serem executados perfeitamente em qualquer máquina ou sistema e, segundo, para otimizar a memória para fornecer desempenho.

75. Quais são as diferenças entre JDK, JRE e JVM?

JVM
JRE
JDK
Máquina Virtual JAVA Ambiente de execução Java kit de desenvolvimento do Java
Plataforma dependente com várias opções de software e hardware disponíveis. Camada de software que fornece suporte aos requisitos mínimos para executar programas Java em uma máquina.

Edição Padrão

Edição Empresarial

Edição Micro

Três noções como:

  • Especificação
  • Implementação
  • Instância
Conjunto de bibliotecas + arquivos que capacitam a JVM em tempo de execução. JRE + ferramentas de desenvolvimento
Fornece ambiente de tempo de execução para execução. JRE representa a implementação da JVM. Ambiente de desenvolvimento de software.

76. Quantos tipos de áreas de memória existem na JVM?

Existem vários tipos de áreas de memória na JVM:

  • Área de Classe: Esta memória armazena estruturas pré-classe com o campo, pool, dados de método e código.
  • Heap significa memória de tempo de execução especificamente alocada para os objetos.
  • Stack representa a memória do quadro com uma variável local, resultados parciais, thread e um quadro para cada método.
  • O Program Counter Register armazena as informações para a instrução atual com a execução da máquina Java Virtual.
  • Método nativo Stack armazena todos os métodos nativos presentes sendo usados ​​nas aplicações atuais.

77. O que é Data Binding em Java?

A vinculação de dados representa as conexões entre classe e método, campo, variável, construtores ou um corpo de método. Java pode lidar com vinculação de dados estaticamente e dinamicamente.

78. Quais são os diferentes tipos de vinculação de dados em Java?

Existem dois tipos cruciais de vinculação de dados em Java.

  • A vinculação estática acontece em tempo de compilação usando métodos estáticos, finais e privados; também conhecido como ligação precoce.
  • Dynamic Binding apresenta em tempo de execução sem informações exatas conhecidas sobre o método correto durante o tempo de compilação.

79. O que é um soquete Java?

Os soquetes ajudam na construção de mecanismos de comunicação dos dois computadores via TCP. Os soquetes são idealmente mais suficientes e flexíveis para comunicações.

80. Explique a diferença entre Path e Classpath.

Ambos path e Classpath representam variáveis ​​de ambiente locais. O caminho fornece o software para localizar os arquivos executáveis, enquanto o ClassPath especifica o local dos arquivos .class no sistema.

81. Existe um método abstrato sem o uso de classe abstrata?

Não, para um método abstrato existir em uma classe, ele deve ser uma classe abstrata.

82. Qual é o processo de criação de uma classe somente leitura em Java?

Em Java, você pode criar uma classe somente leitura mantendo todos os campos privados. Essa classe somente leitura específica terá apenas métodos getter que retornam propriedade privada. Não permite modificar ou alterar esta propriedade, pois nenhum método setter está disponível.

 1
2
3
4
5
6
7
8
9
 //Uma classe somente leitura em Java
classe pública Aluno {    
// membro de dados privados
instituto de strings privado = "MKG" ;    
// método getter para instituto
public String getInstitute (){    
instituto de retorno ;    
}    
}

83. Qual é o processo para criar uma classe somente gravação em Java?

Em Java, você também pode criar uma classe somente de gravação mantendo todos os campos privados apenas com a implementação de métodos setter.

 1
2
3
4
5
6
7
8
9
 // Uma classe somente escrita em Java
classe pública Aluno {    
// membro de dados privados
instituto privado de cordas ;    
//método setter para instituto
public void setInstitute ( String Institute ){    
isso . instituto = instituto ;    
}    
}

84. Explique a forma de acessar uma classe em outra classe em Java?

Em Java, existem duas maneiras de acessar uma classe em outra classe como:

  • Usando o nome específico: Podemos acessar uma determinada classe de um pacote diferente usando o nome qualificado ou importar esse pacote que contém uma classe específica.
  • Usando o caminho relativo: Da mesma forma, também podemos usar o caminho relativo para esse pacote com uma classe específica.

85. O que é Tratamento de Exceções?

O tratamento de exceção representa o mecanismo para tratar a exceção ou condições anormais durante os erros de tempo de execução para manter o fluxo normal do aplicativo. Existem três tipos diferentes de Exceções Java com Exceção Verificada, Exceção Não Verificada e Erro.

86. Explique a diferença entre Exceção Verificada e Exceção Não Verificada.

  • Checked Exceptions são classes que estendem ainda mais as classes jogáveis, exceto RuntimeException, como SQLException, IOException, etc. Checked Exceptions são tratados apenas durante o tempo de compilação.
  • Exceções não verificadas são classes que estendem RuntimeException, como NullPointerException, ArithmeticException, etc. e não são tratadas durante o tempo de compilação.

87. Qual é a classe base para Exception e Error?

Aqui, a classe Throwable representa a classe base para Exception e Error.

88. Mencione a palavra-chave de manipulação de exceção em Java.

Existem cinco palavras-chave para lidar com exceções em Java :

Palavra-chave Descrição
experimentar Este bloco try define o bloco para colocar o código de execução. Este bloco try é geralmente seguido pelo uso de catch ou finally. Portanto, eles não podem ser usados ​​sozinhos.
apanhar O principal objetivo do bloco Catch é manipular a exceção. Você deve usar isso em combinação com o bloco try e, finalmente, no estágio posterior.
finalmente Por fim, o bloco verifica o código importante do programa que verifica se a execução foi concluída ou não.
lançar O principal objetivo da palavra-chave throw é lançar uma exceção do programa.
lança A palavra-chave throws é usada principalmente para declarar exceções e não para lançar uma exceção. Ele fornece informações sobre ocorrência de exceção e é aplicado com uma assinatura de método.

89. Explique a importância do bloco final.

Aqui, o bloco finally tem importância crucial no bom andamento do programa. É sempre executado se a exceção é tratada ou não. Finalmente, o bloco vem depois do bloco try ou catch. Na JVM, o sistema sempre executará o bloco finally antes de encerrar ou fechar um arquivo. Para cada bloco try presente, pode haver zero ou vários blocos catch, mas só pode haver um bloco finally.

90. É possível executar um bloco finally sem um bloco catch?

Sim, um bloco finally pode ser executado seguido por um bloco try ou catch, respectivamente.

91. Existem casos de não existir bloco final?

Finalmente o bloco não roda ou executa caso o programa já exista ou traga erro fatal por abortar o processo.

92. Explique as principais diferenças entre arremessos e arremessos.

jogar palavra-chave

lança palavra-chave

Ele lança uma exceção. Declara uma exceção.
Exceções verificadas não podem propagar apenas com lançamento. Exceções verificadas podem se propagar com lançamentos.
Ele é seguido por uma instância. Ele é seguido por uma classe.
É usado apenas no método. É usado com uma assinatura de método específica.
Não há possibilidades para múltiplas exceções. Considerando que neste procedimento, múltiplas exceções podem ser declaradas.

93. Existe a possibilidade de uma exceção ser relançada?

Sim, se existir uma exceção, ela poderá ser relançada.

94. Explique sobre a Propagação de Exceções.

O processo de exceção dentro do procedimento de tratamento é conhecido como propagação de exceção. Por exemplo, uma exceção é tratada primeiro no topo da pilha e, se não for capturada, a exceção cai para o método anterior e, se não, desce ainda mais até que a exceção seja capturada ou atinja o fundo da pilha. As exceções marcadas por padrão não têm propagação.

95. Explique o significado de thread em Java.

Em Java, o caminho ou fluxo da execução é conhecido como thread. Assim, cada programa contém um encadeamento denominado encadeamento principal criado pela JVM. Os desenvolvedores têm o poder de definir seus threads personalizados adicionando e estendendo a classe Thread usando a interface.

96. Explique o significado do conjunto de encadeamentos.

O conjunto de encadeamentos Java é um grupo de vários encadeamentos que aguardam continuamente por tarefas alocadas. Aqui, os pools de threads funcionam sob o provedor de serviços que extrai um thread desse pool e, em seguida, atribui a eles a tarefa para um trabalho específico. O pool de threads adiciona mais desempenho e estabilidade ao sistema.

97. Explique a diferença entre String e StringBuffer.

Corda

StringBuffer

A classe String é imutável por natureza. A classe StringBuffer, por outro lado, é mutável.
As cordas são lentas. Caso contrário, StringBuffer é bastante rápido.
Eles consomem mais memória para criar uma nova instância. Estes consomem menos memória com strings concat.
Strings permitem a comparação de seu conteúdo, pois substitui o método equals() da classe Object. Enquanto a classe StringBuffer não pode substituir o método equals() da classe Object.

98. Explique a diferença entre StringBuffer e StringBuilder.

StringBuffer

StringBuilder

É sincronizado com segurança para threads. Não é sincronizado sem segurança para threads.
Neste, dois threads não têm método de chamada. Neste, dois threads podem ter métodos de chamada perfeitamente.
Menor ou menos eficiente que StringBuilder. Mais eficiente que StringBuffer.

99. Qual é a maneira de criar uma classe imutável em Java?

Em Java, você pode criar uma classe imutável declarando uma classe final com todos os seus membros como final. Vamos dar um exemplo para entender isso:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public final class Empregado {  
 	final String securityNumber ;  
 	  
 	funcionário público ( String securityNumber ){  
 	isso . securityNumber = securityNumber ;  
 	}  
 	  
 	public String getSecurityNumber (){  
 	retornar securityNumber ;  
  }  
    
  }

99. O que são classes internas?

As classes Java Inner são definidas e declaradas dentro de uma interface ou classe. As classes internas permitem que o sistema agrupe classes e interfaces logicamente, tornando-as mais legíveis e fáceis de manter. Além disso, essas classes podem acessar todos os membros da classe externa com métodos, bem como membros de dados privados.

100. Quais são as principais vantagens e desvantagens do uso de classes Java Inner?

As principais vantagens das classes internas Java incluem:

  • Acessibilidade a todos os membros das classes externas.
  • Menos código para escrever.
  • Mais manutenção e código legível.

As principais desvantagens das classes internas Java incluem:

  • Menos suporte do IDE.
  • Um número elevado de classes totais.

101. Defina os tipos de classes internas na linguagem de programação Java?

As classes internas têm três tipos principais:

  • Member Classe interna que especifica uma classe dentro da classe usando o método externo.
  • Classe interna anônima para estender a classe ou especificar a implementação de uma interface.
  • Local Inner Class para criar uma classe dentro do método.

102. Defina uma classe aninhada.

As classes aninhadas são definidas ou declaradas apenas dentro de uma classe ou interface. Uma classe aninhada pode acessar especificamente todos os membros da classe externa com métodos e membros de dados privados também. Aqui está uma sintaxe simples de uma classe aninhada:

 1
2
3
4
5
6
 class Java_Outer_class {    
 	 //código
 	 class Java_Nested_class {    
 	  //código
 	 }    
 	}

103. Você pode explicar a diferença entre classes internas e classes aninhadas?

Todas as classes internas são definidas como classes aninhadas não estáticas. Portanto, as classes internas fazem parte apenas das classes aninhadas.

104. Como você definiria o significado de Collections em Java?

Coleções em Java são um grupo de vários objetos que se apresentam como uma unidade; conhecido principalmente como uma coleção de objetos. Eles também são chamados de Collection Framework ou arquitetura que fornece espaço de armazenamento para objetos e manipula ainda mais o design para alterações.

Aqui estão as principais funções executadas pelas Coleções Java:

  • Ordenação
  • Procurando
  • Inserção
  • Manipulação
  • Eliminação

Existem muitas interfaces e classes que fazem parte das coleções.

105. Quais interfaces e classes estão disponíveis nas coleções?

Aqui está a lista das interfaces e classes que estão disponíveis com as coleções em Java.

  • Interfaces: Coleção, Fila, Conjunto Ordenado, Mapa Ordenado, Lista, Conjunto, Mapa
  • Classes: Listas, Vetor, Lista de Matrizes, Lista Vinculada
  • Conjuntos: conjunto de hash, conjunto de árvore, conjunto de hash vinculado
  • Mapas: mapa de hash, tabela de hash, mapa de árvore, mapa de hash vinculado
  • Fila: Fila Prioritária

106. Explique ordenada e ordenada em relação às coleções em Java?

  • Ordenado: A ordenação permite que o grupo de objetos se aplique interna ou externamente para classificá-los em uma determinada coleção, com base em suas diferentes propriedades.
  • Ordenado: define os valores que são classificados com base nos valores adicionados na coleção e os itera em uma ordem específica.

107. Quais são as diferentes listas disponíveis na coleção?

Lista os valores de armazenamento com base em sua posição de índice com a duplicação permitida. Aqui estão os principais tipos de listas:
Listas de Arrays: Usa a Interface de Acesso Aleatório, fornece coleta de pedidos pelo índice, não classificado, e oferece iteração rápida. Aqui está um exemplo para entender isso:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 classe pública Frutas {
public static void main ( String [ ] args ){
ArrayList < String > nomes = new ArrayList < String >();
nomes . add (  maçã  );
nomes . adicione ( " abacate " );
nomes . add (  cereja  );
nomes . adicione ( " kiwi " );
nomes . add (  laranjas  );
nomes . adicione ( " banana " );
nomes . adicione ( " kiwi " );
Sistema . fora . println ( nomes );
}
}

A saída é a seguinte:

[Maçã, abacate, cereja, kiwi, laranja, banana, kiwi]

Com a saída, você pode verificar se o Array List mantém o pedido de inserção original e também permite duplicatas. Embora não classificado.

Vector: também usa o método de acesso aleatório, são sincronizados e oferece suporte para segurança de thread.

Vamos entender isso com um exemplo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 classe pública Frutas {
public static void main ( String [ ] args ){
ArrayList < String > nomes = new vector < String >();
nomes . adicione ( " kiwi " );
nomes . add (  laranjas  );
nomes . adicione ( " banana " );
nomes . add (  maçã  );
nomes . adicione ( " abacate " );
nomes . add (  cereja  );
nomes . adicione ( " kiwi " );
Sistema . fora . println ( nomes );
}
}

A saída é a seguinte:

[kiwi, laranja, banana, maçã, abacate, cereja, kiwi]

As listas de vetores seguem o pedido de inserção original e também suportam as duplicatas.

Lista encadeada: também é uma escolha ideal para exclusão e inserção, os elementos são vinculados duplamente, mas o desempenho é lento.

Exemplo de lista vinculada:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 classe pública Frutas {
public static void main ( String [ ] args ){
ArrayList < String > nomes = new vector < String >();
nomes . adicione ( " kiwi " );
nomes . add (  laranjas  );
nomes . adicione ( " banana " );
nomes . add (  maçã  );
nomes . adicione ( " abacate " );
nomes . add (  cereja  );
nomes . adicione ( " kiwi " );
Sistema . fora . println ( nomes );
}
}

A saída é a seguinte:

[Maçã, abacate, cereja, kiwi, laranja, banana, kiwi]

Ele também segue o pedido de inserção original e aceita duplicatas.

108. Quais são as principais diferenças entre coleção e coleções em Java?

As principais diferenças são as seguintes:

  • A coleção representa uma interface enquanto Collections é particularmente apenas de classe.
  • A interface de coleta fornece várias funcionalidades para estruturar dados como Lista, Conjunto e Fila. Considerando que o objetivo principal da classe Collection é limitado a ordenar e sincronizar os elementos da coleção.

109. Explique a Fila Prioritária.

A fila de prioridade define a interface da fila para lidar com listas vinculadas com a finalidade de entrada e saída de prioridade. A fila geralmente segue um algoritmo FIFO (first in first out), mas você pode enfileirar elementos com base em requisitos específicos e, em seguida, podemos implementar PriorityQueue para personalização. Com o Priority Queue, depende do heap de prioridade naturalmente ou por meio do comparador em sua prioridade relativa.

110. Quando é ideal usar e comparar a interface Runnable em Java?

Quando precisamos estender uma classe com algumas outras classes e não com as threads, as interfaces executáveis ​​são a escolha ideal.

111. Qual é a diferença entre o método start() e run() da classe de thread?

O método start() adiciona e cria um novo thread. E o código no método run() é executado apenas no novo thread. Enquanto o método run() executará o código apenas na thread atual.

112. O que é Multithreading?

Em Java, podemos executar vários threads simultaneamente, o que é conhecido como Multithreading. Ele ajuda o programa a realizar várias tarefas ao mesmo tempo em que ocupa menos memória e oferece maior desempenho. No Multithreading, os threads são leves, compartilham o mesmo espaço e são bastante acessíveis em todos os aspectos.

113. Explique a diferença entre processo e threads.

Aqui as principais diferenças são:

  • Um programa Java em execução é denominado como um processo enquanto um thread representa apenas um subconjunto do processo.
  • Os processos representam diferentes espaços na memória, enquanto as threads possuem o mesmo endereço.
  • Os processos são totalmente independentes, enquanto os threads fazem parte apenas do processo.
  • Comunicação lenta entre processos, enquanto a comunicação entre threads é rápida.

114. Explique o significado da comunicação entre threads.

A comunicação entre threads é definida como o processo que permite a comunicação entre vários threads sincronizados. Seu principal objetivo é evitar o agrupamento de threads em Java. A comunicação é obtida através dos métodos wait(), notify() e notifyAll().

115. Explique o método wait().

Com o método wait(), você pode permitir que o thread esteja no estágio de espera enquanto o outro thread está bloqueado no objeto. Assim, o método wait() pode adicionar uma duração de espera significativa para threads.

Aqui está uma sintaxe para representar isso:

 1
2
3
4
5
6
 public static void main ( String [] args ){
Thread t = new Thread ();
t . iniciar ();
Sincronizado ( t ) {
Aguarde ();
}

116. Qual é a principal diferença entre o método notify() e notifyAll() em Java?

O método notify() envia um sinal para ativar apenas um thread específico no pool de espera, enquanto o notifyAll() acorda todos os threads no estágio de espera do pool.

117. Defina as principais diferenças entre sleep() e wait().

Sleep() pausa ou interrompe o progresso do thread atual suspendendo a execução por uma duração específica enquanto não libera o bloqueio. Enquanto wait() causa uma duração de espera para um thread depois de invocar um método notify() para acordar mais tarde.

118. Explique o método join() em relação ao thread em Java.

O método join() permite combinar uma thread com uma das threads contínuas. Aqui está uma sintaxe para o método join():

 1
2
3
4
5
 public static void main ( String [] args ){
Thread t = new Thread ();
t . iniciar ();
t . juntar ();
}

119. Explique o método Yield de Thread.

O método Yield é um método estático e não libera nenhum bloqueio nas threads. Aqui, um método Yield() capacita o thread atual para um thread mais executável enquanto permite que os outros threads mantenham a execução. Assim, threads com prioridade de thread igual podem ser executados regularmente.

120. O que é o estágio de Fome?

A fome é uma fase em que um thread não consegue acessar recursos compartilhados e não consegue fazer nenhum progresso.

121. O que é Deadlock para uma thread?

Deadlock define um estágio quando dois ou vários threads são bloqueados para sempre esperando um pelo outro.

122. Definir serialização e desserialização em Java?

A serialização é o processo para transformar o estado de um objeto em um fluxo de bytes específico, idealmente adequado para tecnologias JPA, JMS, RMI, JPA e Hibernate. Enquanto o processo oposto de transformar um fluxo de bytes em um objeto é chamado de desserialização. Ambos os processos são independentes de plataforma, portanto, permitem serializar em uma plataforma e desserializar em uma plataforma totalmente diferente com eficiência.

123. Qual a importância das variáveis ​​transitórias?

A importância das variáveis ​​transitórias está na desserialização que é definida para as variáveis ​​padrão e não usada com as variáveis ​​estáticas.

124. O que são variáveis ​​voláteis?

Variáveis ​​voláteis desempenham um papel crucial na sincronização e leitura da memória principal, evitando a memória cache de thread.

125. O que é SerialVersionUID?

No processo Serializado, um objeto é carimbado com um número de ID de versão específico para a respectiva classe de objeto. Esse número é denominado SerialVersionUID e desempenha um papel crucial na verificação durante o processo de desserialização para verificar a compatibilidade no remetente e no destinatário, respectivamente.

126. Qual é o processo de clonagem de um objeto em Java?

Com a clonagem de objetos, você pode criar uma cópia exata do objeto original. Para que a clonagem seja possível, uma classe deve ter o suporte para clonagem com a interface java.lang.Cloneable e permitir a substituição do método clone() da classe de objeto original.

Aqui uma sintaxe simples para o método clone():

clone de objeto protegido () lança CloneNotSupportedException

Caso o clone não o implemente, ele geralmente lança uma exceção com o 'CloneNotSupportedException'.

127. Defina a classe que permanece superclasse para cada classe?

Classe de objeto.

128. Defina se uma classe de string é mutável ou imutável?

A classe String representa um estado imutável. Então, uma vez que um objeto é criado, isso não pode mudar mais.

129. Como você diferencia entre as classes StringBuffer e StringBuilder?

  • StringBuilder é mais rápido que o StringBuffer.
  • StringBuffer é sincronizado enquanto StringBuilder não é sincronizado.
  • O StringBuffer oferece um ambiente thread-safe, enquanto o StringBuilder não possui capacidade thread-safe.

130. Qual é o uso do método toString() em Java?

Em Java, toString() recupera ou retorna a representação de string de qualquer objeto.

131. O que é uma coleta de lixo em Java?

À medida que os objetos são alocados dinamicamente por meio do operador, o sistema Java também lida com a desalocação da memória usada automaticamente caso não haja referências para o objeto que permanece por um período significativo. Esse processo de manter o sistema livre de objetos que não têm uso é conhecido como Coleta de Lixo em Java. O principal objetivo da coleta de lixo é tornar o gerenciamento de memória mais eficiente.

132. Qual é o número de vezes que um coletor de lixo chama o método finalize() para um objeto específico?

Você pode chamar o método finalize() na coleta de lixo apenas uma vez.

133. Defina as formas de chamar a coleta de lixo.

Há duas maneiras de chamar a coleta de lixo:

  • System.gc()
  • Runtime.getRuntime().gc()

134. Podemos forçar a coleta de lixo?

Não, este é um processo automático. Você pode chamar o método de coleta de lixo, mas não pode forçá-lo. Ainda assim, não garante que seria completo.

135. Quais são os diferentes tipos de dados em Java? Explique.

Aqui está uma lista para ajudá-lo com os tipos de dados:

  • byte – 8 bits
  • curto – 16 bits
  • char – Unicode de 16 bits
  • int – 32 bits (número inteiro)
  • float – 32 bits (número real)
  • long – 64 bits (precisão simples)
  • double – 64 bits (precisão dupla)

136. Defina o Unicode.

Unicodes são uma maneira de definir caracteres internacionais em linguagens humanas, e Java usa essa estrutura Unicode para simbolizar os caracteres.

137. Defina literal.

Um literal é um valor constante atribuído a uma variável específica

// Aqui 105 é um literal

número inteiro = 105

138. Defina o tipo de conversão em Java?

No caso de atribuir um valor de um tipo de dados a outro tipo de dados, esses dois podem ou não ser compatíveis e exigir conversão. Java converterá automaticamente no caso de tipos de dados compatíveis. Embora os tipos de dados não sejam compatíveis, eles devem ser convertidos para uma conversão bem-sucedida. O casting tem dois tipos básicos: Implícito e Explícito.

139. Explique os dois tipos diferentes de typecasting?

  • Implícito: define o armazenamento de valores de tipos de dados menores em tipos de dados maiores, realizado apenas pelo compilador.
  • Explícito: define o armazenamento de valores de tipos de dados maiores em tipos de dados menores que podem resultar em perda de informações.

Conclusão

As perguntas da entrevista Java acima fornecerão um bom começo para se preparar para a entrevista. Pratique suas habilidades de codificação também, e certifique-se de ser completo nessas perguntas e seus conceitos relacionados para que, quando o entrevistador disparar um Q, você esteja pronto para ganhar a rodada com seu A. Ah, e não se esqueça de 3 respirações (inconspícuas) quando você se apresenta diante do entrevistador.

Se você estiver interessado em aprender mais sobre Java, desenvolvimento de software full-stack, confira o Executive PG Program in Software Development – ​​Specialization in Full Stack Development do upGrad & IIIT-B, que é projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso , mais de 9 projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.

Tudo de bom! Espero que você destrua suas entrevistas !!

Aterre no seu emprego dos sonhos

Inscreva-se para a Certificação PG vinculada ao trabalho do upGrad em Engenharia de Software