Mais recente coleção Java de 2020 de perguntas de entrevistas comuns + respostas detalhadas (6)
As perguntas da entrevista foram atualizadas para o sexto módulo. Recentemente, também estou perguntando sobre sua experiência em entrevistas com parceiros recentes em grandes fábricas e me esforço para que todos saibam as últimas notícias e coletar informações de entrevista mais abrangentes. Se você quiser ver as primeiras coleções, pode ir à minha página inicial para encontrá-las.
Algumas das respostas foram resumidas por mim mesmo e outras foram coletadas na Internet. Não entre em pânico depois de assistir a essas entrevistas! Se você tem mais experiência, você pode compartilhar nos comentários. Se você tiver algum erro, fique à vontade para apontá-lo. Por favor, me avise, obrigado ~
anormal
61. A diferença entre arremessos e arremessos?
Throws é usado para declarar todas as informações de exceção que um método pode lançar. Throws é declarar a exceção, mas não tratá-la, mas fazer upload da exceção, quem quer que a chame, eu tratarei dela. E lançar se refere a um tipo específico de exceção lançada.
62. Qual é a diferença entre final, finally e finalize?
-
Final pode modificar classes, variáveis e métodos. As classes modificadas indicam que a classe não pode ser herdada, os métodos modificados indicam que o método não pode ser reescrito e as variáveis modificadas indicam que a variável é uma constante e não pode ser reatribuída.
-
Finalmente é geralmente usado no bloco de código try-catch. Ao lidar com exceções, geralmente devemos executar o método de código no bloco de código finally, o que significa que o bloco de código será executado independentemente de haver uma exceção ou não, e geralmente é usado para armazenar alguns recursos fechados Código.
-
Finalize é um método, um método da classe Object, e a classe Object é a classe pai de todas as classes. Este método geralmente é chamado pelo coletor de lixo. Quando chamamos o método gc () do System, as chamadas do coletor de lixo finalizam (),reciclar lixo.
63. Qual parte de try-catch-finally pode ser omitida?
Resposta: a captura pode ser omitida
o motivo:
Uma declaração mais estrita é na verdade: try só é adequado para lidar com exceções de tempo de execução, try + catch é adequado para lidar com exceções de tempo de execução + exceções comuns. Em outras palavras, se você usar apenas try para manipular exceções comuns sem capturá-las, a compilação não será aprovada, porque o compilador estipula rigidamente que se você escolher capturar exceções comuns, deverá usar catch para exibir a declaração para processamento posterior. A exceção de tempo de execução não é especificada em tempo de compilação, portanto, catch pode ser omitido e você adiciona o compilador catch para sentir que é compreensível.
Em teoria, o compilador olha para qualquer código que não agrada aos olhos e sente que pode haver problemas em potencial, então, mesmo se você adicionar try a todo o código, o código é apenas uma camada de pele com base na operação normal durante o tempo de execução. Mas, uma vez que você adiciona try a um trecho de código, é equivalente a uma promessa explícita ao compilador de capturar exceções que esse trecho de código pode lançar em vez de jogá-lo para cima. Se for uma exceção normal, o compilador requer que ele seja capturado com catch para processamento posterior; se for anormal no tempo de execução, será capturado e, em seguida, descartado e processado com + finalmente, ou catch é adicionado para processamento posterior.
Quanto à adição, finalmente, é o processamento de "acabamento" que deve ser executado independentemente de a exceção ser detectada ou não.
64. Em try-catch-finally, se o catch for retornado, o finalmente será executado?
Resposta: Será executado e executado antes do retorno.
Exemplo de código 1:
/*
* java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
*/
public class FinallyDemo2 {
public static void main(String[] args) {
System.out.println(getInt());
}
public static int getInt() {
int a = 10;
try {
System.out.println(a / 0);
a = 20;
} catch (ArithmeticException e) {
a = 30;
return a;
/*
* return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
* 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
* 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
*/
} finally {
a = 40;
}
// return a;
}
}
Resultados da implementação: 30
Exemplo de código 2:
package com.java_02;
/*
* java面试题--如果catch里面有return语句,finally里面的代码还会执行吗?
*/
public class FinallyDemo2 {
public static void main(String[] args) {
System.out.println(getInt());
}
public static int getInt() {
int a = 10;
try {
System.out.println(a / 0);
a = 20;
} catch (ArithmeticException e) {
a = 30;
return a;
/*
* return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
* 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
* 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
*/
} finally {
a = 40;
return a; //如果这样,就又重新形成了一条返回路径,由于只能通过1个return返回,所以这里直接返回40
}
// return a;
}
}
Resultados da implementação: 40
Pontos de conhecimento comum são fáceis de ignorar, todos vocês os responderam?
65. Quais são os tipos de exceção comuns?
-
NullPointerException: essa exceção é lançada quando o aplicativo tenta acessar um objeto nulo.
-
SQLException: Fornece exceções sobre erros de acesso ao banco de dados ou outras informações de erro.
-
IndexOutOfBoundsException: indica que um índice de classificação (por exemplo, a classificação de uma matriz, string ou vetor) é jogado fora do intervalo.
-
NumberFormatException: esta exceção é lançada quando o aplicativo tenta converter uma string em um tipo numérico, mas a string não pode ser convertida em um formato apropriado.
-
FileNotFoundException: essa exceção é lançada quando uma tentativa de abrir o arquivo indicado pelo nome do caminho especificado falha.
-
IOException: esta exceção é lançada quando ocorre uma determinada exceção de E / S. Esta classe é uma classe geral de exceções geradas por operações de E / S com falha ou interrompidas.
-
ClassCastException: esta exceção é lançada ao tentar lançar um objeto para uma subclasse que não é uma instância.
-
ArrayStoreException: uma exceção lançada ao tentar armazenar um objeto do tipo errado em uma matriz de objeto.
-
IllegalArgumentException: A exceção lançada indica que um parâmetro ilegal ou incorreto foi passado para o método.
-
ArithmeticException: essa exceção é lançada quando ocorre uma condição de operação anormal. Por exemplo, quando um inteiro é "dividido por zero", uma instância dessa classe é lançada.
-
NegativeArraySizeException: se o aplicativo tentar criar uma matriz com um tamanho negativo, essa exceção será lançada.
-
NoSuchMethodException: essa exceção é lançada quando um método específico não pode ser encontrado.
-
SecurityException: uma exceção lançada pelo gerenciador de segurança, indicando que há uma violação de segurança.
-
UnsupportedOperationException: esta exceção é lançada quando a operação solicitada não é suportada.
-
RuntimeExceptionRuntimeException: É a superclasse de exceções que podem ser lançadas durante a operação normal da máquina virtual Java.
Finalmente
O conteúdo das perguntas da entrevista está aqui, espero que seja útil para todos.
Para terminar, quero dizer-lhe uma coisa: trabalho há tantos anos e entrevistei algumas pessoas para outras. Seja do ponto de vista do entrevistador ou do líder, além das habilidades e experiência em entrevistar, grande tecnologia e experiência em projetos também são seus trunfos e confiança. Compartilhamento de tecnologia de núcleo de fabricantes de primeira linha
Levei muito tempo para organizar alguns materiais de aprendizagem. O que postei acima é a ponta do iceberg dos materiais. Espero poder ajudar você! Clique para aprender juntos cifra: csdn
Compartilharei mais artigos secos puros no seguimento e espero poder realmente ajudá-lo. Seu apoio é minha maior motivação!