Pilha de tecnologia Java - Fundamentos da entrevista (Java Basics)

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.

Acho que você gosta

Origin blog.csdn.net/qq_43780761/article/details/127115817
Recomendado
Clasificación