O editor compilou as perguntas de teste escrito na entrevista muito popular de 2017 para amigos que entrevistam programadores Java. Se você é um leitor que está se preparando para entrevistar programadores Java, aprenda -o rapidamente.
1. A seguinte declaração está correta ()
R. Duas classes públicas modificadas podem existir ao mesmo tempo em um arquivo.
B. O construtor pode ser substituído
C. As subclasses não podem acessar propriedades que não são modificadas pela classe pai por público e protegidas.
D.final classes modificadas podem ser herdadas
Resposta: c
Só pode haver uma classe pública em um arquivo de origem Java. Quando houver uma classe pública, o nome do arquivo de origem deve ser consistente com ele, caso contrário, não pode ser compilado. Se não houver classe pública no arquivo de origem, não há requisito de consistência entre o nome do arquivo e a classe. Quanto ao main (), ele não precisa ser colocado na classe pública para executar o programa.
A reescrita é modificar os métodos da classe pai depois que a classe infantil é herdada da classe pai. O nome do método, o parâmetro e o valor de retorno devem ser os mesmos. Os métodos marcados finais não podem ser reescritas. Se você não pode herdar um método, não poderá substituir esse método.
Extensão: a diferença entre reescrever substituir e sobrecarregar sobrecarga
Sobrecarga do método Java
É que vários métodos podem ser criados em uma classe, que têm o mesmo nome, mas têm parâmetros diferentes e definições diferentes. Ao chamar métodos, o método específico é determinado pelo número de diferentes parâmetros e tipos de parâmetros passados para eles. Os tipos de valor de retorno podem ser iguais ou diferentes, o que também é um polimorfismo orientado a objetos.
Reescrita do método java
O polimorfismo entre a classe pai e a classe infantil redefine as funções da classe pai. Se um método definido em uma subclasse tiver o mesmo nome e parâmetros que sua classe pai, dizemos que o método está substituindo. Em Java, as subclasses podem herdar métodos da classe pai sem reescrever o mesmo método. Mas, às vezes, a subclasse não deseja herdar os métodos da classe pai intacta, mas quer fazer certas modificações, o que requer a reescrita do método. A substituição de métodos também é chamada de substituição do método.
Se um método em uma subclasse tiver o mesmo nome de método, tipo de retorno e tabela de parâmetros como um método na classe pai, o novo método substituirá o método original. Se você precisar do método original na classe pai, pode usar a palavra -chave Super, que se refere à classe pai da classe atual.
As permissões de modificação de acesso das funções da subclasse não podem ser menores que as da classe pai;
Os métodos de reescrita só podem existir nos relacionamentos de herança, e os métodos de reescrita podem apenas reescrever métodos que não são privados na classe pai.
2. O número de tempos de execução do para (int x = 0, y = 0; (y! = 0) && (x <4); x ++) loop is ()
A. tempos ilimitados
B. Execute 4 vezes
C. executar 3 vezes
D. Não execute uma vez
Resposta: d
O valor inicial de y é 0. Em todo o loop, o valor de y permanece inalterado; portanto, a declaração de julgamento (y! = 0) não é verdadeira, portanto não é executada uma vez.
3. Em relação à pilha Java, a seguinte declaração está errada ()
A. Todas as instâncias e matrizes de classes são alocadas na memória na pilha.
B. A memória da pilha ocupada pelo objeto é coletada pelo sistema de gerenciamento automático de memória.
C. A memória da heap consiste em objetos sobreviventes e mortos e fragmentos livres.
D. Matrizes são alocadas na pilha
Resposta: d
Primeiro de tudo, a matriz é alocada na pilha, portanto a declaração de D está incorreta.
A estrutura da pilha Java: a pilha da JVM é a área de dados de tempo de execução, e todas as instâncias e matrizes de classes são alocadas na memória na pilha. É criado quando a JVM é iniciada. A memória da pilha ocupada pelo objeto é coletada pelo sistema de gerenciamento automático de memória, ou seja, o coletor de lixo. A memória da pilha é composta por objetos que sobrevivem e morrem. Os objetos sobreviventes são acessíveis ao aplicativo e não serão coletados de lixo. O objeto morto é um objeto que não é acessível ao aplicativo e não foi reciclado pelo coletor de lixo. Eles ocuparão o espaço de memória de heap até que o coletor de lixo recupere esses objetos.
4. Ao usar o super e as palavras -chave, a descrição correta abaixo é ()
A. Use super () no construtor de subclasse para exibir o construtor que chama a classe pai;
Super () deve ser escrito na primeira linha do construtor de subclasse, caso contrário, a compilação não será passada.
B.super () e este () não precisam ser colocados na primeira linha no método do construtor
C. Este () e super () podem aparecer em um construtor ao mesmo tempo
D.Este () e super () podem ser usados em ambientes estáticos, incluindo métodos estáticos e blocos de declaração estáticos
Resposta: a
A palavra -chave Java, que só pode ser usada no corpo do método. Quando um objeto é criado, a Java Virtual Machine (JVM) atribui um ponteiro ao objeto que se refere a si mesmo, e o nome desse ponteiro é esse. Portanto, isso só pode ser usado em métodos não estáticos na classe, e isso não deve aparecer em métodos estáticos e blocos de código estático.
A chave para super é semelhante a isso, que é que a variável de membro bloqueada ou o método do membro se torna visível ou é usado para se referir à variável de membro bloqueada e ao método do membro do membro.
No entanto, o Super é usado em subclasses, com o objetivo de acessar os membros bloqueados na classe de pai direta. Observe que é a classe pai direta (que é a superclasse mais recente acima da classe)
5. Qual das seguintes afirmações está correta ()
R. Depois que o programa Java for compilado, o código da máquina será gerado
B. O programa Java produzirá um código de byte após a compilação.
C. Os programas Java gerarão DLLs após serem compilados
D. Nenhuma das opções acima está correta
Resposta: b
Java Bytecode é um arquivo intermediário gerado pela Java Fonte File Compilação
A natureza de plataforma cruzada das máquinas virtuais Java é um computador imaginário que pode executar o Java Bytecode. Também é relativamente semelhante a outras linguagens de programação.
Vamos primeiro introduzir o processo de compilação da linguagem C: o arquivo C é compilado pelo programa C Compiler e gera o arquivo executável executável do Windows e o executa no Windows.
Vamos apresentar o processo de compilação Java: o arquivo Java é compilado pelo compilador Java. O arquivo Java ByteCode é o arquivo de classe na máquina virtual Java. O código da máquina é executado pela CPU; Java é compilado com bytecode.
Os computadores só podem executar códigos de máquina. Quando o Java é executado, ele transforma ByteCode em código da máquina. C/C ++ é compilado diretamente no código da máquina ao compilar
6. Qual das seguintes afirmações está correta ()
A. O modificador abstrato modifica campos, métodos e classes
B. A parte corporal do método abstrato deve ser embrulhada em um par de aparelhos {}
C. Declare os métodos abstratos, os aparelhos são opcionais
D. Declare os métodos abstratos não podem ser escritos em aparelhos
Resposta: d
O modificador abstrato é usado para modificar classes e métodos de membros
As classes modificadas com abstrato representam classes abstratas. As classes abstratas estão localizadas na camada abstrata da árvore de herança. Classes abstratas não podem ser instanciadas.
O método abstrato é usado para expressar um método abstrato, e o método abstrato não possui órgão de método. Os métodos abstratos são usados para descrever quais funções o sistema possui, mas não fornece implementações específicas.
Resumo é uma palavra -chave importante em Java e pode ser usada para modificar uma classe ou um método.
Ao modificar um método, significa que o método possui apenas uma assinatura de recurso (assinatura) e não possui implementações específicas, mas deixa a implementação específica da subclasse que herda a classe, para que não haja aparelho.
7. As seguintes afirmações estão corretas ()
R. O construtor da classe não pode ser omitido
B. O construtor deve ter o mesmo nome da classe, mas o método não pode ter o mesmo nome que a classe
C. O construtor é executado quando um objeto é novo
D. Uma classe só pode definir um construtor
Resposta: c
Pode haver mal -entendidos aqui. De fato, os métodos de classe comuns podem ter o mesmo nome que o nome da classe. A única diferença entre eles e o construtor é que o construtor não tem valor de retorno.
8. É o tópico GC A DAEMON Thread ()
Resposta: Sim
Os threads são divididos em threads daemon e threads não daemon (ou seja, threads de usuário).
Enquanto não houver thread não daemon na instância JVM atual, o thread Daemon funcionará; Somente quando o último thread não daemon termina, o thread Daemon termina trabalhando com a JVM.
A aplicação mais típica dos threads Daemon é GC (coletor de lixo)
9. Em relação ao sono () e espera (), o seguinte erro é ()
A. O sono é um método de classe de encadeamento (thread), espera é um método de classe de objeto;
B. O sono não libera o bloqueio do objeto, espere abandona o bloqueio do objeto;
C. O sono faz uma pausa no encadeamento, mas o status de monitoramento permanece e retomará automaticamente após o final;
D. Depois de esperar, entre na piscina de bloqueio em espera. Somente após a emissão do método Notify para esse objeto, o bloqueio do objeto é obtido e entra no estado em execução.
Resposta: d
O sono é um método da classe Thread (Thread), fazendo com que este thread pause a execução por um tempo especificado e ofereça oportunidades de execução a outros threads, mas o status de monitoramento permanece e será retomado automaticamente depois disso. Chamar o sono não soltará o bloqueio do objeto.
Espera é um método da classe de objeto. Chamar o método de espera neste objeto faz com que o thread desista do bloqueio do objeto e insira o pool de bloqueio de espera esperando por esse objeto. Somente após a emissão de um método Notify (ou NotifyAll) para esse objeto, este thread entra no pool de bloqueio do objeto e se prepara para obter o bloqueio do objeto e entra no estado em execução.
10. O Método Rume () é responsável por restaurar a execução de quais threads ()
A, um encadeamento que é interrompido chamando o método STOP ().
B, um thread que é interrompido chamando o método Sleep ().
C, um thread que é interrompido chamando o método wait ().
D, um thread que é interrompido chamando o método suspense ().
Resposta: d
Suspender pode suspender um fio, o que significa suspender o thread. Ocupa recursos, mas não é executado. Use o currículo para restaurar o encadeamento suspenso e deixe o thread continuar a executar.