Perguntas e respostas da entrevista Java em 2022
Publicados: 2022-08-03Você é um programador? E você escolheu a linguagem de programação Java como seu nicho preferido para construir uma carreira? Parabéns! Você escolheu corretamente. De acordo com as estatísticas, um programador americano ganha em média US$ 105.801 por ano. Isso é uma média de $ 50,87 por hora, $ 2.035 por semana e $ 8.817 por mês. Isso não é impressionante?
Mas ter a chance de conseguir o emprego dos seus sonhos como programador Java está além do pensamento positivo. Dos 8 milhões de programadores Java em todo o mundo, apenas cerca de 56.585 são remunerados nos EUA, tornando a procura de emprego como programador Java bastante competitiva. Se você precisa conseguir aquele emprego dos sonhos, precisa estar bem equipado nos aspectos básicos e complexos da linguagem de programação Java.
Agora você sabe o quão competitivo é conseguir um emprego como programador Java e o requisito para ser elegível para estar entre os poucos a conseguir um emprego como programador Java. Lembre-se, o sucesso é uma função da preparação para o encontro de oportunidades. À medida que avançamos, criamos um guia de perguntas e respostas para ajudá-lo a escalar a fase de entrevista e possivelmente conseguir o emprego dos seus sonhos. Esta lista foi compilada com a ajuda do artigo – preparando-se para uma entrevista em Java com perguntas e respostas sobre Apollotechnical. Vamos continuar com isso.
Perguntas básicas de entrevista Java para calouros
O que você entende por Java?
Java é uma linguagem de programação versátil, orientada a objetos e multiplataforma, usada em 3 bilhões de dispositivos em todo o mundo para várias tarefas, como aplicativos de redes sociais, programas de áudio e vídeo, jogos, processamento massivo de dados, dispositivos incorporados e assim por diante.
Comparar entre Java e Python
Em sua simplicidade, Java é uma linguagem de programação de propósito geral, focada em objetos, baseada em classes, mas com menos especificações exigidas. Devido à sua reputação de ser rápido, confiável e orientado a resultados, é a linguagem de programação para o desenvolvimento de aplicativos em telefones celulares, consoles de jogos, laptops, computadores científicos de última geração, etc. Por outro lado, Python é uma linguagem de programação traduzida, focada em objetos e estruturada dinamicamente elevada. Python facilita a flexibilidade do programa e a reutilização de código habilitando módulos e pacotes.
Descreva os principais recursos do Java
- Java é focado em objetos
- Java é independente de plataforma
- Tem excelente implementação multithreading
- Usa linguagem simples
- E a Arquitetura é neutra
O que você quer dizer com um objeto em Java
Em Java, um objeto é um componente (também conhecido como “uma instância”) de outro agrupamento Java chamado 'classe'. Cada objeto tem um estado, comportamento/ações e identidade únicos. Campos (variáveis) armazenam o estado de um objeto, enquanto metodologias (operações) mostram as ações do objeto. Em tempo de execução, os objetos são criados a partir de estruturas identificadas como classes.
Um objeto também pode ser um elemento fundamental da Programação Baseada em Objetos que representa entidades do mundo real.
Distinguir entre Stringbuffer e Stringbuilder na programação Java
StringBuffer e StringBuilder diferem principalmente em quatro parâmetros: desempenho/velocidade, segurança de thread, disponibilidade e sincronização. StringBuilder é uma variante não sincronizada da classe StringBuffer.
Outra distinção entre StringBuffer e StringBuilder é que o primeiro é thread-safe, enquanto o último não é.
Diferenciar entre JDK, JRE e JVM
O Java Development Kit (JDK) inclui escrever, solucionar problemas e analisar ferramentas de programação Java. JRE é um conjunto de classes e objetos e outros arquivos que a JVM precisa para executar um aplicativo. A JVM não fornece nenhuma ferramenta de desenvolvimento de software.
O Java Development Kit (JDK) é um produto de software para criar aplicativos Java. JRE é um pacote de software que contém as bibliotecas de classes Java e outros componentes necessários para executar a programação Java. A Java Virtual Machine (JVM) interpreta a linguagem de bytes Java e cria uma atmosfera adequada para execução. O JDK é específico da plataforma, o JRE é dependente da plataforma e o JVM é dependente da plataforma em uma escala maior.
Definir herança
Em Java, herança é um princípio que transfere características de uma classe para outra; É o framework em Java pelo qual uma classe obtém propriedade de outra ou permite que uma classe possua as características (métodos e atributos) de outra.
O que é classe em Java?
Uma classe é um elemento fundamental na programação orientada a objetos. É um formato que define o estado e as funções atribuídas à instanciação de classe. Uma classe também é um modelo lógico porque é usado para construir modelos que compartilham atributos e métodos semelhantes.
Compare sobrecarga e substituição em Java
A sobrecarga refere-se a ter métodos da mesma classe com o mesmo nome, mas cada um possui vários critérios ou os mesmos critérios com vários tipos e ordens. Enquanto Overriding significa ter uma subclasse com as mesmas técnicas sob o mesmo título de uma superclasse e o mesmo tipo de critério e valor de retorno.
Além disso, a sobrecarga é um polimorfismo de linha de comando com uma ligação estática e sobrecarregando o método estático. Enquanto a substituição é um polimorfismo de execução do programa com uma ligação flexível e a incapacidade de substituir o método estático.
Explicar a criação de um singleton thread-safe em Java usando o bloqueio verificado duas vezes
O Padrão Singleton é um padrão de design bem conhecido no qual uma classe é limitada a apenas uma instância ao longo de sua vida e vários clientes compartilham essa instância. O padrão Singleton é incorporado com duas responsabilidades principais: a primeira é garantir que apenas uma instância de classe seja gerada. A segunda é fornecer um método que todos tenham acesso mundial a essa instância específica.
Um dos desafios que o projeto Singleton enfrenta em um programa multithreading é garantir que apenas uma instância da classe seja gerada, mesmo que vários usuários chamem a técnica getInstance() ao mesmo tempo. O sistema de bloqueio verificado novamente corrige esse dilema, garantindo que a sincronização seja utilizada somente quando um caso individual de Singleton for criado sempre que a função getInstance() for invocada pela primeira vez e que a mesma instância seja trazida de volta sem nenhuma sincronização acima todas essas outras instâncias.
Perguntas de entrevista Java intermediárias
O que é JDK? Mencione as variantes do JDK?
JDK significa Java Development Kit. O Java Development Kit (JDK) é o software obrigatório durante o desenvolvimento de qualquer aplicativo Java. O Java Development Kit (JDK) inclui escrever, solucionar problemas e analisar ferramentas de programação Java.
Fundamentalmente, o JDK é uma implementação Java Standard Edition ou Java Enterprise Edition. Java foi renomeado Java 2 (abreviado para Java 2 SDK ou J2SDK) em 1998 devido a uma atualização significativa da plataforma. Ela desenvolveu três versões separadas de Java para suportar vários aplicativos.
- J2SE significa Java 2 Platform, Basic and Usual Edition e destina-se a contextos de desktop e servidor.
- J2EE significa Java 2 Platform, Corporate Edition, projetado para aplicativos de negócios e inclui recursos como armazenamento baseado em nuvem e suporte a serviços online.
- J2ME (Java 2 Platform, Micro Edition) destina-se a dispositivos ou plataformas instalados e móveis.
No entanto, em 2004, os rótulos das variantes foram modificados para Java ME (Micro Edition of the Java Platform), Java EE (Enterprise Edition of the Java Platform) e Java SE (Standard Edition of the Java Platform), respectivamente. O apelido do kit de desenvolvimento também foi alterado de “Java 2 SDK” para “JDK”. Além disso, o contexto operacional foi renomeado como “JRE” em vez de “J2RE”. As variantes com suas versões, Java SE 6 e Java EE 5 ainda estão em uso.
Um construtor pode retornar um valor?
Entendendo que um construtor não é como uma técnica convencional utilizada durante a programação em Java, de alguma forma ele não retorna ou traz nenhum resultado especificado, o que poderia causar um grande efeito ou impacto no código. O Construtor pode incluir instruções ilimitadas, mas não pode trazer de volta ou retornar os valores ou o resultado das instruções.

