JavaRush /Blogue Java /Random-PT /Pausa para café #58. 20 perguntas importantes da entrevis...

Pausa para café #58. 20 perguntas importantes da entrevista que um desenvolvedor Java deve saber. Benefícios de conhecer múltiplas linguagens de programação

Publicado no grupo Random-PT

20 perguntas importantes da entrevista que um desenvolvedor Java deve saber

Fonte: Dev.toPausa para café #58.  20 perguntas importantes da entrevista que um desenvolvedor Java deve saber.  Benefícios de conhecer múltiplas linguagens de programação – 1

1. Quais são os dois tipos de exceções em Java? Qual a diferença entre eles?

Responda: Existem dois tipos de exceções em Java: exceções verificadas e não verificadas.
  1. Exceções não verificadas não precisam ser declaradas em uma instrução de palavra-chave de método ou construtor se puderem ser lançadas quando o método ou construtor for executado e propagadas além do limite do método ou construtor.
  2. Por outro lado, as exceções verificadas devem ser declaradas no método do construtor ou na instrução de palavra-chave.

2. O que é JVM? Por que Java é chamado de “linguagem de programação independente de plataforma”?

Resposta: Java Virtual Machine (JVM) é uma máquina virtual de processo que pode executar bytecode Java. Cada arquivo fonte Java é compilado em um arquivo bytecode, que é executado pela JVM. A linguagem Java foi projetada para criar programas aplicativos que podem ser executados em qualquer plataforma, sem a necessidade de reescrever ou recompilar para cada plataforma individual. A Java Virtual Machine torna isso possível porque está ciente do comprimento específico da instrução e de outros recursos da plataforma de hardware subjacente.

3. Qual é a diferença entre um miniaplicativo e um aplicativo Java?

Responder:
  • Os miniaplicativos são executados em uma janela do navegador habilitado para Java.
  • Um aplicativo Java é um programa Java independente que pode ser executado fora do navegador.
Ambos requerem uma Java Virtual Machine (JVM). No entanto, uma aplicação Java requer um método principal com uma assinatura específica para começar a ser executada. Os miniaplicativos Java não precisam desse método para iniciar a execução. Além disso, os miniaplicativos Java normalmente usam uma política de segurança restritiva, enquanto os aplicativos Java normalmente usam uma política de segurança mais relaxada.

4. Qual é a diferença entre JDK e JRE?

Responder:
  • O Java Runtime Environment (JRE) é basicamente uma Java Virtual Machine (JVM) que executa seus programas Java. Também inclui plug-ins de navegador para executar o miniaplicativo.
  • O Java Development Kit (JDK) é um kit de desenvolvimento de software completo para a linguagem Java, incluindo JRE, compiladores e ferramentas (como JavaDoc e Java Debugger) para permitir ao usuário desenvolver, compilar e executar aplicativos Java.

5. O que é um servlet?

Resposta: Um servlet é uma classe da linguagem de programação Java usada para processar solicitações de clientes e criar conteúdo dinâmico da web. Os servlets são usados ​​principalmente para processar ou armazenar dados enviados por um formulário HTML, fornecer conteúdo dinâmico e gerenciar informações de estado que não estão presentes no HTTP sem estado.

6. O que é uma página JSP?

Responda: Java Server Page (JSP) é um documento de texto que contém dois tipos de texto:
  • dados estáticos,
  • Elementos JSP.
Os dados estáticos podem ser expressos em qualquer formato de texto, como HTML ou XML. JSP é uma tecnologia que mistura conteúdo estático com conteúdo gerado dinamicamente.

7. O que são diretivas? Que tipos de diretivas estão disponíveis em JSP?

Resposta: Diretivas são instruções processadas pelo mecanismo JSP quando a página é compilada em um servlet. As diretivas são usadas para definir instruções em nível de página, inserir dados de arquivos externos e especificar bibliotecas de tags personalizadas. As diretivas são definidas entre <%@ e %>. Os diferentes tipos de diretivas são mostrados abaixo:
  • Diretiva Incluir: Usada para incluir um arquivo e combinar o conteúdo do arquivo com a página atual.
  • Diretiva de página: é usada para definir certos atributos em uma página JSP, como página de erro e buffer.
  • Taglib: usado para declarar um taglib personalizado usado na página.

8. O que os métodos System.gc() e Runtime.gc() fazem?

Resposta: Esses métodos podem ser usados ​​como uma dica para a JVM acionar a coleta de lixo. Normalmente, a Java Virtual Machine (JVM) executa a coleta de lixo periodicamente ou quando a memória livre atinge níveis baixos.

9. Quais são as diferenças entre HashMap e Hashtable?

