Práticas recomendadas para entrevistas em PHP na China
Versão em inglês (terceiros)
Este armazém resume principalmente os pontos de conhecimento que são frequentemente solicitados em entrevistas domésticas de PHP. Ele apenas aponta pontos de conhecimento de maneira direcionada, e você precisa encontrar informações relevantes e estudar sistematicamente por conta própria. Espero que você possa entender não apenas o que é, mas também por que e os princípios por trás disso.
Se você tiver informações muito sistemáticas sobre os pontos de conhecimento correspondentes, fique à vontade para adicionar links ao PR. Não é recomendado o uso do fork, as informações serão atualizadas a qualquer momento.
Se você está atualmente nas seguintes situações, esta informação é muito adequada para você:
- Estou planejando mudar de emprego, mas não sei por onde começar.
- A tecnologia encontrou um gargalo e não sei o que aprender.
- Pronto para aprender PHP, mas não sabe o quão profundo é esse campo?
Noções básicas
- Entenda a maioria das funções de manipulação de array
- A diferença entre funções de processamento de string e funções da série mb_
- & Cotações, combinadas com análise de caso
- Diferença entre == e ===
- A diferença entre isset e vazio
- Compreendendo todas as funções mágicas
- Diferenças entre static, $this e self
- A diferença entre privado, protegido, público e final
- Pensamento POO
- Respectivos cenários de uso de classes e interfaces abstratas
- O que é característica?
- Diferenças entre echo, print e print_r (distinguir a diferença entre expressões e instruções)
- A diferença entre __construct e __destruct
- manual de função estática (distinguir entre classes e funções), SOF
- Função __toString()
- A diferença entre aspas simples
'
e aspas duplas "
- Códigos de status HTTP comuns, o que eles significam?
- O que 301 significa 404?
Capítulo avançado
- Autoload, princípio do compositor PSR-4, princípio
- Compartilhamento de sessão, tempo de sobrevivência
- Tratamento de exceções
- Como iterar sobre o objeto foreach
- Como ordenar o objeto de operação
$obj[key];
- Como funcionalizar o objeto
$obj(123);
- O que é rendimento? Vamos falar sobre o cenário de uso do rendimento.
- O que é PSR, PSR-1, 2, 4, 7
- Como obter endereços IP do cliente e IP do servidor
- IP do cliente
- IP do servidor
- Compreenda o conceito de transmissão transparente de proxy do IP real
- Como habilitar prompts de exceção do PHP
- php.ini ativa
display_errors
e define error_reporting
- Em tempo de execução, use
ini_set(k, v);
- Como retornar um redirecionamento 301
- [AVISO] Tenha cuidado para que o script continue a ser executado após a configuração 301. Não pense que o seguinte não será executado. Use
die
ou exit
se necessário.
- Como obter o caminho de instalação da extensão
-
phpinfo();
Pesquisa de página extension_dir
- Linha de comando
php -i |grep extension_dir
- Tempo de execução
echo ini_get('extension_dir');
- O princípio de comparação de strings e números Preste atenção ao sistema octal começando com 0 e ao sistema hexadecimal começando com 0x.
- Tamanho de comparação de string, da esquerda (bit alto) para a direita, comparação caractere por caractere ASCII
- Qual é o cabeçalho da lista técnica e como removê-lo?
-
0xEF
, 0xBB
, 0xBF
- Detectar, remover
- O que é MVC
- Princípio de implementação de injeção de dependência
- Como executar um comando de forma assíncrona
- O que é um mecanismo de modelo, quais problemas ele resolve e seus princípios de implementação (Smarty, Twig, Blade)
- Como implementar a operação em cadeia
$obj->w()->m()->d();
- Uso de ferramentas de depuração de desempenho Xhprof e Xdebug
- Qual é a diferença entre matriz de índice
[1, 2]
e matriz associativa ['k1'=>1, 'k2'=>2]
- Como usar cache e cenários
Prática
- Dado um array bidimensional, classifique de acordo com um determinado campo
- Como determinar o tipo de arquivo enviado, como: somente upload de jpg é permitido
- Trocar os valores de duas variáveis sem usar variáveis temporárias
$a=2; $b=1;
$a=1; $b=2;
- Existem caracteres ilegíveis no strtoupper ao converter o chinês. Como você resolve isso?
php echo strtoupper('ab你好c');
- Diferenças entre Websocket, Long-Polling e eventos enviados pelo servidor (SSE)
- O que significa o erro "Cabeçalhos já enviados" e como evitá-lo
Algoritmo
- Classificação rápida (manuscrita)
- Classificação por bolha (manuscrita)
- Pesquisa binária (compreensão)
- Encontre o algoritmo KMP (entenda)
- Primeira pesquisa em profundidade e amplitude (entenda)
- Algoritmo de eliminação de cache LRU (entenda que o Memcached usa esse algoritmo)
Estrutura de dados (compreensão)
- Características de pilha e pilha
- fila
- Tabela hash
- lista vinculada
Comparação
- A diferença entre Cookie e Sessão
- A diferença entre
GET
e POST
- A diferença entre
include
e require
- A diferença entre
include_once
e require_once
- A diferença entre Memcached e Redis
- Mecanismos de armazenamento MySQL e suas diferenças (você definitivamente perguntará sobre a diferença entre MyISAM e Innodb)
- A diferença entre HTTP e HTTPS
- A diferença entre Apache e Nginx
- A diferença entre define() e const
- Quais são as diferenças entre características e interfaces e quais pontos problemáticos as características resolvem?
- A diferença entre Git e SVN
Banco de dados
- MySQL
- CRUD
- JUNTE-SE, JUNTE-SE À ESQUERDA, JUNTE-SE À DIREITA, JUNTE-SE AO INNER
- UNIÃO
- Caso de combinação GROUP BY + COUNT + WHERE
- Funções MySQL comumente usadas, como: now(), md5(), concat(), uuid(), etc.
-
1:1
, 1:n
, n:n
são aplicáveis a cada cenário - Entenda o que é um gatilho e descreva um cenário de uso
- Métodos de otimização de banco de dados
- Índice, índice conjunto (condição de acerto)
- Subbanco de dados e subtabela (
水平分表
e垂直分表
) - Partição
- Pode usar
explain
para analisar problemas de desempenho do SQL e entender o significado de cada parâmetro- Concentre-se em entender
type
, rows
, key
- Log lento (para que serve, quando é necessário)
- MSSQL (entenda)
- Consulte os últimos 5 dados
- NOSQL
- Redis, Memcached, MongoDB
- Comparação e cenários aplicáveis (a comparação pode ser feita a partir das seguintes dimensões)
- persistência
- Suporta vários tipos de dados
- CPU multi-core disponível
- Mecanismo de eliminação de memória
- ClusterCluster
- Suporte SQL
- Comparação de desempenho
- assuntos de suporte
- Cenários de aplicação
- O que você usou para resolver qual problema antes e por que o escolheu?
Servidor
- Visualize informações como CPU, memória, hora, versão do sistema, etc.
- encontrar, grep para encontrar arquivos
- awk processa texto
- Veja o diretório onde o comando está localizado
- Você já compilou PHP sozinho? Como ativar a função readline
- Como verificar o uso de memória e CPU do processo PHP
- Como adicionar uma extensão ao PHP
- Modifique o local de armazenamento da sessão PHP e modifique os parâmetros de configuração INI
- Quais são os tipos de balanceamento de carga Escolha um que você conheça e explique seus princípios.
- Como a replicação mestre-escravo do banco de dados MS é sincronizada? Empurrar ou puxar? Estará fora de sincronia? o que fazer
- Como garantir a disponibilidade dos dados para que mesmo que sejam apagados, possam ser restaurados ao nível de minutos. o que você vai fazer.
- Existem muitas conexões de banco de dados, excedendo o valor máximo. Como otimizar a arquitetura. Como pode ser processado convenientemente?
- 502 Qual é a possível razão? Como solucionar problemas do 504?
Arquitetura
- Operação e manutenção parcial (compreensão):
- Balanceamento de carga (Nginx, HAProxy, DNS)
- Replicação mestre-escravo (MySQL, Redis)
- Redundância e backup de dados (princípios incrementais e completos do MySQL)
- Monitoramento e fiscalização (duas dimensões de sobrevivência e disponibilidade de serviço)
- MySQL, Redis, Memcached Proxy, objetivo e princípio do cluster
- Fragmentação
- Cluster de alta disponibilidade
- ATAQUE
- Compilação de código-fonte, ajuste de memória
- esconderijo
- Sempre que você encontrar situações em que o cache é necessário no trabalho, descreva brevemente o motivo.
- Soluções de pesquisa
- Ajuste de desempenho
- Soluções de monitoramento em diversas dimensões
- Solução de processamento centralizado de coleta de logs
- internacionalização
- Projeto de banco de dados
- solução estática
- Desenhe diagramas comuns de arquitetura de aplicativos PHP
Estrutura
- ThinkPHP (TP), CodeIgniter (CI), Zend (série não-OOP)
- Yaf, Phalcon (extensão C)
- Yii, Laravel, Symfony (série OOP pura)
- Swoole, Workerman (estrutura de programação de rede)
- O quadro de comparação distingue vários pontos de direção
- É POO puro?
- Método de carregamento da biblioteca de classes (escreva seu próprio carregamento automático versus padrão do compositor)
- Direção de usabilidade (estrutura básica de CI, Laravel é uma estrutura de alta eficiência de desenvolvimento e quantos componentes básicos existem)
- Caixa preta (em comparação com o sistema de extensão C)
- Velocidade de execução (por exemplo: Laravel carrega muitas coisas)
- Uso de memória
padrão de design
- Padrão Singleton (ênfase)
- Padrão de fábrica (chave)
- Padrão observador (ênfase)
- Injeção de dependência (ênfase)
- Padrão de decorador
- modo proxy
- Modo de combinação
Segurança
- Injeção SQL
- XSS e CSRF
- Filtragem de entrada
- Segurança de cookies
- Desabilitar funções
mysql_
- Ao armazenar senhas de usuários no banco de dados, o que deve ser feito para garantir a segurança?
- Código de verificação Problema de sessão
- ID de sessão segura (para que mesmo após a interceptação não possa ser simulado e usado)
- Segurança de permissão de diretório
- Contém arquivos locais e remotos
- Script PHP para upload de arquivo
- função
eval
executa script -
disable_functions
desativa funções de alto risco - Usuários e grupos independentes do FPM, dando permissões específicas para cada diretório
- Entenda a diferença entre Hash e Criptografar
Nível avançado
- Implementação subjacente do array PHP (HashTable + lista vinculada)
- Copiar no princípio de gravação, quando fazer GC
- Modelo de processo PHP, método de comunicação de processo, diferença de thread de processo
- Qual é o princípio fundamental do rendimento?
- Princípio de preparação DOP
- Qual é a diferença entre PHP 7 e PHP 5
- Cenários aplicáveis do Swoole e métodos de implementação de rotina
Front-end
- Obtenha nós e atributos DOM nativamente
- modelo de caixa
- Arquivos CSS, tags de estilo, prioridade de atributos de estilo embutido
- Ordem de execução HTML e JS (página JS de cima para baixo)
- Operações de matriz JS
- Tipo de julgamento
- este escopo
- .map() e esta análise de cenário de uso específico
- Leitura e escrita de cookies
- Operações JQuery
- Solicitação Ajax (diferença entre síncrono e assíncrono) número aleatório proíbe armazenamento em cache
- Quais são os benefícios do Bootstrap?
- Solicitação N de soluções entre domínios
- Nova tecnologia (entenda)
- ES6
- Modular
- Pacote
- Ferramentas de construção
- vue, reagir, webpack,
- frontendmvc
- otimização
- Limite de número simultâneo do navegador para um único nome de domínio
- Cache de recursos estáticos 304 (princípio If-Modified-Since e Etag)
- Combine vários ícones pequenos e use tecnologia de posicionamento de posição para reduzir solicitações
- Recursos estáticos são combinados em uma única solicitação e compactados
- CDN
- Tecnologia de carregamento atrasado de recursos estáticos e tecnologia de pré-carregamento
- manter vivo
- Otimização de CSS no início e JS no final (princípio)
Rede
- Endereço IP para INT
- O que significa 192.168.0.1/16?
- Qual é a principal função do DNS?
- A diferença entre IPv4 e v6
Programação de rede
- Processo de handshake de três vias TCP
- Diferenças entre TCP e UDP, cenários aplicáveis respectivamente
- Existe alguma maneira de garantir alta disponibilidade do UDP (entenda)
- Como resolver pacotes pegajosos TCP?
- Por que é necessário um batimento cardíaco?
- O que é uma conexão longa?
- Como o HTTPS é seguro?
- A diferença entre streams e datagramas
- Existem diversas formas de comunicação entre processos, qual é a mais rápida?
- O que acontece
fork()
?
Capítulo API
- O que é RESTful
- Como tornar solicitações
DELETE
compatíveis com navegadores que não suportam solicitações DELETE
- Qual é a principal função do
APP_ID
APP_SECRET
das APIs comuns? Explique o processo - Como garantir que os dados nas solicitações da API não sejam adulterados?
- A diferença entre JSON e JSONP
- A diferença entre criptografia de dados e verificação de assinatura
- O que é RSA
- Como lidar com a compatibilidade da versão da API
- Limitação de corrente (balde de madeira, balde de token)
- Em quais cenários o OAuth 2 é usado principalmente?
- JWT
- Qual é a diferença entre
json_encode(['key'=>123]);
e return json_encode([]);
Como resolver
Pontos de bônus
- Compreenda os recursos de linguagem comum e a aplicabilidade a diferentes cenários.
- PHP versus Golang
- PHP versus Python
- PHP versus JAVA
- Saiba mais sobre o desenvolvimento de extensões PHP
- Proficiente em C
declaração
Estas informações não têm como alvo nenhuma empresa e não somos responsáveis pelo impacto dessas informações sobre você.
Boa sorte
Referências relacionadas
https://blog.csdn.net/l269798518/article/details/82428601