Explique a palavra-chave 'THIS' em Java
'This' é um termo específico em Java que especifica a entidade que o programador está executando agora. A palavra-chave é meramente prefixada ao parâmetro diferente relacionado ao uso do operador – ponto (.), que pode ser usado de dentro de um método ou construtor. A palavra-chave 'This' não é usada com muita frequência, pois a maioria dos aplicativos destina-se a evitar situações em que seria necessário. O acesso às variáveis de instância é fornecido pelo termo 'this'.
Explique a palavra-chave 'SUPER' em Java
Em Java, a palavra-chave 'super' é um parâmetro relativo associado ao conceito de herança que se refere às instâncias da classe pai, supondo que a classe derivada tenha um parâmetro no grupo ou método com o mesmo nome da classe pai. O termo é utilizado principalmente quando a subclasse precisa acessar um parâmetro, função ou Construtor na classe base.
Explicar a sobrecarga de métodos em Java
Em Java, sobrecarga refere-se a métodos com o mesmo nome e classe, mas com vários critérios e vice-versa. Duas ou mais técnicas têm nomes e classes uniformes, mas assinaturas diferentes na sobrecarga. A sobrecarga é um polimorfismo de linha de comando que altera o comportamento de um método, causando uma sobrecarga.
Podemos sobrecarregar um método estático em Java?
Em Java, o método estático se comporta de maneira semelhante às metodologias regulares de sobrecarga e, como tal, pode ser sobrecarregado. No entanto, deve oferecer um método estático adicional com o mesmo nome, mas uma assinatura de metodologia variável, se o objetivo for sobrecarregar o método estático.
Definir vinculação tardia
A vinculação tardia é um formato que indica que o compilador não deve realizar verificações de tipo em chamadas de método, nenhuma verificação de argumento e deve deixar tudo para o tempo de execução (uma instância está em programação COM).
Definir despacho de método dinâmico
O despacho de método dinâmico refere-se à resolução ou correção de uma chamada para um método substituído em tempo de execução, e não em tempo de compilação.
Por que a função delete é mais rápida na lista vinculada do que uma matriz
A operação de remoção de LinkedList retorna O(1). Mas a operação remove ArrayList retorna O(n) no pior caso, ou seja, ao excluir a primeira entrada e O(1) no melhor cenário ao remover o último elemento. Quando comparado ao ArrayList, a exclusão do elemento LinkedList é mais rápida. A razão para isso é que cada elemento LinkedList tem dois ponteiros (endereços) que apontam para ambos os membros vizinhos na lista. Como resultado, a remoção de um nó envolve a modificação da posição de referência nos dois componentes adjacentes do nó.
Perguntas avançadas de entrevista em Java para experientes
Embora a herança seja um conceito popular de oops, ela é menos vantajosa do que a composição. Explique!
As classes Java podem ter apenas uma superclasse, pois heranças múltiplas não são suportadas na linguagem. Em várias funcionalidades, como ler e escrever em um arquivo, a estrutura de compilação é preferível. Você pode compará-lo com os recursos de escritor e leitor de um membro privado. Com o auxílio da composição, é possível evitar a quebra do encapsulamento ao mesmo tempo em que obtém uma flexibilidade significativa. O teste de unidade, que é impossível devido à herança, é possível com a ajuda da composição.
Como a criação de uma string usando new() é diferente da de um literal?
Quando usamos new() para gerar uma String, um novo objeto é construído na memória heap. Demora mais para executar e, portanto, fica para trás em comparação com o literal de String. No entanto, quando já existem dados estabelecidos na String para uma String criada usando o literal de String, há uma ligação desses mesmos dados com a variável String no pool de Strings. E isso é conseguido sem ter que construir uma String totalmente nova com os mesmos dados estabelecidos.
É possível exceder o limite de memória em um programa apesar de ter um coletor de lixo?
Sim. A presença de um coletor de lixo não interrompe ou impede que um programa fique sem memória.
Por que a sincronização é necessária? Explique com a ajuda de um exemplo relevante
A sincronização é um mecanismo que garante que todos os threads coincidentes sejam executados simultaneamente. A sincronização evita problemas de consistência de memória produzidos por uma exibição de memória sinérgica que é inconsistente. Em um método sincronizado, o objeto é monitorado e mantido no lugar pelo thread. Se outro thread estiver executando o método sincronizado, o thread atual será interrompido até que o thread anterior libere o monitor.
Digamos que, em uma situação em que é necessário encontrar o número de solicitações feitas a uma URL específica, ter mais de uma solicitação em execução resultará em uma contagem errática. Digamos que o thread 1 veja a contagem como 12; ele será aumentado para 13 adicionando um. Concomitantemente, outra thread 2 também vê a contagem como 12 e, na mesma linha, é aumentada para 13 adicionando 1. Essa imprevisibilidade no valor da contagem ocorre porque ao invés do valor final antecipado de 14, o que seria obtido como o valor final O valor será 13. É aqui que a sincronização entra em ação à medida que a função aumenta (), portanto, o acesso simultâneo à contagem é impedido.
Você pode explicar o ciclo de vida do thread Java?
Em Java, o ciclo de vida de uma thread é definido como as transformações de estado de uma thread desde o nascimento até a morte. Quando uma instância de thread é gerada e a função start() da classe Thread é chamada, a thread entra no estado executável. Quando a classe Thread chama os métodos sleep() ou wait(), o thread se torna não executável.
Qual poderia ser a compensação entre o uso de um array não ordenado versus o uso de um array ordenado?
Uma grande vantagem de um array ordenado é que ele tem uma complexidade de tempo de busca de O(log n). A operação de inserção em um array ordenado tem uma complexidade temporal de O(n) porque os membros com maiores pontuações devem ser deslocados para fazer uma nova variante. Por outro lado, a operação de inserção de um array não ordenado requer um tempo constante de O(1).
É possível importar a mesma classe ou pacote duas vezes em java e o que acontece com ele durante o tempo de execução?
Sim. Independentemente da frequência com que a classe ou pacote é importado, a JVM irá carregá-lo internamente uma vez durante o tempo de execução.
O bloco “Finalmente” será executado se o código system.Exit(o) for escrito no final do bloco try?
Não, o bloco 'finally' não será executado neste cenário porque quando System.exit (0) é ativado, o controle sai do programa instantaneamente e, portanto, “finalmente” nunca executa. Se Sistema. exit(0) é invocado sem exceção; o programa não será executado.
O que você entende por interfaces de marcador em Java
Uma interface sem constantes ou métodos é conhecida como interface de marcador ou interface de marcação, pois fornece ao compilador e à JVM informações sobre o tipo de tempo de execução dos objetos. Interfaces remotas, Serializable e Cloneable são exemplos de interfaces de marcador e todas essas interfaces estão vazias.
Explicar o termo “Inicialização de chave dupla” em Java
Em Java, a inicialização de duas chaves é uma mistura de 2 processos separados. Duas chaves ({) estão envolvidas nesta situação. A inicialização de chave dupla ocorre quando duas chaves consecutivas são mostradas no código Java.
A construção de uma classe interna sem nome é a primeira chave, enquanto um bloco de inicialização é a segunda chave. A inicialização do Java Double Brace ocorre quando uma classe interna sem nome usa o bloco de inicialização.
Conclusão
Como um programador novato ou mesmo um programador experiente, essas perguntas da entrevista podem parecer um pouco complicadas. Mas se você se comprometer a praticar essas perguntas, com certeza vai arrasar na próxima oportunidade que tiver.