Perguntas e respostas da entrevista Java em 2022

Publicados: 2022-08-03

Você é 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

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

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

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.