CodeGym /Blogue Java /Random-PT /Perguntas complicadas sobre Java frequentemente feitas em...
John Squirrels
Nível 41
San Francisco

Perguntas complicadas sobre Java frequentemente feitas em entrevistas

Publicado no grupo Random-PT
Se você já se preparou para uma entrevista para um cargo de programador Java ou passou em algum exame de certificação (não necessariamente sobre programação), provavelmente já percebeu que as perguntas feitas ali são muito específicas. Muitos deles forçam você a pensar sobre o design da linguagem. Alguns são projetados para sondar as profundezas do seu conhecimento. Há questões que mais parecem quebra-cabeças do que qualquer outra coisa, enquanto outras dizem respeito a nuances da linguagem que são muito difíceis de perceber sem prática. Neste artigo, o desenvolvedor Sarans Sing apresenta algumas dessas questões sobre Java. Com respostas, claro. Perguntas complicadas sobre Java frequentemente feitas em entrevistas - 11. O que acontece se eu colocar uma instrução return ou System.exit() em um bloco try/catch? Esta é uma questão Java muito popular e sutil. O truque é que muitos programadores acreditam que o finallybloco sempre é executado. Ao colocar uma returnafirmação em um try/catchbloco ou chamar System.exit()de dentro de um try/catchbloco, a pergunta põe em dúvida essa crença. A resposta para essa pergunta complicada é: o finallybloco será executado quando uma returninstrução for colocada em um try/catchbloco, mas não será executada quando System.exit()for chamada de dentro de um try/catchbloco. 2. Java suporta herança múltipla? Esta é uma pergunta muito complicada. Os entrevistadores costumam perguntar: "Se C ++ oferece suporte à herança múltipla direta, por que o Java não pode?" a respostaé um pouco mais complicado do que parece, já que Java suporta herança de vários tipos. Afinal, uma interface Java pode estender outras interfaces. Dito isso, Java não suporta herança múltipla de implementações. 3. Se um método em uma classe pai lança NullPointerExceptions, ele pode ser substituído por um método que lança RuntimeExceptions? Esta é outra questão complicada relacionada à sobrecarga e substituição. Resposta: Um método substituído pode lançar com segurança NullPointerExceptiona classe pai de RuntimeException, mas você não pode fazer o mesmo com um tipo de exceção verificada como Exception. 4. Como você garante que Nos threads possam acessar Nrecursos sem um impasse? Se escrever código multithread não é o seu forte, você pode realmente tropeçar nessa questão. Pode ser difícil até mesmo para um programador experiente que não encontrou impasses e condições de corrida. Todo o truque aqui está na ordem: você pode evitar impasses liberando recursos na ordem inversa em que foram adquiridos. 5. Qual é a diferença entre as classes StringBuffere StringBuilderem Java? Esta é uma questão clássica da linguagem Java que alguns desenvolvedores acham complicada e outros – muito simples. A StringBuilderclasse apareceu no JDK 1.5. A única diferença entre essas classes é que StringBufferos métodos de , como length(), capacity()e append(), são sincronizados, enquanto os métodos correspondentes emStringBuildernão são. Essa diferença fundamental significa que a concatenação de strings é mais rápida com StringBuilderdo que com StringBuffer. Na verdade, o uso StringBuffernão é recomendado, pois a concatenação de strings é realizada no mesmo thread 99% das vezes. 6. Qual é o resultado da avaliação da expressão 1.0/0.0? Isso produzirá uma exceção ou um erro de compilação? Esta é outra questão complicada sobre a classe. Os desenvolvedores Java estão cientes da existência de um tipo de dados duplo primitivo e de uma classe , mas ao executar operações de ponto flutuante, eles não prestam atenção suficiente a , , e às regras que regem os cálculos aritméticos associados. A resposta a esta pergunta é simples: umaPerguntas complicadas sobre Java frequentemente feitas em entrevistas - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionnão será lançado; a expressão é avaliada como Double.POSITIVE_INFINITY. 7. O que acontece se você tentar inserir uma chave em um HashMapque já contém essa chave? Essa pergunta complicada faz parte de outra pergunta frequente: como funciona HashMapem Java? HashMapé uma fonte popular de perguntas confusas e complicadas sobre Java. Aqui está a resposta: se você tentar inserir novamente uma chave em um HashMap, a chave antiga será substituída, pois a HashMapclasse não permite chaves duplicadas. E a mesma chave obterá o mesmo código hash, o que significa que terminará no mesmo lugar no balde de hash. Com base nos materiais do Quora
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION