Mejores prácticas de entrevista PHP en China
Versión en inglés (terceros)
Este almacén resume principalmente los puntos de conocimiento que a menudo se preguntan en las entrevistas nacionales de PHP. Solo señala puntos de conocimiento de manera específica, y usted necesita encontrar información relevante y estudiarla sistemáticamente por su cuenta. Espero que puedas entender no sólo qué es, sino también por qué y los principios detrás de esto.
Si tiene información muy sistemática sobre los puntos de conocimiento correspondientes, puede agregar enlaces a PR. No se recomienda utilizar fork, la información se actualizará en cualquier momento.
Si actualmente te encuentras en las siguientes situaciones, esta información es muy adecuada para ti:
- Estoy pensando en cambiar de trabajo, pero no sé por dónde empezar.
- La tecnología ha encontrado un cuello de botella y no sé qué aprender.
- ¿Estás listo para aprender PHP, pero no sabes qué tan profundo es el campo?
Lo esencial
- Comprender la mayoría de las funciones de manipulación de matrices.
- La diferencia entre las funciones de procesamiento de cadenas y las funciones de la serie mb_
- & Cotizaciones, combinado con análisis de casos
- Diferencia entre == y ===
- La diferencia entre isset y vacío.
- Comprender todas las funciones mágicas.
- Diferencias entre estático, $this y self
- La diferencia entre privado, protegido, público y final
- Pensamiento POO
- Escenarios de uso respectivos de clases e interfaces abstractas.
- ¿Qué es el rasgo?
- Diferencias entre echo, print y print_r (distinguir la diferencia entre expresiones y declaraciones)
- La diferencia entre __construct y __destruct
- manual de funciones estáticas (distinguiendo entre clases y funciones), SOF
- Función __toString()
- La diferencia entre comillas simples
'
y comillas dobles "
- Códigos de estado HTTP comunes, ¿qué significan?
- ¿Qué significa 301 404?
Capítulo avanzado
- Carga automática, principio de compositor PSR-4, principio
- Compartir sesiones, tiempo de supervivencia.
- Manejo de excepciones
- Cómo iterar sobre cada objeto
- Cómo organizar el objeto de operación
$obj[key];
- Cómo funcionalizar el objeto
$obj(123);
- ¿Qué es el rendimiento? Hablemos del escenario de uso del rendimiento.
- ¿Qué es PSR, PSR-1, 2, 4, 7?
- Cómo obtener las direcciones IP del cliente y del servidor
- IP del cliente
- IP del servidor
- Comprender el concepto de transmisión proxy transparente de IP real
- Cómo habilitar mensajes de excepción de PHP
- php.ini activa
display_errors
y establece error_reporting
- En tiempo de ejecución, utilice
ini_set(k, v);
- Cómo devolver una redirección 301
- [ADVERTENCIA] Tenga cuidado de que el script continúe ejecutándose después de configurar 301. No crea que lo siguiente no se ejecutará. Utilice
die
o exit
si es necesario.
- Cómo obtener la ruta de instalación de la extensión
-
phpinfo();
búsqueda de página extension_dir
- Línea de comando
php -i |grep extension_dir
- Tiempo de ejecución
echo ini_get('extension_dir');
- El principio de comparar cadenas y números. Preste atención al sistema octal que comienza con 0 y al sistema hexadecimal que comienza con 0x.
- Tamaño de comparación de cadenas, de izquierda (bit alto) a derecha, comparación ASCII carácter por carácter
- ¿Qué es el encabezado de la lista de materiales y cómo eliminarlo?
-
0xEF
, 0xBB
, 0xBF
- Detectar, eliminar
- ¿Qué es MVC?
- Principio de implementación de la inyección de dependencia
- Cómo ejecutar un comando de forma asincrónica
- Qué es un motor de plantillas, qué problemas resuelve y sus principios de implementación (Smarty, Twig, Blade)
- Cómo implementar la operación en cadena
$obj->w()->m()->d();
- Uso de las herramientas de depuración de rendimiento Xhprof y Xdebug
- ¿Cuál es la diferencia entre la matriz de índice
[1, 2]
y la matriz asociativa ['k1'=>1, 'k2'=>2]
- Cómo usar caché y escenarios
Práctica
- Dada una matriz bidimensional, ordenar según un campo determinado
- Cómo determinar el tipo de archivo cargado, por ejemplo: solo se permite la carga jpg
- Intercambiar los valores de dos variables sin utilizar variables temporales
$a=1; $b=2;
=> $a=2; $b=1;
- Hay caracteres confusos en strtoupper al convertir chino. ¿Cómo se soluciona?
php echo strtoupper('ab你好c');
- Diferencias entre Websocket, sondeo prolongado y eventos enviados por el servidor (SSE)
- ¿Qué significa el error "Encabezados ya enviados" y cómo evitarlo?
Algoritmo
- Clasificación rápida (escrita a mano)
- Clasificación de burbujas (escrita a mano)
- Búsqueda binaria (comprensión)
- Encontrar el algoritmo KMP (comprender)
- Primera búsqueda en profundidad y amplitud (comprender)
- Algoritmo de eliminación de caché LRU (comprenda que Memcached usa este algoritmo)
Estructura de datos (comprensión)
- Características del montón y la pila
- cola
- tabla hash
- lista enlazada
Comparación
- La diferencia entre cookie y sesión
- La diferencia entre
GET
y POST
- La diferencia entre
include
y require
- La diferencia entre
include_once
y require_once
- La diferencia entre Memcached y Redis
- Motores de almacenamiento MySQL y sus diferencias (definitivamente preguntarás sobre la diferencia entre MyISAM e Innodb)
- La diferencia entre HTTP y HTTPS
- La diferencia entre Apache y Nginx
- La diferencia entre definir() y const
- ¿Cuáles son las diferencias entre rasgos e interfaces y qué puntos débiles resuelven los rasgos?
- La diferencia entre Git y SVN
Base de datos
- mysql
- CRUD
- UNIRSE, UNIRSE IZQUIERDA, UNIRSE DERECHA, UNIRSE INTERIOR
- UNIÓN
- GRUPO POR + CONTAR + DONDE caso combinado
- Funciones MySQL de uso común, como: now(), md5(), concat(), uuid(), etc.
-
1:1
, 1:n
, n:n
son aplicables a cada escenario - Comprender qué es un desencadenante y describir un escenario de uso
- Métodos de optimización de bases de datos.
- Índice, índice conjunto (condición de golpe)
- Subbase de datos y subtabla (
水平分表
y垂直分表
) - Dividir
- Puede utilizar
explain
para analizar problemas de rendimiento de SQL y comprender el significado de cada parámetro.- Centrarse en comprender
type
, rows
y key
- Registro lento (para qué se utiliza, cuándo se necesita)
- MSSQL (comprender)
- Consultar los últimos 5 datos
- NOSQL
- Redis, Memcached, MongoDB
- Comparación y escenarios aplicables (la comparación se puede realizar a partir de las siguientes dimensiones)
- persistencia
- Admite múltiples tipos de datos
- CPU multinúcleo disponible
- Mecanismo de eliminación de memoria.
- ClústerClúster
- Soporte SQL
- Comparación de rendimiento
- el apoyo importa
- Escenarios de aplicación
- ¿Qué usaste para resolver qué problema antes y por qué lo elegiste?
Servidor
- Ver información como CPU, memoria, hora, versión del sistema, etc.
- buscar, grep para buscar archivos
- awk procesa texto
- Ver el directorio donde se encuentra el comando
- ¿Alguna vez has compilado PHP tú mismo? Cómo activar la función readline
- Cómo verificar el uso de memoria y CPU del proceso PHP
- Cómo agregar una extensión a PHP
- Modificar la ubicación de almacenamiento de la sesión PHP y modificar los parámetros de configuración de INI
- ¿Cuáles son los tipos de equilibrio de carga? Elija uno con el que esté familiarizado y explique sus principios.
- ¿Cómo se sincroniza la replicación maestro-esclavo de la base de datos MS? ¿Empujar o tirar? ¿Estará desincronizado? que hacer
- Cómo garantizar la disponibilidad de los datos para que, incluso si se eliminan, puedan restaurarse al nivel de minutos. Qué vas a hacer.
- Hay demasiadas conexiones a la base de datos, superando el valor máximo. Cómo optimizar la arquitectura. ¿Cómo se puede procesar cómodamente?
- 502 ¿Cuál es la posible razón? ¿Cómo solucionar problemas 504?
Arquitectura
- Operación y mantenimiento parcial (comprensión):
- Equilibrio de carga (Nginx, HAProxy, DNS)
- Replicación maestro-esclavo (MySQL, Redis)
- Redundancia y copia de seguridad de datos (principios incrementales y completos de MySQL)
- Monitoreo e inspección (dos dimensiones de supervivencia y disponibilidad de servicios)
- MySQL, Redis, Memcached Proxy, propósito y principio del clúster
- fragmentación
- Clúster de alta disponibilidad
- RAID
- Compilación de código fuente, ajuste de memoria.
- cache
- Siempre que encuentre situaciones en las que sea necesario el almacenamiento en caché en el trabajo, describa brevemente por qué.
- Buscar soluciones
- Ajuste de rendimiento
- Soluciones de monitorización en varias dimensiones.
- Solución de procesamiento centralizado de recopilación de registros
- internacionalización
- Diseño de base de datos
- solución estática
- Dibujar diagramas de arquitectura de aplicaciones PHP comunes
Estructura
- ThinkPHP (TP), CodeIgniter (CI), Zend (serie no orientada a objetos)
- Yaf, Phalcon (extensión C)
- Yii, Laravel, Symfony (serie pura programación orientada a objetos)
- Swoole, Workerman (marco de programación de red)
- El marco de comparación distingue varios puntos de dirección.
- ¿Es pura programación orientada a objetos?
- Método de carga de la biblioteca de clases (escriba su propia carga automática frente al estándar del compositor)
- Dirección de usabilidad (marco básico de CI, Laravel es un marco de alta eficiencia de desarrollo y cuántos componentes básicos hay)
- Caja negra (en comparación con el sistema de extensión C)
- Velocidad de carrera (por ejemplo: Laravel carga muchas cosas)
- Uso de memoria
patrón de diseño
- Patrón singleton (énfasis)
- Patrón de fábrica (clave)
- Patrón de observador (énfasis)
- Inyección de dependencia (énfasis)
- Patrón decorador
- modo proxy
- Modo combinado
Seguridad
- inyección SQL
- XSS y CSRF
- Filtrado de entrada
- Seguridad de cookies
- Deshabilitar las funciones
mysql_
- Al almacenar contraseñas de usuario en la base de datos, ¿qué se debe hacer para garantizar la seguridad?
- Código de verificación Problema de sesión
- ID de sesión segura (para que, incluso después de la interceptación, no se pueda simular ni utilizar)
- Seguridad de permisos de directorio
- Contiene archivos locales y remotos.
- Script PHP para cargar archivos
- La función
eval
ejecuta el script. -
disable_functions
desactiva funciones de alto riesgo - Usuarios y grupos independientes de FPM, otorgando permisos específicos a cada directorio.
- Comprenda la diferencia entre Hash y Encrypt
nivel avanzado
- Implementación subyacente de matriz PHP (HashTable + lista vinculada)
- Copiar según el principio de escritura, cuándo GC
- Modelo de proceso PHP, método de comunicación de proceso, diferencia de hilo de proceso
- ¿Cuál es el principio básico del rendimiento?
- Principio de preparación de DOP
- ¿Cuál es la diferencia entre PHP 7 y PHP 5?
- Escenarios aplicables de Swoole y métodos de implementación de rutinas
Interfaz
- Obtenga de forma nativa nodos y atributos DOM
- modelo de caja
- Archivos CSS, etiquetas de estilo, prioridad de atributos de estilo en línea
- Orden de ejecución de HTML y JS (página JS de arriba a abajo)
- Operaciones de matriz JS
- Tipo de juicio
- este alcance
- .map() y este análisis de escenario de uso específico
- Lectura y escritura de cookies
- Operaciones jQuery
- El número aleatorio de solicitudes Ajax (diferencia entre síncrono y asíncrono) prohíbe el almacenamiento en caché
- ¿Cuáles son los beneficios de Bootstrap?
- Soluciones N de solicitudes entre dominios
- Nueva tecnología (comprender)
- ES6
- Modular
- Embalar
- herramientas de construcción
- vue, reaccionar, paquete web,
- interfazmvc
- mejoramiento
- Límite de número simultáneo del navegador para un solo nombre de dominio
- Caché de recursos estático 304 (principio If-Modified-Since y Etag)
- Combine varios íconos pequeños y use tecnología de posicionamiento de posición para reducir las solicitudes
- Los recursos estáticos se combinan en una sola solicitud y se comprimen
- CDN
- Tecnología de carga retrasada de recursos estáticos y tecnología de precarga.
- mantener vivo
- Optimización de CSS en la cabecera y JS en la cola (principio)
Red
- dirección IP a INT
- ¿Qué significa 192.168.0.1/16?
- ¿Cuál es la función principal de DNS?
- La diferencia entre IPv4 y v6
Programación de red
- Proceso de protocolo de enlace de tres vías TCP
- Diferencias entre TCP y UDP, escenarios aplicables respectivamente
- ¿Hay alguna forma de garantizar la alta disponibilidad de UDP (comprender)?
- ¿Cómo resolver los paquetes adhesivos TCP?
- ¿Por qué se necesita un latido del corazón?
- ¿Qué es una conexión larga?
- ¿Cómo es seguro HTTPS?
- La diferencia entre flujos y datagramas.
- Hay varias formas de comunicarse entre procesos, ¿cuál es la más rápida?
- ¿Qué pasa
fork()
?
Capítulo API
- ¿Qué es RESTful?
- Cómo hacer que las solicitudes
DELETE
sean compatibles con navegadores que no admiten solicitudes DELETE
- ¿Cuál es la función principal de
APP_ID
APP_SECRET
de las API comunes? Explica el proceso - ¿Cómo garantizar que los datos de las solicitudes API no sean manipulados?
- La diferencia entre JSON y JSONP
- La diferencia entre cifrado de datos y verificación de firma
- ¿Qué es RSA?
- Cómo lidiar con la compatibilidad de la versión API
- Limitación de corriente (cubo de madera, cubo de fichas)
- ¿En qué escenarios se utiliza principalmente OAuth 2?
- JWT
- ¿Cuál es la diferencia entre
json_encode(['key'=>123]);
y return json_encode([]);
en PHP? como resolver
Puntos de bonificación
- Comprender las características del lenguaje común y su aplicabilidad a diferentes escenarios.
- PHP VS Golang
- PHP VS Python
- PHP CONTRA JAVA
- Aprenda sobre el desarrollo de extensiones PHP
- Competente en C
declaración
Esta información no está dirigida a ninguna empresa y no somos responsables del impacto que esta información pueda tener en usted.
Buena suerte
Referencias relacionadas
https://blog.csdn.net/l269798518/article/details/82428601