Perguntas da entrevista de PHP 2020 Spring Recruitment (com respostas)

PHP

1. Básico

1, a diferença entre sessão e cookie

  • Sessão é uma estrutura de dados salva no servidor para rastrear o status dos usuários. Esses dados podem ser salvos em clusters, bancos de dados e arquivos

  • Cookie é um mecanismo para o cliente guardar as informações do utilizador, é utilizado para registar algumas informações do utilizador e também é uma forma de implementar a Session.

2, Você já usou PHP7? Saiba quais são os novos recursos

PHP7 alcançou melhorias de desempenho, novos operadores, sintaxe de variável unificada, etc.

3, a variável mágica

Questionado sobre o significado de __dir__, este é o diretório onde o arquivo de resposta está localizado

4. Método mágico

Esta é uma pergunta frequente. Lembro-me das perguntas mais comuns. Quando perguntei a __invoke () de repente, fiquei confuso
__construct (), __destruct (), __call (), __callStatic (), __get (), __set (), __isset (), __unset (), __sleep (), __wakeup (), __toString (), __invoke (), __set_state (), __clone () e __debugInfo ()

2. Estrutura e algoritmo de dados

1, estrutura de dados da pilha

Contanto que o código possa ser usado para atingir a estrutura de dados da pilha

2, tipo de bolha

Contanto que a classificação da bolha possa ser realizada com código

3, a diferença entre uma árvore binária completa e uma árvore binária completa

Apenas o grau de nó de dois níveis mais baixo pode ser menor que 2, e os nós de nível mais baixo estão concentrados na posição mais à esquerda da árvore binária é uma árvore binária completa
e uma profundidade de he 2 ^ h-1 Árvore binária completa

3. Relacionado à arquitetura

1, Qual é a diferença entre Laravel e ThinkPHP, e do que devo reclamar do laravel?

Eu apresentei as diferenças de roteamento, middleware para controlador, acesso a dados, visualização, etc.

Tucao pode ser um pouco pesado em comparação com alguns projetos.

2, O Composer já lançou seu próprio pacote? (Com base no desenvolvimento modular de PHP do Composer)

Eu respondi não, acabei de aprender

O entrevistador disse que o framework deles é um framework de desenvolvimento secundário baseado no Discuz, e baseado em sua excelente base, o gerenciamento de dependências do compositor também foi introduzido no blabla

3, fale sobre a compreensão do MVC

Combine o modelo de descrição do projeto, visão, relacionamento do controlador e composição básica

Quatro. Proteção

1, ataque XSS cross-site scripting

2, ataque de tráfego DDOS

3. Ataque de falsificação de solicitação entre sites CSRF

4, injeção de SQL

Controle ou restrinja a entrada do usuário em formulários front-end

Filtrar ao passar parâmetros e dados no back-end etc.

V. Projeto

1, Como resolver o problema de simultaneidade no projeto

Minha solução é primeiro controlar as solicitações válidas no front end, como uma solicitação normal uma vez por minuto.
Em seguida, o back end também considera as solicitações inválidas e, em seguida, coloca a operação na fila para implementação.

Um entrevistador perguntou: sua fila está bloqueada? Se dois usuários realmente compram ao mesmo tempo e os dois esperam para concluir, eles ainda usam o mesmo thread para concluir. Você já pensou em usar outros métodos para conseguir?
Eu disse não, ele apenas Disse que você pode usar o mecanismo de bloqueio, o segundo aguarda o primeiro se completar, um a um

2, O processo de implementação específico do pagamento WeChat

1) A página H5 inicia uma solicitação de pagamento e solicita a geração de um pedido de pagamento.
2) Chame a API de pedido unificado para gerar um pedido pré-pago.
3) Gere e assine os parâmetros de pagamento chamados pela página JSAPI.
4) O navegador WeChat invoca automaticamente a interface JSAPI de pagamento para pagar.
5) Confirme o pagamento
6) Notifique de forma assíncrona o comerciante do resultado do pagamento, e o comerciante recebe a notificação e retorna as informações de confirmação
7) Retorne o resultado do pagamento e exiba as informações do pagamento para o usuário

3. Realização simples da função de login e registro

Cada estrutura considera aspectos diferentes, então apenas escreva o código correspondente de acordo com seu próprio entendimento

4. Como projetar um shopping

Eu primeiro defini para mim mesmo um shopping B2C e, em seguida, comecei a partir da planilha de dados e, em seguida, apresentei brevemente a lógica de implementação de front-end e back-end

MYSQL

A otimização do mysql é basicamente a principal prioridade, especialmente a tecnologia de teste

1. Básico

1, Qual é a diferença entre InnoDB e MyISAM

InnoDB fornece processamento de transações, bloqueios em nível de linha, suporta chaves estrangeiras e vários formatos de linha.
MyISAM só suporta bloqueios em nível de tabela, índices de texto completo e tabelas heap.

2, quais são as características da transação

Atomicidade, consistência, isolamento, durabilidade

3, o nível de isolamento da transação

Leitura não confirmada, leitura enviada, leitura repetível, serializável

4. Existe um campo de tabela de O_Id, OrderDate, OrderPrice, Customer. Queremos encontrar clientes cujo valor total do pedido seja inferior a 2.000

    SELECT Customer,SUM(OrderPrice) FROM

