Le contenu présenté dans cet article concerne le résumé de l'entretien PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
L'article PHP rassemble quelques questions d'entretien de base et avancées courantes.
### Notions de base
- La différence entre Get et POST
- La différence entre les guillemets simples et les guillemets doubles
- La différence entre isset et vide
- echo , print_r La différence entre, print Et var_dump
- Qu'est-ce que MVC?
- Quelle est la différence entre le passage par valeur et le passage par référence ?
- La différence et la relation entre Cookie et Session
> 1. Le cookie est sur le client (navigateur) et la session est côté serveur
> Cookie
> 3. Les données enregistrées par un seul cookie ne peuvent pas dépasser 4K
> 4. La session est basée sur le cookie Si le navigateur désactive le cookie, la session sera également invalide (mais elle peut être réalisée dans d'autres. manières, telles que passer la session dans l'URL) ID)
### Chapitre avancé
- Brève description des principes de conception S.O.L.I.D
- - -
--- | --- | -- -
Principe de responsabilité unique | Une classe a et n'a qu'une seule raison de changement
Principe d'ouverture et de fermeture | it
Principe de substitution de Liskov | Les classes dérivées peuvent remplacer la classe de base par
Principe d'isolation d'interface | Utiliser une interface à granularité fine spécifique au client
Principe d'inversion de dépendance | implémentation
- La différence entre PHP7 et PHP5, Quelles nouvelles fonctionnalités spécifiques sont ajoutées ?
> 1. Performances multipliées par deux
> 2. Ajout d'un opérateur de comparaison combiné (<=>)
> 3. Ajout d'une déclaration de type scalaire et d'une instruction de type de retour
> 4. `try...catch` ajoute un jugement multi-conditions, et davantage d'erreurs peuvent être gérées avec des exceptions
> 5. Ajout de classes anonymes, désormais prises en charge 5/3/2018 8:45 :53 Prend en charge l'instanciation d'une classe anonyme via une nouvelle classe, qui peut être utilisée pour remplacer certaines définitions de classe complètes qui sont "gravées après utilisation"
- Pourquoi les performances de PHP7 sont-elles améliorées par rapport à PHP5 ?
> 1. Les octets de stockage variables sont réduits, ce qui réduit l'utilisation de la mémoire et améliore la vitesse de fonctionnement variable
> 2. La structure du tableau est améliorée et les éléments du tableau et la table de mappage de hachage sont alloués dans la même mémoire. Utilisation réduite de la mémoire et taux de réussite du cache CPU amélioré
> 3. Amélioration du mécanisme d'appel de fonction, réduction de certaines instructions et amélioration de l'efficacité d'exécution en optimisant le processus de transfert de paramètres
- Brève description PHP mécanisme de collecte des ordures (GC)
> Avant la version PHP 5.3, le comptage de références était utilisé pour gérer la mémoire. Toutes les variables PHP sont stockées dans un conteneur de variables appelé `zval`. sera +1, et lorsque le nombre de références de variable devient 0, PHP détruira la variable en mémoire.
>
> Cependant, pour les références circulaires en comptage de références, le décompte de références ne sera pas réduit à 0, ce qui entraînera des fuites de mémoire.
>
> Après la version 5.3, ces optimisations ont été apportées :
>
> 1. Le cycle de recyclage n'est pas entré à chaque fois que le nombre de références est réduit, uniquement le tampon racine est plein. Ensuite, démarrez le garbage collection ;
> 2. Peut résoudre le problème de référence circulaire
> 3. Peut toujours maintenir les fuites de mémoire en dessous d'un seuil.
Pour en savoir plus, vous pouvez consulter le manuel PHP, [Garbage Collection Mechanism](http://docs.php.net/manual/zh/features.gc.performance-considerations.php).
- Comment résoudre le problème de débordement de mémoire PHP
> 1. Augmentez l'allocation de mémoire du script PHP
> ; 3. Traitement par lots de données
- Quelle est la différence entre Redis et Memecached ?
> 1. Redis prend en charge des types de stockage de données plus riches, String, Hash, List, Set et Sorted Set. Memcached ne prend en charge que les structures clé-valeur simples.
> 2. Le stockage clé-valeur Memcached a une utilisation de la mémoire plus élevée que Redis qui utilise une structure de hachage pour le stockage clé-valeur.
> 3. Redis fournit des fonctions de transaction, qui peuvent garantir l'atomicité d'une série de commandes
> 4. Redis prend en charge la persistance des données et peut conserver les données en mémoire sur le disque
> utilise un seul cœur, tandis que Memcached peut utiliser plusieurs cœurs, donc en moyenne, Redis a des performances plus élevées que Memcached lors du stockage de petites données sur chaque cœur.
- Comment Redis parvient-il à la persistance ?
> 1. Persistance RDB, sauvegarde de l'état de Redis en mémoire sur le disque dur, ce qui équivaut à sauvegarder l'état de la base de données.
> 2. Persistance AOF (Append-Only-File), la persistance AOF enregistre la base de données en enregistrant l'état d'écriture de l'exécution du verrouillage du serveur Redis. Équivalent aux commandes reçues par la base de données de sauvegarde, toutes les commandes écrites sur AOF sont enregistrées au format du protocole Redis.
### Prévention de la sécurité Web
- Qu'est-ce que CSRF ? Comment l’empêcher ?
> CSRF (Cross-site request forgery) est généralement appelé « cross-site request forgery ». Cela peut être compris de cette façon : l'attaquant vole l'identité de l'utilisateur et trompe le serveur pour terminer la demande d'attaque.
Mesures de précaution :
1. Utilisez le code de vérification
2. Ajoutez un jeton à chaque demande et vérifiez
- Qu'est-ce que XSS ? Comment l’empêcher ?
> Afin d'atteindre l'objectif d'attaquer les utilisateurs de manière malveillante.
Il existe de nombreuses façons de prévenir les attaques XSS. L'essentiel est de ne jamais faire confiance aux données saisies par l'utilisateur et de toujours maintenir le filtrage des données utilisateur.
- Qu'est-ce que l'injection SQL ? Comment l’empêcher ?
> L'injection SQL signifie que l'attaquant trompe le serveur d'une certaine manière et, par conséquent, exécute du SQL qui ne devrait pas être exécuté.
Scénarios courants d'injection SQL
1. Une grande quantité de données indésirables est injectée dans la base de données, ce qui entraîne un fonctionnement lent et un crash du serveur.
2. Utiliser l'injection SQL pour exposer les données privées de l'application
Mesures de précaution :
1. Continuez à filtrer les données utilisateur
2. N'utilisez pas l'assemblage dynamique de SQL<.>3. Ajoutez une vérification d'entrée, telle qu'un code de vérification
4. Cryptez les données privées et interdisez le stockage de texte brut
### Lecture étendue
- [Résumé de l'entretien de PHPer sur 3 ans ]( http://coffeephp.com/articles/4?utm_source=laravel-china.org)
- [Mécanisme de collecte des ordures](http://docs.php.net/manual/zh/features.gc. performance-considérations.php)
- [S.O.L.I.D Conception orientée objet](https://laravel-china.org/articles/4160/solid-object-oriented-design-and-programming-oodoop-notes?order_by= créé_at&)
- [Une brève présentation sur IOC - expliquez ce qu'est IOC](http://www.cnblogs.com/DebugLZQ/archive/2013/06/05/3107957.html)
- [Le différence entre Redis et Memcached ](https://www.biaodianfu.com/redis-vs-memcached.html)
- [Attaque et défense CSRF](https://www.cnblogs.com/phpstudy2015-6/ p/6771239.html )
- [Attaque de script intersite XSS](
https://www.cnblogs.com/phpstudy2015-6/p/6767032.html#_label9)
Questions d'entretien PHP classiques 2017
Résumé des dernières questions d'entretien PHP classiques 2017
Résumé des questions d'entretien php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!