Responda: Existem várias diferenças entre HashMap e Hashtable em Java:
  1. Hashtable é sincronizado, enquanto HashMap não. Isso torna o HashMap melhor para aplicativos não encadeados, uma vez que objetos não sincronizados geralmente têm melhor desempenho do que objetos sincronizados.
  2. Hashtable não permite chaves ou valores nulos. HashMap permite que você use uma chave nula e qualquer número de valores nulos.
  3. Uma das subclasses de HashMap é LinkedHashMap, portanto, se você deseja uma ordem de iteração previsível (ordem de inserção padrão), você pode facilmente trocar HashMap por LinkedHashMap. Isso não seria tão fácil se você estivesse usando Hashtable.

10. O que é JDBC?

Resposta: JDBC é uma camada de abstração que permite aos usuários escolher entre bancos de dados. Com JDBC, os desenvolvedores podem escrever aplicativos de banco de dados em Java sem se preocupar com os detalhes por trás de um banco de dados específico.

11. O que significa a palavra-chave “estática”? Você pode substituir um método privado ou estático em Java?

Resposta: A palavra-chave estática significa que um membro variável ou método pode ser acessado sem a necessidade de uma instância da classe à qual pertence . O usuário não pode substituir métodos estáticos em Java porque a substituição de métodos é baseada na ligação dinâmica em tempo de execução e os métodos estáticos são permanentemente vinculados em tempo de compilação. Um método estático não está associado a nenhuma instância da classe, portanto este conceito não é aplicável.

12. Qual é o significado de um bloco final ao lidar com exceções?

Resposta: Um bloco final sempre será executado, independentemente de uma exceção ser lançada. Mesmo que não haja nenhuma instrução catch e ocorra uma exceção. Uma última coisa a mencionar é que o bloco final é usado para liberar recursos como buffers de E/S, conexões de banco de dados, etc.

13. Qual é a diferença entre exceção e erro em Java?

Resposta: O erro é uma condição crítica que não pode ser tratada pelo código do programa. Uma exceção é uma situação excepcional que pode ser tratada pelo código do programa.

14. Quando um objeto se torna elegível para coleta de lixo em Java?

Resposta: Um objeto Java está sujeito à coleta de lixo quando fica indisponível para o programa que o está utilizando no momento.

15. O que é um iterador?

Resposta: A interface Iterator fornece vários métodos que podem iterar por qualquer coleção . Cada coleção Java contém um método Iterator que retorna uma instância do Iterator . Os iteradores podem remover elementos da coleção subjacente durante a iteração.

16. O que é passagem por referência e passagem por valor?

Responder:
  • Quando um objeto é passado por value , significa que uma cópia do objeto é passada. Dessa forma, mesmo que sejam feitas alterações neste objeto, isso não afetará o valor original.
  • Quando um objeto é passado por referência , significa que o objeto não é realmente passado, mas sim uma referência ao objeto. Desta forma, quaisquer alterações feitas pelo método externo também serão refletidas em todos os locais.

17. O que é um miniaplicativo Java?

Resposta: Um applet Java é um programa que pode ser incluído em uma página HTML e executado em um navegador cliente habilitado para Java. Applets são usados ​​para criar aplicações web dinâmicas e interativas.

18. Como funciona o HashMap em Java?

Responda: HashMap em Java armazena pares de valores-chave. HashMap requer uma função hash, usa métodos hashCode e equals para definir e recuperar elementos de e para a coleção. Quando o método put é chamado , o HashMap calcula o valor hash da chave e armazena o par no índice apropriado dentro da coleção. Se a chave existir, seu valor será atualizado com o novo valor. Algumas características importantes do HashMap são sua capacidade, fator de carga e variação de tamanho limite.

19. Quais são as principais interfaces do Java Collections Framework?

Resposta: O Java Collections Framework é um conjunto projetado de interfaces e classes que suportam operações em coleções de objetos. As principais interfaces encontradas no Java Collections Framework são:
  • Uma Coleção representa um grupo de objetos, conhecidos como seus elementos.
  • Um conjunto é uma coleção que não pode conter elementos duplicados.
  • Uma lista é uma coleção ordenada que pode conter elementos repetidos.
  • Um Mapa é um objeto que mapeia chaves para valores e não pode conter chaves duplicadas.

20. Quais tipos de dados o Java suporta? O que é Autoboxing e Unboxing?

Resposta: A linguagem de programação Java suporta os seguintes oito tipos de dados primitivos:
  • byte
  • curto
  • interno
  • longo
  • flutuador
  • dobro
  • boleano
  • Caracteres
Autoboxing é uma conversão automática realizada pelo compilador Java entre tipos primitivos e suas classes wrapper de objeto correspondentes. Se a transformação for na direção oposta, esta operação é chamada de Unboxing . Obrigado pela leitura e boa sorte em sua entrevista técnica!