Orders

    GROUP BY Customer

    HAVING SUM(OrderPrice)<2000

5. Consulte os dados na tabela do aluno, se for maior que 60, é uma aprovação, caso contrário, falha

select 分数,类别=Case
WHEN 分数 >=60 THEN '及格'
ELSE '不及格 '
END
from 成绩表

6, consulte a ID do aluno e o nome dos alunos que não concluíram todos os cursos

SELECT a.SNO ,a.SNAME 

FROM student a 

WHERE a.`SNO` NOT IN 

    ( SELECT b.`SNO` FROM SC b 

    GROUP BY b.`SNO` HAVING COUNT(*) = 

        ( SELECT COUNT(*)  FROM course)

    );

2. Otimização

1, “selecione * do aluno onde nome = 'vermelho'”, “selecione * do aluno onde nome = 'azul'” , 优化 语句

    select name from student where

name='red'
    union
    select

name from student where name='blue'

Se você usar a condição ou, a tabela myisam pode usar o índice, mas o innodb não.
Innodb substitui OR por UNION (para colunas indexadas)

2, Como você geralmente otimiza o banco de dados

Cache de consulta, EXPLAIN, índice (conjunto), usar tabela estática de comprimento fixo

servidor

1. Proteção

Como proteger o servidor

Abra apenas portas limitadas, restrinja o IP de login, restrinja as contas de login

É também uma pergunta para um livro, que pode ser respondida de acordo com o projeto

2. Acordo

Qual é a diferença entre Get e Post

Os parâmetros get estão incluídos no URL e as solicitações GET serão ativamente armazenadas em cache pelo navegador. É codificado por url e há restrições de caracteres. Os parâmetros são caracteres ASCII.

Post passa parâmetros por meio do corpo da solicitação e existem vários métodos de codificação

3. NginX

Qual é o processo de solicitação de script php ao definir o nginx

A configuração padrão é encaminhar para o processamento FastCGI

4. Redis

1. Quais dados você usa redis para armazenar em cache

De acordo com o projeto, alguns dados usados ​​com frequência que armazenei

2. Como o Redis faz persistência e qual frequência de atualização configurar

Configure a persistência AOF, atualize o arquivo AOF a cada segundo por padrão

3. O Redis é multiencadeado?

Tópico único (na verdade, respondi multi-threaded, 233)

4. Como o Redis configura um mestre e vários escravos e quanto tempo leva?

Você pode usar a solução oficial de cluster Redis, que não foi praticada, e pode levar várias semanas para ser concluída

V. Gerenciamento de Código

Você já usou o git? Quando duas pessoas enviam o código errado, como resolver

Usei git para enviar o código. Se isso acontecer, você pode primeiro fazer o git puxar o código remoto para o local, modificar o código conflitante ou o conteúdo da marca Git corretamente e reenviar o código

de outros

1. Por que sair

Respondeu espirituoso, e falou um pouco sobre a empresa ou sobre si mesma.

2. Sua equipe ideal

Paixão pela tecnologia, resolver problemas ativamente e cooperar juntos

3. Planejamento de carreira

Front-end aprofundado, back-end aprofundado, coleta de análise de otimização de dados, blabla de penetração de servidor

4. Perguntas a serem feitas

Normalmente pergunte à empresa quais são os projetos, estrutura técnica, rentabilidade, etc.

As pilhas de tecnologia de empresas diferentes são diferentes, e os pontos de preocupação também são diferentes. Em certa medida, eles perguntarão sobre a solução de bloqueio específica para o problema da fila. Alguns prestarão mais atenção à eficiência do projeto e alguns também prestarão atenção à construção do servidor. Com uma compreensão das estruturas populares, você pode encontrar a direção de desenvolvimento que deseja no processo

pós-escrito

9 7ofertas em 5 dias, me sinto bem. Durante a entrevista, a maioria das empresas fará perguntas detalhadas com base nos itens do currículo. Durante a entrevista, você pode ver a amplitude da tecnologia (quantos projetos ou habilidades foram experimentados) e a profundidade da tecnologia (otimização de dados, (Framework que compreende a produção, o ataque ao servidor e a penetração da defesa), espero que todos possam continuar a praticar e aprender a tecnologia conforme o projeto se desenvolve. (• ㅂ •) / ♥ encorajam uns aos outros ~

Preste atenção, não se perca

Muito bem, pessoal, o texto acima é todo o conteúdo deste artigo. As pessoas que podem ver aqui são todos talentos . Como eu disse antes, há muitos pontos técnicos em PHP, porque são muitos, é realmente impossível escrever, e você não vai ler muito depois de escrever, então irei organizá-lo em PDF e documentos aqui, se necessário lata

Clique para inserir o código secreto: PHP + 「Plataforma」

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui


Para obter mais conteúdo de aprendizagem, você pode visitar o Catálogo [Comparative Standard Factory] de Tutoriais de Excelente PHP Architect, contanto que você possa lê-lo para garantir que o salário subirá um degrau (atualização contínua)

Acho que você gosta

Origin blog.csdn.net/weixin_49163826/article/details/108681449
Recomendado
Clasificación