Os principais pontos de conhecimento da entrevista Java - a versão mais recente da coleção de perguntas da entrevista Java

prefácio

O artigo anterior apresentou algumas perguntas comuns em entrevistas em java e forneceu respostas de referência correspondentes, principalmente incluindo perguntas multi-threading em Java SE, algumas perguntas comuns em entrevistas em reflexão, cópia de objetos e perguntas comuns em Java Web. alguns problemas. Este artigo continua apresentando perguntas comuns em entrevistas em java. A primeira coisa que apresentarei a você são os problemas anormais comuns em java:

1. Anormal

1. Qual é a diferença entre arremesso e arremessos?

• throws: é a declaração de que uma exceção pode ser lançada.

2. Qual é a diferença entre final, finalmente e finalize?

• final: É um modificador, se a classe for modificada, a classe não pode ser herdada, se o método e a variável forem modificados, significa que o método e a variável não podem ser alterados e podem apenas ser usados.

•finalmente: é a última parte de try{} catch{}finalmente{}, o que significa que será executado não importa o que aconteça. A parte final pode ser omitida, mas se a parte final existir, o código em finalmente será executado.

• finalize: É um método da classe Object, e este método do objeto recuperado será chamado quando o coletor de lixo for executado.

3. Qual parte de try-catch-finally pode ser omitida?

try-catch-finally Catch e finalmente podem ser omitidos, mas não ao mesmo tempo, ou seja, quando há try, deve ser seguido de catch ou finalmente.

4. No try-catch-finally, se houver retorno no catch, o final ainda será executado?

finalmente será executado, mesmo que seja return in catch, o return in catch irá esperar até que o código infinalmente seja executado antes de ser executado.

5. Quais são as classes de exceção comuns?

• Exceção de ponteiro nulo NullPointerException

• ClassNotFoundException a classe especificada não existe

• String NumberFormatException para exceção de número

• IndexOutOfBoundsException Array subscrito fora dos limites de exceção

• Exceção de conversão de tipo de dados ClassCastException

• Arquivo FileNotFoundException exceção não encontrada

• O método NoSuchMethodException não existe exceção

• Exceção IOException IO

• SocketException Exceção de soquete

2. Rede

1. O que representam os códigos de resposta http 301 e 302? Qual é a diferença?

301: Redirecionamento permanente.

302: Redirecionamento temporário.

A diferença deles é:

301 é mais benéfico para otimização de mecanismo de busca (SEO);

302 Existe o risco de ser solicitado a interceptação de rede.

2. Qual é a diferença entre encaminhar e redirecionar?

forward é encaminhar e redirecionar é redirecionar:

• A url exibida na barra de endereço: a url de encaminhamento não será alterada, mas a url de redirecionamento será alterada;

• Compartilhamento de dados: o encaminhamento pode compartilhar os dados da solicitação, mas o redirecionamento não;

• Eficiência: encaminhar é mais eficiente que redirecionar.

3. Descreva resumidamente a diferença entre tcp e udp?

tcp e udp são protocolos na camada de transporte do modelo OSI. tcp fornece transporte de comunicação confiável, enquanto udp é frequentemente usado para permitir transmissão e controle de detalhes para transporte de comunicação de aplicativo.

A diferença entre os dois é mais ou menos assim:

• tcp é orientado a conexão, udp não é orientado a conexão, ou seja, nenhuma conexão é necessária antes de enviar dados;

• tcp fornece serviço confiável (transferência de dados), udp não pode garantir;

• tcp é orientado a bytes, udp é orientado a pacotes;

• a transmissão de dados tcp é lenta, a transmissão de dados udp é rápida;

4. Por que tcp precisa apertar as mãos três vezes, não pode ser feito duas vezes? Por que?

Se forem usados ​​dois handshakes, a conexão será estabelecida desde que o servidor envie um pacote de confirmação, mas como o cliente não responde à solicitação do servidor neste momento, o servidor sempre aguardará o cliente neste momento, portanto, o servidor serão desperdiçados certos recursos. Se o handshake triplo for usado e o servidor não receber uma reconfirmação do cliente, ele saberá que o cliente não solicita o estabelecimento de uma solicitação e os recursos do servidor não serão desperdiçados.

5. Diga-me como o pacote sticky TCP é gerado?

O pacote sticky tcp pode ocorrer no final do envio ou no final do recebimento. Vejamos as causas dos pacotes sticky em ambas as extremidades:

• Sticky packets no remetente: o remetente precisa esperar que o buffer esteja cheio antes de enviar, resultando em sticky packets;

• Sticky packets no receptor: O receptor não recebe os pacotes em buffer a tempo, resultando no recebimento de vários pacotes.

6. Quais são as sete camadas do modelo OSI?

• Camada física: use o meio de transmissão para fornecer uma conexão física para a camada de enlace de dados e realize a transmissão transparente do fluxo de bits.

• Camada de Enlace de Dados: Responsável por estabelecer e gerenciar os links entre os nós.

• Camada de rede: através do algoritmo de roteamento, selecione o caminho mais adequado para que a mensagem ou pacote passe pela sub-rede de comunicação.

• Camada de transporte: fornece aos usuários controle de fluxo e erro ponta a ponta confiável para garantir a transmissão correta dos pacotes.

• Camada de sessão: fornece métodos para estabelecer e usar conexões com as camadas de apresentação de duas entidades.

• Camada de apresentação: lida com a representação das informações do usuário, como codificação, conversão de formato de dados, criptografia e descriptografia, etc.

• Camada de aplicativo: fornece serviços diretamente aos usuários e executa várias tarefas que os usuários desejam concluir na rede.

7. Qual é a diferença entre solicitações get e post?

• As solicitações get são ativamente armazenadas em cache pelo navegador, mas as solicitações post não.

• os parâmetros get pass têm um limite de tamanho, mas post não.

• A transmissão dos parâmetros do post é mais segura, os parâmetros do get serão limitados à url em texto não criptografado, mas os parâmetros do post não.

8. Como alcançar cross-domain?

Existem várias opções para implementar cross-domain:

• O servidor executa configuração de domínio cruzado CORS igual a *;

• Use a anotação @CrossOrigin para executar cross-origin em uma única interface;

• Usar domínio cruzado jsonp;

9. Fale-me sobre o princípio de implementação do JSONP?

jsonp: JSON com Padding, que utiliza a conexão src da tag script para acessar as características de diferentes fontes, e carrega a "função JS" retornada pelo remoto para executar.

3. Padrão de projeto

1. Conte-me sobre os padrões de projeto com os quais você está familiarizado?

• Modo Singleton: garantido para ser criado uma vez, economizando sobrecarga do sistema.

• Padrão de fábrica (fábrica simples, fábrica abstrata) : código desacoplado.

Padrão Observer : Define dependências um-para-muitos entre objetos, de forma que quando um objeto muda, todos os seus dependentes são notificados e atualizados automaticamente.

Modo de aparência : fornece uma interface unificada para acessar um grupo de interfaces no subsistema.A aparência define uma interface de alto nível para facilitar o uso do subsistema.

Modo de método de modelo : define o esqueleto de um algoritmo e adia algumas etapas para as subclasses.O método de modelo permite que as subclasses redefinam as etapas do algoritmo sem alterar a estrutura do algoritmo.

Modo de estado : permite que um objeto mude seu comportamento quando seu estado interno muda e o objeto parece ter modificado sua classe.

2. Qual é a diferença entre uma fábrica simples e uma fábrica abstrata?

Fábrica Simples : É utilizada para produzir qualquer produto dentro da mesma estrutura hierárquica, não podendo fazer nada quanto à adição de novos produtos.

Método de fábrica : usado para produzir produtos fixos na mesma estrutura hierárquica e suporta a adição de produtos arbitrários.

Fábrica Abstrata : É utilizada para produzir todos os produtos de diferentes famílias de produtos, não podendo adicionar novos produtos, suporta a adição de famílias de produtos.

四、Spring/Spring MVC

1. Por que usar a mola?

• O Spring fornece a tecnologia ioc, e o contêiner o ajudará a gerenciar objetos dependentes, para que você não precise criar e gerenciar objetos dependentes por conta própria e seja mais fácil obter o desacoplamento do programa.

• O Spring oferece suporte a transações, tornando as operações de transação mais convenientes.

• O Spring fornece programação orientada a fatias, o que torna mais fácil lidar com certos tipos de problemas.

• Integração de estrutura mais conveniente, o spring pode facilmente integrar outras estruturas, como MyBatis, hibernate, etc.

2. Explique o que é aop?

AOP é uma tecnologia para programação orientada a aspectos, que realiza a manutenção unificada das funções do programa por meio de pré-compilação e proxy dinâmico de tempo de execução.

Simplificando, é a ideia de programação de processamento unificado de uma determinada "face de corte" (categoria), como processamento unificado de logs e exceções.

3. Explique o que é ioc?

ioc: Inversion of Control (chinês: Inversion of Control) é o núcleo de spring.Para o framework spring, spring é responsável por controlar o ciclo de vida dos objetos e o relacionamento entre os objetos.

Em termos simples, o controle refere-se ao controle do objeto atual sobre os membros internos; inversão de controle significa que esse controle não é gerenciado pelo objeto atual, mas por outros (classes, contêineres de terceiros) para gerenciar.

4. Quais são os principais módulos da mola?

• spring core: a parte mais básica do framework, fornecendo recursos de ioc e injeção de dependência.

• Spring context: O pacote de contexto criado com base no pacote principal fornece um método de acesso a objetos no estilo de estrutura.

• spring dao: Data Access Object fornece uma camada de abstração para JDBC.

• spring aop: Fornece uma implementação de programação orientada a aspectos, permitindo customizar interceptores, cortes de pontos, etc.

• Spring Web: fornece recursos integrados para desenvolvimento da Web, como upload de arquivo, inicialização de contêiner IOC usando ouvintes de servlet e applicationContext para Web.

• spring Web mvc: O pacote mvc no spring fornece a implementação do Model-View-Controller (MVC) para aplicativos da Web.

5. Quais são os métodos de injeção comumente usados ​​na primavera?

• injeção de propriedade do setter

• Injeção de construtor

• Injeção de anotação

6. Os beans in spring são thread-safe?

O padrão do bean em spring é o modo singleton, e a estrutura spring não executa o processamento de encapsulamento multiencadeado no bean singleton.

Na verdade, na maioria das vezes, os spring beans são sem estado (como a classe dao), então, até certo ponto, os beans também são seguros, mas se os beans forem com estado (como objetos de modelo de exibição), os desenvolvedores devem garantir a segurança do thread eles mesmos Sim, a maneira mais fácil é mudar o escopo do bean, mudar o "singleton" para "prototype", para que o bean solicitado seja equivalente a um novo bean, para que a segurança do thread possa ser garantida.

• Ser stateful é ter recursos de armazenamento de dados.

• Stateless significa que nenhum dado é salvo.

7. Quantos escopos de bean o spring suporta?

O Spring suporta 5 escopos, como segue:

• singleton: Existe apenas uma instância de bean no contêiner spring ioc, e o bean existe no modo singleton, que é o valor padrão do sistema;

• protótipo: Uma nova instância será criada toda vez que um bean for chamado do container, ou seja, cada getBean equivale a realizar uma nova operação de Bean;

• Escopo no ambiente web:

• request: Um bean é criado para cada requisição http;

• sessão: a mesma sessão http compartilha uma instância de bean;

• global-session: para contêiner de portlet, porque cada portlet tem uma sessão separada, globalsession fornece uma sessão http global.

Nota: O uso do escopo do protótipo requer uma reflexão cuidadosa, porque a criação e a destruição frequentes de beans trarão muita sobrecarga de desempenho.

8. Quais são as maneiras de montar feijões automaticamente na primavera?

• no: O valor padrão, significando que não há autowiring e referências explícitas de bean devem ser usadas para fiação.

• byName: Injeta dependências de objetos com base no nome do bean.

• byType: Injeta dependências de objeto com base no tipo.

• Construtor: Para injetar dependências através do construtor, um grande número de parâmetros precisa ser definido.

• autodetect: O contêiner é primeiro conectado automaticamente por meio do construtor ou, se não for conectado automaticamente, por byType.

9. Quais são os métodos de implementação das transações de primavera?

• Transação declarativa: Existem duas maneiras de realizar uma transação declarativa, com base no arquivo de configuração xml e na anotação (adicione a anotação @Transaction à classe).

• Modo codificado: Forneça um formulário codificado para gerenciar e manter transações.

10. Fale-me sobre o isolamento da transação de primavera?

Spring tem cinco níveis de isolamento, o valor padrão é: ISOLATION_DEFAULT (usando configurações do banco de dados), os outros quatro níveis de isolamento são consistentes com o nível de isolamento do banco de dados:

12. Quais são os componentes do spring mvc?

• DispatcherServlet do controlador frontal.

• HandlerMapping do controlador de mapeamento.

• Controlador do processador.

• Modelar e visualizar ModelAndView.

• Visualizar o resolvedor ViewResolver.

13. Qual é a função de @RequestMapping?

Mapear solicitações http para classes/métodos correspondentes

14. Qual é a função do @Autowired?

@Autowired Ele pode anotar variáveis, métodos e construtores de membros de classe, concluir o trabalho de montagem automática e eliminar o método set/get por meio do uso de @Autowired.

五、Spring Boot/Spring Cloud

1. O que é bota de mola?

a bota de mola serve a mola e é usada para simplificar o processo inicial de construção e desenvolvimento de novas aplicações de mola.

2. Por que usar bota de mola?

• Configuração simples

• Operar de forma independente

• Autoligação

• Sem geração de código e configuração de xml

• Fornece monitoramento de aplicativos

• fácil de usar

• Melhorar a eficiência do desenvolvimento

3. Qual é o arquivo de configuração principal do spring boot?

Dois arquivos de configuração do núcleo de inicialização de mola:

• bootstrap (.yml ou .properties): boostrap é carregado pelo applicationContext pai, é carregado antes de applicationton e as propriedades em boostrap não podem ser substituídas;

• application (.yml ou .properties): para configuração automática de projetos de inicialização por mola.

4. Quais são os tipos de arquivos de configuração de inicialização de mola? Qual é a diferença?

Os arquivos de configuração têm formato .properties e .yml, a principal diferença entre eles é o estilo de caligrafia.

As propriedades são configuradas da seguinte forma:

primavera. RabbitMQ. porta=56721

yml está configurado da seguinte forma:

Nota: o formato yml não suporta a importação de anotação @PropertySource.

5. Quais são as formas de inicialização de mola para obter implantação quente?

• Use devtools para iniciar a implantação ativa, adicione a biblioteca devtools e defina spring.devtools.restart.enabled como true no arquivo de configuração;

• Usando o editor Intellij Idea, marque Compilação automática ou Recompilação manual.

6. Qual é a diferença entre jpa e hibernate?

O nome completo de jpa é Java Persistence API, que é a especificação da interface de persistência Java, e hibernate pertence à implementação específica de jpa.

7. O que é nuvem de primavera?

Spring cloud é uma coleção ordenada de uma série de estruturas. Ele usa a conveniência de desenvolvimento do spring boot para simplificar sutilmente o desenvolvimento da infraestrutura do sistema distribuído, como registro de descoberta de serviço, centro de configuração, barramento de mensagens, balanceamento de carga, disjuntor, monitoramento de dados, etc., pode ser feito com o estilo de desenvolvimento de inicialização de mola para lançamento e implantação com um clique.

8. Qual é a função do disjuntor de nuvem de mola?

Em uma arquitetura distribuída, o papel do modo disjuntor é semelhante. Quando uma unidade de serviço falha (semelhante a um curto-circuito em um aparelho elétrico), uma resposta de erro é retornada ao chamador por meio do monitoramento de falha do disjuntor a um fusível queimado). , em vez de uma longa espera. Desta forma, a thread não ficará ocupada por muito tempo devido à chamada do serviço faltoso e não será liberada, evitando a propagação de faltas no sistema distribuído.

9. Quais são os principais componentes do Spring Cloud?

• Eureka: Registro de serviço para descoberta.

• Fingir: Com base no mecanismo de proxy dinâmico, de acordo com a anotação e a máquina selecionada, una o endereço url da solicitação e inicie a solicitação.

• Faixa de opções: para obter o balanceamento de carga, selecione uma das várias máquinas para um serviço.

• Hystrix: Fornece pools de threads, serviços diferentes usam pools de threads diferentes, realiza o isolamento de diferentes chamadas de serviço e evita o problema de avalanche de serviços.

• Zuul: gerenciamento do gateway, o gateway Zuul encaminha a solicitação para o serviço correspondente.

Resumir

O artigo anterior apresentou algumas perguntas comuns em entrevistas em java e forneceu respostas de referência correspondentes, principalmente incluindo perguntas multi-threading em Java SE, algumas perguntas comuns em entrevistas em reflexão, cópia de objetos e perguntas comuns em Java Web. alguns problemas. Este artigo apresenta as exceções no Java SE, perguntas de entrevista comuns na rede e também apresenta as perguntas de entrevista correspondentes dos padrões de projeto. Por fim, apresentei as perguntas de entrevista comuns na estrutura popular, incluindo principalmente perguntas de entrevista relacionadas a spring/spring mvc e spring boot e spring cloud. Espero que todos possam dominá-lo com base na compreensão. Esta é a base e o núcleo do java. Somente quando tivermos uma compreensão sólida desses conhecimentos básicos, poderemos aplicá-los melhor no processo de desenvolvimento real. Resumindo, seja uma entrevista ou um iniciante, este artigo será mais ou menos útil para os colegas na direção de java, espero que todos estudem muito, trabalhem muito, vivam e aprendam e melhorem constantemente suas habilidades. Ao mesmo tempo, também espero que os amigos que procuram emprego possam encontrar um emprego satisfatório! ! ! !

Acho que você gosta

Origin blog.csdn.net/std7879/article/details/127743315
Recomendado
Clasificación