Benefícios de conhecer múltiplas linguagens de programação

Fonte: Dev.to Pessoalmente, estou convencido de que todo desenvolvedor deveria conhecer mais de uma linguagem de programação. Ou seja, se estamos falando de linguagens de programação, o desenvolvedor deve ser poliglota.Pausa para café #58.  20 perguntas importantes da entrevista que um desenvolvedor Java deve saber.  Benefícios de conhecer múltiplas linguagens de programação – 2

Idiomas primários e secundários

Para facilitar as coisas, deixe-me esclarecer alguns dos termos usados ​​neste artigo. Acredito que todo desenvolvedor deve ter uma linguagem de sua preferência. Eu chamo essa linguagem de principal. Chamarei qualquer idioma que não seja o principal de auxiliar. É claro que um desenvolvedor pode mudar seu idioma principal (mais de uma vez) ao longo de sua carreira. Isto é bom. Existem muitas razões pelas quais isso é explicado.

Especialista

Nas discussões sobre desenvolvedores poliglotas, muitas vezes se argumenta que o conhecimento do desenvolvedor sobre um segundo idioma tem o custo de ser menos proficiente em seu idioma principal. Os defensores dessa ideia presumem que aprender cada novo idioma leva tempo e que esse tempo não pode mais ser gasto na aquisição de conhecimento de seu idioma principal. Essa linha de pensamento me parece errada. Vejo outra analogia: esportes. Sabe-se que praticar um esporte melhora o desempenho em outro. Claro, você pode ganhar medalhas de ouro em ambos os eventos, e é improvável que os dardos o tornem um nadador melhor. Por outro lado, se você é alpinista, a ioga o ajudará a desenvolver flexibilidade e equilíbrio. Assim, praticar ioga fará de você um escalador melhor do que seria sem ela. Acho que aprender cada idioma adicional muitas vezes melhorará suas habilidades nos outros idiomas que você também conhece.

Maior gama de ferramentas

Além disso, conhecer múltiplas linguagens de programação melhora muito seu arsenal como desenvolvedor. Amplia seus horizontes e permite que você veja certas coisas de diferentes perspectivas. Vejamos um exemplo da vida cotidiana. Se você já usou uma chave de fenda, está familiarizado com os parafusos Phillips. À primeira vista, todos os parafusos Phillips são iguais e parece que todos podem ser apertados com uma chave de fenda. Sim, acontece que é difícil apertar ou desparafusar algum parafuso, mas em geral uma chave de fenda é suficiente para você. Pausa para café #58.  20 perguntas importantes da entrevista que um desenvolvedor Java deve saber.  Benefícios de conhecer múltiplas linguagens de programação – 3Mas um dia você entra em uma loja de ferramentas, olha todas aquelas lindas chaves de fenda e descobre que existem diferentes tipos de chaves de fenda Phillips. Você vê que a chave de fenda que já possui é uma Phillips (PH) e decide comprar sua irmã gêmea, a Pozidriv (PZ). E então, de repente, acontece que para alguns parafusos um é mais adequado e para outros - outro. Eles parecem iguais, mas não são intercambiáveis . (Se você está se perguntando o que significam as letras PH e PZ em suas chaves de fenda - agora você sabe). Com mais conhecimento e uma ferramenta extra, você poderá fazer um trabalho melhor na próxima vez que precisar apertar um parafuso Phillips. O mesmo vale para linguagens de programação.

Você não precisa pagar por conhecimento adicional

Portanto, pessoalmente não vejo valor em aprender uma linguagem de programação adicional. Você será igualmente excelente em ambos os idiomas? Provavelmente não, mas é improvável que esse seja o seu objetivo. Você aprende algo novo sobre seu idioma principal? Estou absolutamente certo disso. Conhecer um novo idioma revelará as diferenças entre eles. E isso, por sua vez, vai despertar a sua curiosidade. Você se perguntará por que as coisas são feitas de maneira diferente em um novo idioma e o que elas fazem. Para concluir, darei um exemplo de vida. Usei uma ferramenta de linha de comando escrita em Python. Cada vez que instalei esta ferramenta em uma máquina nova, ocorreram problemas, e a cada atualização o número de problemas aumentava. Se você tiver Go em sua caixa de ferramentas, notará imediatamente sua vantagem neste cenário. Go permite compilar seus artefatos em um binário independente. Você pode ter certeza de que, uma vez compilado, o binário funcionará em todas as máquinas para as quais você o compilou. Então, portei a CLI do Python para Go. Com esta nova versão, não precisei mais me preocupar em alterar o tempo de execução ou dependências de terceiros. Este é um ótimo exemplo de escolha da ferramenta mais adequada para a tarefa. E para poder escolher, você precisa se tornar um desenvolvedor poliglota.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION