Meilleures pratiques d'entretien PHP en Chine
Version anglaise (tiers)
Cet entrepôt résume principalement les points de connaissances souvent demandés lors des entretiens PHP nationaux. Il ne fait que souligner les points de connaissance de manière ciblée, et vous devez trouver les informations pertinentes et les étudier systématiquement par vous-même. J'espère que vous comprendrez non seulement de quoi il s'agit, mais aussi pourquoi et les principes qui le sous-tendent.
Si vous disposez d'informations très systématiques sur les points de connaissances correspondants, vous êtes invités sur PR pour ajouter des liens. Il n'est pas recommandé d'utiliser fork, les informations seront mises à jour à tout moment.
Si vous vous trouvez actuellement dans les situations suivantes, ces informations vous conviennent très bien :
- J'ai l'intention de changer de métier, mais je ne sais pas par où commencer.
- La technologie a rencontré un goulot d’étranglement et je ne sais pas quoi apprendre.
- Prêt à apprendre PHP, mais vous ne savez pas quelle est la profondeur du domaine ?
Les bases
- Comprendre la plupart des fonctions de manipulation de tableaux
- La différence entre les fonctions de traitement de chaînes et les fonctions de la série mb_
- & Devis, combinés à une analyse de cas
- Différence entre == et ===
- La différence entre isset et vide
- Comprendre toutes les fonctions magiques
- Différences entre static, $this et self
- La différence entre privé, protégé, public et final
- Pensée POO
- Scénarios d'utilisation respectifs des classes abstraites et des interfaces
- Qu’est-ce qu’un trait ?
- Différences entre echo, print et print_r (distinguer la différence entre les expressions et les instructions)
- La différence entre __construct et __destruct
- manuel de fonction statique (distinction entre classes et fonctions), SOF
- Fonction __toString()
- La différence entre les guillemets simples
'
et les guillemets doubles "
- Codes d'état HTTP courants, que signifient-ils ?
- Que signifie 301 404 ?
Chapitre avancé
- Chargement automatique, principe Composer PSR-4, principe
- Partage de session, temps de survie
- Gestion des exceptions
- Comment parcourir chaque objet
- Comment mettre en tableau l'objet d'opération
$obj[key];
- Comment fonctionnaliser l'objet
$obj(123);
- Qu'est-ce que le rendement ? Parlons du scénario d'utilisation du rendement.
- Qu'est-ce que le PSR, PSR-1, 2, 4, 7
- Comment obtenir les adresses IP des clients et des serveurs
- IP du client
- IP du serveur
- Comprendre le concept de transmission transparente par proxy de l'adresse IP réelle
- Comment activer les invites d'exception PHP
- php.ini active
display_errors
et définit error_reporting
- Au moment de l'exécution, utilisez
ini_set(k, v);
pour définir dynamiquement
- Comment renvoyer une redirection 301
- [AVERTISSEMENT] Faites attention à ce que le script continue de s'exécuter après le réglage 301. Ne pensez pas que ce qui suit ne s'exécutera pas. Utilisez
die
ou exit
si nécessaire.
- Comment obtenir le chemin d'installation de l'extension
-
phpinfo();
Recherche de page extension_dir
- Ligne de commande
php -i |grep extension_dir
- Exécution
echo ini_get('extension_dir');
- Le principe de comparaison de chaînes et de nombres Faites attention au système octal commençant par 0 et au système hexadécimal commençant par 0x.
- Taille de comparaison de chaîne, de gauche (bit élevé) à droite, comparaison ASCII caractère par caractère
- Qu'est-ce que l'en-tête de nomenclature et comment le supprimer ?
-
0xEF
, 0xBB
, 0xBF
- Détecter, supprimer
- Qu'est-ce que MVC
- Principe de mise en œuvre de l'injection de dépendances
- Comment exécuter une commande de manière asynchrone
- Qu'est-ce qu'un moteur de modèles, quels problèmes il résout et ses principes de mise en œuvre (Smarty, Twig, Blade)
- Comment implémenter l'opération en chaîne
$obj->w()->m()->d();
- Utilisation des outils de débogage des performances Xhprof et Xdebug
- Quelle est la différence entre le tableau d'index
[1, 2]
et le tableau associatif ['k1'=>1, 'k2'=>2]
- Comment utiliser le cache et les scénarios
Pratique
- Étant donné un tableau bidimensionnel, trier selon un certain champ
- Comment déterminer le type de fichier téléchargé, par exemple : seul le téléchargement jpg est autorisé
- Échangez les valeurs de deux variables sans utiliser de variables temporaires
$a=1; $b=2;
=> $a=2; $b=1;
- Il y a des caractères tronqués dans strtoupper lors de la conversion du chinois. Comment le résoudre ?
php echo strtoupper('ab你好c');
- Différences entre les événements Websocket, Long-Polling et Server-Sent (SSE)
- Que signifie l'erreur « En-têtes déjà envoyés » et comment l'éviter
Algorithme
- Tri rapide (manuscrit)
- Tri à bulles (manuscrit)
- Recherche binaire (compréhension)
- Trouver l'algorithme KMP (comprendre)
- Première recherche en profondeur et en largeur (comprendre)
- Algorithme d'élimination du cache LRU (comprenez que Memcached utilise cet algorithme)
Structure des données (compréhension)
- Caractéristiques du tas et de la pile
- file d'attente
- Table de hachage
- liste chaînée
Comparaison
- La différence entre cookie et session
- La différence entre
GET
et POST
- La différence entre
include
et require
- La différence entre
include_once
et require_once
- La différence entre Memcached et Redis
- Moteurs de stockage MySQL et leurs différences (vous poserez certainement des questions sur la différence entre MyISAM et Innodb)
- La différence entre HTTP et HTTPS
- La différence entre Apache et Nginx
- La différence entre définir() et const
- Quelles sont les différences entre les traits et les interfaces et quels problèmes les traits résolvent-ils ?
- La différence entre Git et SVN
Base de données
- MySQL
- CRUD
- REJOINDRE, REJOINDRE À GAUCHE, REJOINDRE À DROITE, REJOINDRE INTERNE
- UNION
- GROUP BY + COUNT + WHERE combinaison cas
- Fonctions MySQL couramment utilisées, telles que : now(), md5(), concat(), uuid(), etc.
-
1:1
, 1:n
, n:n
sont applicables à chaque scénario - Comprendre ce qu'est un déclencheur et décrire un scénario d'utilisation
- Méthodes d'optimisation de base de données
- Index, index conjoint (condition de réussite)
- Sous-base de données et sous-tableau (
水平分表
et垂直分表
) - Partition
- Peut utiliser
explain
pour analyser les problèmes de performances SQL et comprendre la signification de chaque paramètre- Concentrez-vous sur la compréhension
type
, rows
et key
- Journal lent (à quoi sert-il, quand est-il nécessaire)
- MSSQL (comprendre)
- Interrogez les 5 dernières données
- NOSQL
- Redis, Memcached, MongoDB
- Comparaison et scénarios applicables (une comparaison peut être faite à partir des dimensions suivantes)
- persistance
- Prend en charge plusieurs types de données
- CPU multicœur disponible
- Mécanisme d'élimination de la mémoire
- ClusterCluster
- Prise en charge de SQL
- Comparaison des performances
- questions de soutien
- Scénarios d'application
- Qu’avez-vous utilisé pour résoudre quel problème auparavant et pourquoi l’avez-vous choisi ?
Serveur
- Afficher des informations telles que le processeur, la mémoire, l'heure, la version du système, etc.
- find, grep pour trouver des fichiers
- awk traite le texte
- Afficher le répertoire où se trouve la commande
- Avez-vous déjà compilé PHP vous-même ? Comment activer la fonction readline
- Comment vérifier l'utilisation de la mémoire et du processeur du processus PHP
- Comment ajouter une extension à PHP
- Modifier l'emplacement de stockage de la session PHP et modifier les paramètres de configuration INI
- Quels sont les types d’équilibrage de charge ? Choisissez-en un que vous connaissez et expliquez ses principes.
- Comment la réplication maître-esclave de la base de données MS est-elle synchronisée ? Pousser ou tirer ? Sera-t-il désynchronisé ? ce qu'il faut faire
- Comment garantir la disponibilité des données afin que même si elles sont supprimées, elles puissent être restaurées au niveau de quelques minutes. que ferez-vous.
- Il y a trop de connexions à la base de données, dépassant la valeur maximale. Comment optimiser l'architecture. Comment peut-il être traité facilement ?
- 502 Quelle est la raison possible ? Comment dépanner 504 ?
Architecture
- Exploitation et maintenance partielles (compréhension) :
- Équilibrage de charge (Nginx, HAProxy, DNS)
- Réplication maître-esclave (MySQL, Redis)
- Redondance et sauvegarde des données (principes incrémentiels et complets MySQL)
- Surveillance et inspection (deux dimensions de survie et de disponibilité du service)
- MySQL, Redis, Memcached Proxy, objectif et principe du cluster
- Partage
- Cluster haute disponibilité
- RAID
- Compilation du code source, réglage de la mémoire
- cache
- Chaque fois que vous rencontrez des situations où la mise en cache est nécessaire au travail, décrivez brièvement pourquoi.
- Rechercher des solutions
- Optimisation des performances
- Solutions de surveillance dans différentes dimensions
- Solution de traitement centralisé de collecte de journaux
- internationalisation
- Conception de base de données
- solution statique
- Dessiner des diagrammes d'architecture d'application PHP courants
Cadre
- ThinkPHP (TP), CodeIgniter (CI), Zend (série non-POO)
- Yaf, Phalcon (extension C)
- Yii, Laravel, Symfony (série pure POO)
- Swoole, Workerman (cadre de programmation réseau)
- Le cadre de comparaison distingue plusieurs points de direction
- Est-ce de la POO pure ?
- Méthode de chargement de la bibliothèque de classes (écrivez votre propre standard de chargement automatique par rapport au compositeur)
- Orientation de l'utilisabilité (cadre de base CI, Laravel est un cadre à haute efficacité de développement et combien de composants de base existe-t-il)
- Boîte noire (par rapport au système d'extension C)
- Vitesse d'exécution (ex : Laravel charge beaucoup de choses)
- Utilisation de la mémoire
modèle de conception
- Modèle singleton (souligné)
- Modèle d'usine (clé)
- Modèle d'observateur (souligné)
- Injection de dépendances (souligné)
- Modèle de décorateur
- mode proxy
- Mode combinaison
Sécurité
- Injection SQL
- XSS et CSRF
- Filtrage d'entrée
- Sécurité des cookies
- Désactiver les fonctions
mysql_
- Lors du stockage des mots de passe des utilisateurs dans la base de données, que faut-il faire pour garantir la sécurité ?
- Code de vérification Problème de session
- ID de session sécurisé (de sorte que même après interception, il ne puisse pas être simulé et utilisé)
- Sécurité des autorisations d'annuaire
- Contient des fichiers locaux et distants
- Script PHP de téléchargement de fichiers
- la fonction
eval
exécute le script -
disable_functions
désactive les fonctions à haut risque - Utilisateurs et groupes indépendants FPM, donnant des autorisations spécifiques à chaque répertoire
- Comprendre la différence entre Hash et Encrypt
Niveau avancé
- Implémentation sous-jacente du tableau PHP (HashTable + liste liée)
- Copier selon le principe d'écriture, quand aller au GC
- Modèle de processus PHP, méthode de communication de processus, différence de thread de processus
- Quel est le principe fondamental du rendement ?
- Principe de préparation du PDO
- Quelle est la différence entre PHP 7 et PHP 5
- Scénarios applicables à Swoole et méthodes de mise en œuvre de coroutines
L'extrémité avant
- Obtenez nativement les nœuds et les attributs DOM
- modèle de boîte
- Fichiers CSS, balises de style, priorité des attributs de style en ligne
- Ordre de passage HTML et JS (page JS de haut en bas)
- Opérations sur les tableaux JS
- Jugement de type
- cette portée
- .map() et cette analyse de scénario d'utilisation spécifique
- Lecture et écriture de cookies
- Opérations JQuery
- Requête Ajax (différence entre synchrone et asynchrone) un nombre aléatoire interdit la mise en cache
- Quels sont les avantages de Bootstrap ?
- Solutions N de requêtes inter-domaines
- Nouvelle technologie (comprendre)
- ES6
- Modulaire
- Paquet
- Construire des outils
- vue, réagir, webpack,
- frontendmvc
- optimisation
- Limite de nombres simultanés de navigateur pour un seul nom de domaine
- Cache de ressources statiques 304 (principe If-Modified-Since et Etag)
- Combinez plusieurs petites icônes et utilisez la technologie de positionnement pour réduire les demandes
- Les ressources statiques sont combinées en une seule requête et compressées
- CDN
- Technologie de chargement retardé des ressources statiques et technologie de préchargement
- rester en vie
- Optimisation du CSS en tête et du JS en queue (principe)
Réseau
- Adresse IP vers INT
- Que signifie 192.168.0.1/16 ?
- Quelle est la fonction principale du DNS ?
- La différence entre IPv4 et v6
Programmation réseau
- Processus de négociation à trois voies TCP
- Différences entre TCP et UDP, scénarios applicables respectivement
- Existe-t-il un moyen d'assurer la haute disponibilité UDP (comprendre)
- Comment résoudre les paquets persistants TCP ?
- Pourquoi un battement de coeur est-il nécessaire ?
- Qu'est-ce qu'une longue connexion ?
- Comment le HTTPS est-il sécurisé ?
- La différence entre les flux et les datagrammes
- Il existe plusieurs façons de communiquer entre les processus, laquelle est la plus rapide ?
- Que se passe-t-il
fork()
?
Chapitre API
- Qu'est-ce que RESTful
- Comment rendre les requêtes
DELETE
compatibles avec les navigateurs qui ne prennent pas en charge les requêtes DELETE
- Quelle est la fonction principale de
APP_ID
APP_SECRET
des API courantes ? Expliquer le processus - Comment s’assurer que les données des requêtes API ne sont pas falsifiées ?
- La différence entre JSON et JSONP
- La différence entre le cryptage des données et la vérification de la signature
- Qu’est-ce que le RSA
- Comment gérer la compatibilité des versions de l'API
- Limitation de courant (seau en bois, seau à jetons)
- Dans quels scénarios OAuth 2 est-il principalement utilisé ?
- JWT
- Quelle est la différence entre
json_encode(['key'=>123]);
et return json_encode([]);
Comment résoudre
Points bonus
- Comprendre les fonctionnalités communes du langage et leur applicabilité à différents scénarios.
- PHP contre Golang
- PHP contre Python
- PHP CONTRE JAVA
- En savoir plus sur le développement d'extensions PHP
- Maîtrise du C
déclaration
Ces informations ne visent aucune entreprise et nous ne sommes pas responsables de l’impact de ces informations sur vous.
Bonne chance
Références associées
https://blog.csdn.net/l269798518/article/details/82428601