Base de conhecimento básico de Java:
1. Qual é a diferença entre JDK e JRE?
1) JDK: A abreviação de Java Development Kit, o kit de desenvolvimento java, fornece o ambiente de desenvolvimento e o ambiente operacional de java.
2) JRE: Abreviação de Java Runtime Environment, o Java Runtime Environment fornece o ambiente necessário para a execução do Java.
Especificamente, o JDK realmente inclui o JRE, o compilador javac que compila o código-fonte java e muitas ferramentas para depurar e analisar programas java. Simplificando: se você precisar executar programas java, basta instalar o JRE e, se precisar escrever programas java, precisará instalar o JDK.
2. A diferença entre i++ e ++i
1) i++: prefixa o método de auto-incremento e auto-subtração, primeiro executa a operação de auto-incremento ou auto-decremento e, em seguida, executa a operação de expressão;
2) ++i: sufixo auto-incremento e auto-subtração, a operação de expressão é executada primeiro e, em seguida, a operação de auto-incremento ou auto-decremento é executada.
3. A função da instrução break e continue
1) A instrução Break interromperá todo o corpo do loop, sairá do loop e executará as instruções subsequentes.
2) A instrução Continue encerrará este ciclo, retornará ao início do ciclo e iniciará um novo ciclo.
4. Implemente um processo simples de execução de uma tarefa em um thread separado
1) Mova o código da tarefa para o método run da classe que implementa a interface Runnable, porque Runnable
Se for uma interface funcional, podem ser usadas expressões lambda; Runnable r=()->{task code};
2)Thread t=novo Thread(r);
3)t.start();
5. Inicie um programa externo em um programa Java
String cmd = "O diretório onde o programa externo está localizado";
Process process=Runtime.getRuntime().exec(cmd); Use a classe Runtime para executar e iniciar um programa externo
6. A diferença entre thread interrompido e isInterrupted
1) O método interrompido é um método estático que detecta se o thread atual foi interrompido e chamar o método interrompido limpará o status interrompido do thread.
2) O método isInterrupted é um método de instância que pode ser usado para detectar se um thread foi interrompido.Chamar esse método não alterará o estado interrompido do thread.
7. 6 estados de threads
1) Novo recém-criado
2) Executável pode ser executado
3) Bloqueado está bloqueado
4) Esperando
5) Espera cronometrada Espera cronometrada
6) Rescindido
8. Para determinar o estado atual de um thread, você deve chamar
Para determinar o estado atual de um thread, chame t.getState();
9. Como imprimir todos os valores no array
Use o método toString da classe Arrays para imprimir todos os valores do array.
exemplo:
Int[ ] a=new Int[6];
System.out.println(Arrays.toString(a));
10. Qual é a diferença entre == e igual?
== Para tipos básicos, é uma comparação de valor, para tipos de referência, é uma comparação de referência; e equals é uma comparação de referência por padrão, mas muitas classes re-igualam métodos, como String, Integer, etc. em uma comparação de valores, portanto, em geral, equals compara se os valores são iguais.
11. Se o hashCode() de dois objetos for o mesmo, equals() também deve ser verdadeiro, certo?
Não, o hashCode() de dois objetos é o mesmo, equals() não é necessariamente verdadeiro; se equals() for o mesmo, então hashCode() deve ser o mesmo.
12. Qual é o papel de final em java?
1) A classe modificada final é chamada de classe final, que não pode ser herdada.
2) Os métodos modificados finais não podem ser substituídos.
3) Variáveis modificadas por final são chamadas de constantes, as constantes devem ser inicializadas, e o valor não pode ser modificado após a inicialização.
13. Qual é o valor de Math.round(-1.5) em java?
É igual a -1, porque ao assumir valores no eixo numérico, o valor do meio (0,5) é arredondado para a direita, então 0,5 positivo é arredondado para cima e 0,5 negativo é descartado diretamente.
14. String é um tipo de dado básico?
String não é um tipo básico, existem 8 tipos básicos: byte, boolean, char, short, int, float, long, double e String é um objeto.
15. Quais classes existem para manipular strings em java? Qual é a diferença entre eles?
1) As classes para manipulação de strings são: String, StringBuffer, StringBuilder.
2) A diferença entre String e StringBuffer e StringBuilder é que String declara um objeto imutável, cada operação irá gerar um novo objeto String e, em seguida, apontar o ponteiro para o novo objeto String, enquanto StringBuffer e StringBuilder podem ser criados com base no operação do objeto original, portanto, é melhor não usar String quando o conteúdo da string é frequentemente alterado. String pode ser usado para um pequeno número de operações de string, e StringBuffer e StringBuilder podem ser usados para um grande número de strings.
3) A maior diferença entre StringBuffer e StringBuilder é que o StringBuffer é thread-safe, enquanto o StringBuilder não é thread-safe, mas o desempenho do StringBuilder é superior ao do StringBuffer, por isso é recomendável usar o StringBuilder em um ambiente de thread único , e é recomendável usar StringBuffer em um ambiente multiencadeado.
16. String str="i" é o mesmo que String str=new String("i")?
Não é o mesmo, porque a maneira como a memória é alocada é diferente. String str="i", a máquina virtual java irá alocá-lo para o pool constante; enquanto String str=new String("i") será alocado para a memória heap.
17. Como inverter uma string?
Use o método reverse() de StringBuilder ou stringBuffer.
Código de amostra:
// StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("abcdefg");
System.out.println(stringBuffer.reverse()); // gfedcba
// StringBuilder reverse
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("abcdefg");
System.out.println(stringBuilder.reverse()); // gfedcba
18. Quais são os métodos comumente usados da classe String?
-
indexOf(): Retorna o índice do caractere especificado.
-
charAt(): Retorna o caractere no índice especificado.
-
replace(): Substituição de string.
-
trim(): Remove espaços em branco em ambas as extremidades da string.
-
split(): divide a string e retorna um array de strings divididas.
-
getBytes(): retorna o array de tipo de byte da string.
-
length(): Retorna o comprimento da string.
-
toLowerCase(): Converte a string para letras minúsculas.
-
toUpperCase(): Converte a string em caracteres maiúsculos.
-
substring(): intercepta uma string.
-
equals(): Comparação de strings.
19. As classes abstratas precisam ter métodos abstratos?
Não, as classes abstratas não precisam ter métodos abstratos;
Código de amostra:
abstract class Cat {
public static void sayHi() {
System.out.println("hi~");
}
}
20. Qual é a diferença entre classe ordinária e classe abstrata?
-
Classes comuns não podem conter métodos abstratos, classes abstratas podem conter métodos abstratos.
-
Classes abstratas não podem ser instanciadas diretamente, classes comuns podem ser instanciadas diretamente.
21. Uma classe abstrata pode ser modificada com final?
Não, definir uma classe abstrata é permitir que outras classes herdem. Se for definida como final, a classe não pode ser herdada, o que causará conflitos entre si. Portanto, final não pode modificar uma classe abstrata. Conforme mostrado na figura abaixo , o editor também exibirá uma mensagem de erro:
22. Qual é a diferença entre interface e classe abstrata?
1) Implementação: Subclasses de classes abstratas usam extends para herdar; interfaces devem usar implements para implementar interfaces.
2) Construtor: Classes abstratas podem ter construtores; interfaces não podem.
3) método principal: a classe abstrata pode ter o método principal e podemos executá-lo; a interface não pode ter o método principal.
4) Número de implementações: Uma classe pode implementar muitas interfaces, mas só pode herdar uma classe abstrata.
5) Modificadores de acesso: os métodos nas interfaces são modificados por padrão como público; os métodos nas classes abstratas podem ser quaisquer modificadores de acesso.
6) A classe abstrata enfatiza a afiliação relacional e a interface enfatiza a realização da função.
7) Subclasses que herdam classes abstratas podem implementar seletivamente os métodos abstratos da classe pai; enquanto classes que implementam interfaces precisam implementar todos os métodos da interface.
23. Quantos tipos de IO streams existem em java?
Dividido por função: fluxo de entrada (entrada), fluxo de saída (saída).
Dividido por tipo: fluxo de bytes e fluxo de caracteres.
24. Qual é a diferença entre BIO, NIO e AIO?
1) BIO: Block IO O IO de bloqueio síncrono é o IO tradicional que costumamos usar, caracterizado por um modo simples, fácil de usar e com baixa capacidade de processamento simultâneo.
2) NIO: Novo IO IO síncrono sem bloqueio é uma atualização do IO tradicional. O cliente e o servidor se comunicam através do Canal (canal) para realizar a multiplexação.
3) AIO: IO assíncrono é uma atualização do NIO, também chamado de NIO2, que realiza IO assíncrono sem bloqueio, e a operação de IO assíncrono é baseada em evento e mecanismo de retorno de chamada.
25. Quais são os métodos comuns de Arquivos?
1) Files.exists(): Verifique se o caminho do arquivo existe.
2) Files.createFile(): Crie um arquivo.
3) Files.createDirectory(): Crie uma pasta.
4) Files.delete(): Exclua um arquivo ou diretório.
5) Files.copy(): Copia arquivos.
6) Files.move(): Mova arquivos.
7) Files.size(): Veja o número de arquivos.
8) Files.read(): lê arquivos.
9) Files.write(): Grava arquivos.
26. Qual é o mecanismo de armazenamento de strings?
Strings são armazenadas no pool constante. Ao atribuir um valor a uma string, a JVM verificará se a string já existe no pool de constantes e, se existir, fará referência direta ao endereço, caso contrário, criará a string no pool de constantes e depois fará referência ao endereço.
27. Qual é a diferença entre passar por valor e passar por referência?
1) Passando por valor: Em uma chamada de método, o parâmetro atual passará seu valor para o parâmetro formal, e o parâmetro formal serve apenas para inicializar um temporário com o valor do parâmetro atual
A unidade de armazenamento (variável local no método), portanto, embora os parâmetros reais participantes tenham o mesmo valor, mas tenham diferentes
Local de armazenamento, portanto, as alterações nos parâmetros formais não afetam o valor do parâmetro real.
2) Passar por referência: Na chamada do método, o que é passado é
Objeto (também pode ser considerado como o endereço do objeto), neste momento o participante formal e o parâmetro real apontam para a mesma unidade de armazenamento (objeto), portanto, para
A modificação do parâmetro formal afetará o valor do parâmetro real.
28. Qual é a função de Instanceof ?
A função de Instanceof é determinar se o objeto apontado por uma variável de tipo de referência é uma instância de uma classe.
29. As semelhanças e diferenças entre super e this ?
diferença:
1) super() é principalmente uma chamada para o construtor da classe pai, this() é uma chamada para o construtor sobrecarregado
2) super() é usado principalmente no construtor da subclasse que herda a classe pai, e é usado em diferentes classes; this() é usado principalmente em diferentes construtores da mesma classe
mesmo ponto:
1) Ambos super() e this() devem ser chamados na primeira linha do construtor, senão está errado
30. Como funcionam os construtores?
A ordem na qual Java constrói instâncias é a seguinte:
1) Alocar o espaço do objeto e inicializar os membros no objeto como 0 ou vazio.Java não permite que os usuários manipulem um objeto com um valor indeterminado.
2) Execute a inicialização explícita de valores de propriedade
3) Execute o construtor
4) Associar variáveis com objetos na pilha
31. O construtor pode ser substituído?
O construtor Constructor não pode ser herdado, então Override não pode ser substituído, mas Overload pode ser sobrecarregado.
O construtor não pode ser herdado, portanto, o construtor não pode ser substituído. Cada classe deve ter seu próprio construtor
Número, responsável por construir a estrutura dessa parte de si. As subclasses não substituem os construtores da classe pai, mas, em vez disso, devem ser responsáveis por invocar a classe pai.
construtor de classe.
32. Se houver uma instrução return no try {} , o código no {} a seguir ao try será excluído?
Execução, quando é executada, antes ou depois do retorno ?
Ele será executado. Depois que o retorno em try{} for executado, se nenhum dado for retornado, o código em finalmente{} será executado primeiro e, em seguida, retornará.
33. Quais são as três características básicas de uma classe? As vantagens de cada recurso?
1) Classe tem encapsulamento, herança e polimorfismo.
2) Encapsulamento: O encapsulamento de uma classe fornece direitos de acesso público, padrão, protegido e privado para os membros da classe, o objetivo é ocultar o
As variáveis privadas e detalhes de implementação dos métodos na classe.
3) Herança: É permitido gerar uma nova classe herdando algumas ou todas as características da classe original.A classe original é chamada de classe pai.
A nova classe resultante é chamada de subclasse. As subclasses podem não apenas herdar diretamente a semelhança da classe pai, mas também criar sua personalidade única.
4) Polimorfismo: Significa que após as propriedades e métodos definidos na classe base serem herdados pelas subclasses, elas podem ter diferentes tipos de dados ou desempenhos
Existem duas formas de polimorfismo: sobrecarga e substituição.
34. Crie um arquivo com um caminho especificado e verifique se o caminho contém o arquivo especificado
File file = new File(pathName); file.createNewFile(); file.exists() retorna booleano para verificar se o caminho existe
Especifique o arquivo.
35. Como converter um array em uma coleção de listas
1) Classe de ferramenta Array Arrays fornece um método estático asList, que pode converter um array em uma coleção List.
2)List<String> list=Arrays.asList(array)。
3) A coleção List convertida da matriz não pode adicionar ou excluir elementos.
36. Como obter um array de uma coleção
1) Use o método toArray
2) String[ ] values=objeto da coleção.toArray(new String[x])
37. Como a igualdade de objetos é diferente da igualdade de referências que apontam para eles?
A igualdade de objetos geralmente se refere ao conteúdo contido no próprio objeto é igual, e a igualdade de referências a objetos se refere ao mesmo primeiro endereço apontando para o objeto, então os dois são essencialmente diferentes.