Eu estava passando por perguntas que todo desenvolvedor .Net bom deveria responder e fiquei impressionado com o conteúdo e a abordagem dessa pergunta; portanto, no mesmo espírito, estou fazendo essa pergunta para Java / Java EE Developer.
Que perguntas você acha que um bom programador Java / Java EE pode responder?
Estou marcando essa pergunta como wiki da comunidade, pois não é específica do usuário e tem como objetivo servir a comunidade de programação em geral.
Ansioso por algumas respostas surpreendentes.
EDIT : Responda também às perguntas, conforme sugerido nos comentários, para que as pessoas possam aprender algo novo sobre o idioma também.
java
jakarta-ee
Rachel
fonte
fonte
Respostas:
Qual é a relação entre hashCode () e igual a ()? Qual é o significado desses métodos? Quais são os requisitos para implementá-los?
fonte
Qual é a diferença entre Set, Map e List?
Ainda estou surpreso com quantas pessoas não conhecem essa em uma entrevista por telefone.
fonte
A maioria das pessoas responde "não", porque sabe que o java não tem herança múltipla. Mas uma interface ainda pode estender várias interfaces (mas uma classe não pode estender várias classes). Isso não leva ao problema do diamante.
Se a resposta for "não", o entrevistador deve perguntar "por que teria que ser proibido?". Então você começa a pensar sobre isso e deve perceber que não há problemas com isso.
Então você aprendeu algo (por si mesmo) na entrevista e mostrou ao entrevistador que é capaz de raciocinar sobre classes, objetos, herança, polimorfismo etc. É realmente muito melhor do que um candidato que sabe a resposta de cor, mas não sabe. entender porque
fonte
Uso de final palavra-chave em chamadas de método. Por exemplo, por que o método test no código abaixo não fornece nenhum erro de compilação, apesar de usar o qualificador final para o parâmetro do método
fonte
final
palavra - chave aplicada aoName
objeto, não aoname
campo da classeName
n
é declarado como final, o que significa que não pode ser reatribuído notest
corpo do método. Ele não causa um erro porque o métodotest
não tenta transferir o parâmetro, ele apenas define uma propriedade no parâmetro ...n = new Name("test");
causaria um erro de compilação ...Um deles é a comparação da string. Diferença entre
fonte
Truque de pergunta: Quais tipos de parâmetros são passados por referência em Java?
É incrível quantas pessoas ainda papagaiam o mantra "primitivas são passadas por valor, objetos são passados por referência".
fonte
Você disse "Bom", "Desenvolvedor". Aqui estão os meus 2 centavos também .. :)
Para J2EE:
Eu posso pensar em muitos, muitos, muitos mais, mas isso serve por enquanto :)
fonte
Qual é a diferença entre String, StringBuffer e StringBuilder?
fonte
"O que é um descritor de implantação?"
Se o candidato estremecer involuntariamente, ele tem experiência em trabalhar com EJBs anteriores à 3.0.
fonte
Muitas perguntas e entrevistas estão disponíveis em http://www.techinterviews.com/interview-questions/java e eu realmente não vejo valor em copiar / colar uma seleção delas.
Não, cabe a você criar sua própria compilação de coisas que considera importantes. Pessoalmente, procedo sempre em duas etapas: primeiro, algumas perguntas para ter uma idéia básica da experiência e das habilidades, depois uma situação de solução de problemas. Na verdade, não estou convencido de que poder responder a perguntas conhecidas faça de você uma boa ou uma má desconhecida solucionador de problemas . Portanto, prefiro pedir às pessoas que resolvam um determinado problema, dar-lhes alguns requisitos e pedir que escrevam código (mas não no papel). Dou a eles algum tempo para voltar para mim e verificar como eles fizeram isso, seu estilo de codificação, como eles usaram as APIs sugeridas etc.
Dito isso, minha pergunta favorita é "do que você não gosta em Java?" (no espírito deste ). É realmente uma excelente pergunta, fornece um feedback imediato sobre o quanto um candidato usou Java e explorou sua API e se ele é religioso ou não (como o OP escreveu).
Atualização: Conforme sugerido pelo CPerkins, uma redação melhor para a pergunta sugerida acima pode ser "O que você mais gostaria de ver alterado em Java?". E, de fato, prefiro assim.
fonte
O que é 'System', 'out', 'println' em System.out.println? O que acontece quando você chama 'put' no HashMap?
fonte
fonte
new
ou^
ou>>
,<<
e>>>
). Se eu pudesse mudar outra coisa, isso seria adicionar semântica verdadeira chamada por referência. Uma terceira coisa seria adicionarunsigned
tipos integrais.fonte
Se você está contratando graduados com "experiência" em Java, uma pergunta simples como Escrever algum código que fará com que uma NullPointerException seja lançada pode distinguir quais candidatos usaram Java recentemente e não pararam quando terminaram sua unidade / curso.
fonte
O que será impresso?
Resposta : CoolReturn + 1
Um pouco mais difícil:
Resposta : CoolReturn
fonte
Qual é a diferença entre uma classe abstrata e uma interface? Quando você usaria cada um deles?
Muitos desenvolvedores de Java não sabem disso, perguntei à maioria das pessoas no meu curso de ciência da computação na universidade e a grande maioria não conseguiu responder.
fonte
Perguntas simples como,
Embora sejam muito básicos, muitos desenvolvedores não sabem as respostas. Sugiro que essas perguntas sejam feitas antes das consultas relacionadas ao código.
fonte
As 5 principais perguntas J2EE / JEE
A lista de perguntas sobre o middleware J2EE / JEE que enfrentei é excepcionalmente longa, mas aqui estão as 5 principais perguntas que me foram feitas e levaram a boas discussões:
Essa pergunta geralmente leva a várias discussões interessantes sobre mensagens suspeitas, filas de erros etc.,
Essa pergunta geralmente me permite discutir em termos de quando usar assinantes duráveis, quando usar filas etc.,
Isso leva a discussões maravilhosas sobre carregamento lento, reidratação, etc., até levou a comparar e contrastar o JPA com os beans de entidade. Eu achei útil estar preparado e ter clareza de conceitos.
Qualquer solução de um servidor Web simples, com base em soluções SOAP / REST sofisticadas, e qualquer solução intermediária, deve ser boa o suficiente. Além disso, com base no entrevistador, algumas vezes leva a discussões muito interessantes sobre tópicos como algumas idéias de design - WSDL primeiro, estilo doc, intermediários SOAP etc. -RPC, ou SOAP1.2 sobre SOAP1.1, respostas para as quais geralmente se baseiam em quanto me lembro.
Essa questão é colocada de várias maneiras, começando do padrão Service Locator para as
javax.naming.Context
perguntas.Outra pergunta complicada que considero preocupante, mas que já vi muitas vezes, é: como as bibliotecas dependentes são empacotadas em um arquivo morto?
ou Visibilidade de várias classes em um arquivo compactado.
Se a discussão não levar à hierarquia do carregador de classes de diferentes servidores de aplicativos, arquivos de recursos, etc., é melhor renunciar e seguir em frente.
As cinco principais perguntas sobre Java:
Essa é a mãe de todas as perguntas. Quando você conseguir efetivamente desembarcar o entrevistador nessa área, e se estiver preparado, o restante da entrevista geralmente fica aqui. Certifique-se de saber
Set
,List
,Map
, e a importância deObject.equals()
eObject.hashCode()
em todas as implementações dessas interfaces.Estas são boas se o entrevistador tiver uma mente aberta. Se o entrevistador já tiver uma solução específica em mente e a sua não corresponder à dele, você estará praticamente condenado. É melhor concordar com a resposta "Entendo que outras soluções são possíveis".
Esta é uma pergunta certa com muitos entrevistadores. Por mais que eu odeie isso, é melhor estar preparado. Pelo menos, lembrando-me de algumas com as quais trabalhei e liderando a discussão em alguma outra direção, esquiva e resolve de maneira ampla e eficaz o problema.
, fui solicitado a apontar um padrão GoF na API Java. Melhor estar preparado para este.
fonte
Diferença entre servidor da web e um contêiner da web
fonte
O que você mais gosta / menos em Java e por quê?
fonte
por que você substituiria o método toString ()?
fonte
Uma pergunta sobre Java mais pura:
Qual é a diferença entre sleep e wait? Poucas pessoas realmente entendem como a espera está funcionando.
Como você precisa lidar com InterruptedExceptions?
fonte
Esta é a pergunta que enfrentei na minha entrevista.
Por que o método main em Java é chamado de public static void main (String [] args)?
Responda:
1. main () deve ser declarado público porque é invocado pela JVM sempre que a execução do programa é iniciada. A JVM não pertence ao nosso pacote de programas.
Para acessar o main fora do pacote, temos que declará-lo como público.Se o declararmos como algo diferente de público, ele mostra um erro de tempo de execução, mas não erro de tempo de compilação
2. main () deve ser declarado como estático, porque se um método for declarado como estático, podemos chamar esse método fora da classe usando ClassName.methodName ();
A JVM primeiro carregará a classe Test e verificará os argumentos da linha de comando e chama o método principal como Test.main ();
3. main () deve ser declarado como nulo main () porque a JVM não espera nenhum valor de main (), portanto, deve ser declarado como nulo.
Se outro tipo de retorno for fornecido, será um RunTimeError, ou seja, NoSuchMethodFoundError.
4. main () deve ter argumentos String como matrizes porque a JVM chama o método principal passando o argumento da linha de comando. Como eles são armazenados no objeto da matriz de strings, ele é passado como argumento para main ().
fonte
public static void main(String... args)
se estiver tão inclinado :-) Ele tem a mesma assinatura que[]
Qual é a diferença entre J2SE e J2EE (ou JSE e JEE)?
Um desenvolvedor deve ser capaz de apontar que a edição corporativa é basicamente uma definição de interface (ou seja, uma especificação) que pode ser implementada pelos fornecedores. Considerando que a edição padrão é uma implementação em si mesma
fonte
Como
volatile
afeta a otimização de código pelo compilador?fonte
Que tal o que é um bean de sessão e descrever algumas diferenças entre os beans de sessão sem estado e com estado.
fonte
Escreva um programa para aceitar dois números inteiros e produza o maior de dois números em um arquivo no local de sua escolha. Agora descreva o que cada declaração faz.
É possível fazer uma pesquisa detalhada desde o significado da declaração de importação até o término anormal
fonte
Núcleo: 1. O que são exceções marcadas e desmarcadas? 2. Ao adicionar nova exceção no código, que tipo (marcado / não verificado) deve ser usado quando?
Servlet: 1. Qual é a diferença entre response.sendRedirect () e request.forward ()?
fonte
Como
threads
funciona? O que ésynchronized
? Se houver doissynchronized
métodos em uma classe, eles podem ser executados simultaneamente por dois threads. Você ficará surpreso ao ouvir muitas pessoas responderem que sim . Em seguida, todas as questões relacionadas ao segmento, por exemplo , deadlock , fome etc.fonte
thread
estiver executando o método, ninguémthread
poderá obter o bloqueio.Uma coisa que muitos programadores Java não sabem é que Strings são imutáveis, portanto, use StringBuilder ou StringBuffer!
fonte
s += "a" + "b" + "c"
em umStringbuilder.append(...)
cenário. Mas isso não otimizará umfor
loop. O código nesta resposta acabará criando um total de 201 Strings, 100 StringBuilders e (dependendo da implementação) 300char[]
s diferentes dentro desses StringBuilders e um número estimado de 425k +. Alterá-lo para usar um StringBuilder completo reduzirá isso para 1 String, 1 StringBuilder e 13-15char[]
s internos usando apenas ~ 8k caracteres, como deveria.