Maison >développement back-end >tutoriel php >Questions d'entretien incontournables pour les entretiens PHP

Questions d'entretien incontournables pour les entretiens PHP

不言
不言original
2018-05-15 14:04:4321583parcourir

Le contenu de cet article est constitué des questions d'entretien qui doivent être posées lors de l'entretien PHP. Je le partage avec vous ici et je peux également donner quelques références à des amis dans le besoin. Jetons un coup d'œil ensemble

Connexe. recommandations : " Résumé des questions d'entretien PHP 2019 (collection)

1. Quelles sont les manières de positionner le CSS ? Et l'usage


position signifie "position" en anglais. Il est principalement utilisé pour réaliser le positionnement de éléments

Il existe trois types de positionnement en CSS :

position:fixed Positionnement fixe

position:relatvie Positionnement relatif

position:absolute Positionnement absolu

position:static Pas de positionnement particulier (valeur par défaut).

Remarque :

Lorsque vous utilisez des attributs de positionnement, assurez-vous de les utiliser en conjonction avec les coordonnées de positionnement !

gauche : indique à quelle distance se trouve l'élément positionné par rapport à la gauche

droite : indique le positionnement À quelle distance se trouve l'élément par rapport à la droite

en haut : indique à quelle distance se trouve l'élément positionné par rapport au haut

en bas : Indique à quelle distance se trouve l'élément positionné par rapport au bas

1 Positionnement fixe

Syntaxe :

position : fixe

Positionnement fixe, il est positionné par rapport à la

fenêtre du navigateur . Quelle que soit la manière dont la page défile, la position affichée par l'élément de positionnement fixe ne changera pas !

Caractéristiques :

Les éléments de positionnement fixes sont hors du flux de documents standard

Le niveau des éléments de positionnement fixes est supérieur aux éléments du flux de documents standard, donc positionnement fixe elements will Couvre les éléments du flux de documents standard

Élément de positionnement fixe, qui ne prend plus de place

Élément de positionnement fixe, sa position affichée ne défilera pas lorsque le navigateur défile

2 Positionnement relatif

Syntaxe :

position:relative;

Le positionnement relatif est relatif à "

soi original" Venez vous positionner !"

Caractéristiques :

Un élément positionné relativement ne se détache pas du flux de documents standard

Si un élément positionné relativement ne définit pas les coordonnées de positionnement, alors l'élément positionné relativement sera toujours dans sa position d'origine

Une fois que l'élément de positionnement relatif a défini les coordonnées de positionnement, il quittera une fosse dans sa ville natale

L'élément de positionnement relatif couvrira les éléments du flux de documents standard .

La valeur des coordonnées de positionnement d'un élément positionné relativement peut être un nombre négatif

Remarque :

Les éléments positionnés relativement laisseront un trou dans leur ville d'origine, ils sont donc généralement rarement laissé seul Utilisation, les éléments de positionnement relatif sont principalement utilisés en conjonction avec les éléments "

Positionnement absolu".

3 Positionnement absolu

Syntaxe :

position:absolute;

Qu'est-ce que le positionnement absolu ?

Les éléments positionnés de manière absolue sont positionnés par rapport à "

élément positionné ancêtre " !

Qu'est-ce qu'un élément positionné comme ancêtre ?

Élément absolument positionnéIl vérifiera d'abord si son élément parent a un ensemble d'attributs de positionnement

S'il existe un ensemble d'attributs de positionnement, alors il sera relatif à son parent élément pour effectuer le positionnement ;

Mais si son élément parent ne définit pas l'attribut de positionnement, alors il trouvera si l'élément de niveau supérieur de son élément parent a l'attribut de positionnement défini

Si. il est défini Positionnez l'élément de niveau supérieur par rapport à son élément parent

Mais s'il n'est pas défini, il continuera à rechercher un niveau au-dessus

Si ses éléments ancêtres ne définissent pas le. attribut de positionnement, alors il sera positionné par rapport à "

fenêtre du navigateur" !

①Lorsque vous définissez vous-même le positionnement absolu : Si l'élément parent ne définit pas l'attribut de positionnement, alors il sera positionné par rapport au corps

②Lorsque vous définissez vous-même le positionnement absolu : Si l'élément parent

définit également l'attribut de positionnement, alors il sera positionné par rapport à l'élément parent

③Lorsque vous définissez vous-même le positionnement absolu : Si l'élément parent

définit également l'attribut de positionnement , il sera alors positionné par rapport à l'élément parent. Positionnement de l'élément

2 Lorsque vous utilisez JQ pour envoyer une requête AJAX, quels paramètres doivent être configurés dans $.ajax ? ? Que veulent-ils dire ? ?


jQuery.ajax(options)

Description du paramètre :

options : il n'y a qu'un seul paramètre, qui doit être une donnée au format JSON Les attributs suivants peuvent être définis :

async : Qu'il soit asynchrone, vrai signifie asynchrone, faux signifie synchrone. La valeur par défaut est true

cache : s'il faut mettre en cache, true signifie mise en cache, false signifie ne pas mettre en cache, la valeur par défaut est true

complete : la fonction de rappel déclenchée lorsque le code d'état Ajax est 4

contentType : En-tête de requête, s'il s'agit d'une requête POST, ce paramètre est application/x-www-form-urlencoded

data : Le paramètre passé lors de l'envoi d'une requête Ajax, l'exigence est une chaîne

dataType : le type de valeur de retour attendu, qui peut être du type de données text/xml/json

success : la fonction de rappel déclenchée lorsque le code d'état Ajax est 4 et le code d'état de réponse est 200

type : la requête http envoyée, qui peut être get ou post

url : l'adresse URL de la requête

3 Quand utiliser la requête synchrone ? ? Quand utiliser les requêtes asynchrones ? ?


1. Qu'est-ce qu'une requête synchrone : (faux)

Une requête synchrone signifie qu'une fois la requête en cours émise, le navigateur ne peut rien faire et doit attendre.Une fois la demande terminée et les données renvoyées, le code suivant sera exécuté, ce qui équivaut à faire la queue. La personne précédente a terminé ses propres affaires avant que la personne suivante puisse continuer. C'est-à-dire que lorsque le code JS est chargé dans l'AJAX actuel, tout le code de la page cessera de se charger et la page sera dans un état d'animation suspendue. Une fois l'AJAX terminé, elle continuera à exécuter d'autres. codes et la page libérera l'état d'animation suspendu (c'est-à-dire lorsque ajax revient Après avoir reçu les données, la fonction suivante 2) est exécutée.
2. Qu'est-ce qu'une requête asynchrone : (vrai)
Une requête asynchrone signifie que pendant que la requête est effectuée, le navigateur peut continuer à faire n'importe quoi par Ajax. L'envoi de la requête n'affectera pas le chargement de la page et. le fonctionnement de l'utilisateur, ce qui équivaut à Sur les deux lignes, chacune suit son propre chemin sans s'influencer mutuellement.
Généralement, la valeur par défaut est vraie, asynchrone. Les requêtes asynchrones n'affectent pas du tout l'expérience utilisateur. Quelle que soit la durée de la requête, l'utilisateur se concentre sur l'exploitation d'autres contenus de la page et n'a pas envie d'attendre.

4. De quelles méthodes magiques dispose PHP ? ?


Les méthodes magiques incluent :

__construct(), constructeur de classe

__destruct(), destructeur de classe

__call (), appelez

__callStatic() lors de l'appel d'une méthode inaccessible dans l'objet, appelez

__get() lors de l'appel d'une méthode inaccessible en mode statique, obtenez Call

__set () lors de la définition d'une variable membre d'une classe, appelez

__isset() lors de la définition d'une variable membre d'une classe, appelez lorsque isset() ou empty() est appelé sur une propriété inaccessible

__unset(), appelé lorsque unset() est appelé sur une propriété inaccessible.

__sleep(), lorsque Serialize() est exécuté, cette fonction sera appelée en premier

__wakeup(), lorsque unserialize() est exécuté, cette fonction

__toString( ), la méthode de réponse lorsque la classe est traitée comme une chaîne

__invoke(), la méthode de réponse lors de l'appel d'un objet en appelant une fonction

__set_state(), lors de l'appel de var_export() à exporter une classe, Cette méthode statique sera appelée.

__clone(), appelez

__autoload() lorsque la copie de l'objet est terminée, essayez de charger une classe non définie

__debugInfo(), imprimez les informations de débogage requises

5. Décrivez brièvement la méthode get et la méthode post


① Différentes méthodes de transmission des paramètres

La requête get transmet les paramètres à la fin de l'url

La demande de publication passe les paramètres à la position où la ligne vide est demandée

② Les tailles des paramètres sont différentes

La valeur maximale des paramètres pour la requête get fait 2 Ko

La requête de publication n'a théoriquement aucune limite, mais dans l'application réelle, elle est affectée par le fichier php.ini, qui fait généralement 2M

③ Les types de paramètres transmis sont différent

La demande d'obtention ne peut transmettre que la chaîne

poster la demande, vous pouvez transmettre non seulement la chaîne mais aussi les données binaires

④ Sécurité différente

Relativement parlant, la sécurité de la demande de publication est légèrement plus élevée La requête get

a des paramètres d'en-tête de requête différents

6. Fonction Word en PHP


I fonction de réception

M : Instancier la classe de modèle de base

D : Instancier la classe de modèle personnalisée

U : Assembler l'adresse URL

7. classe abstraite et interface ? ?


1. L'interface est utilisée via le mot-clé Implements. L'utilisation de classes abstraites se fait via le mot-clé extends. Bien entendu, les interfaces peuvent également être héritées via le mot-clé extends.

2. Les variables membres (y compris les variables statiques de classe) ne peuvent pas être déclarées dans l'interface, mais les constantes de classe peuvent être déclarées. Différents types de variables membres peuvent être déclarés dans des classes abstraites pour implémenter l'encapsulation des données

3. Les interfaces n'ont pas de constructeurs, tandis que les classes abstraites peuvent avoir des constructeurs.

4. Les méthodes des interfaces sont de type public par défaut, tandis que les méthodes des classes abstraites peuvent être modifiées avec private, protected ou public.

5. Une classe peut implémenter plusieurs interfaces en même temps, mais une classe ne peut hériter que d'une seule classe abstraite.

Points communs : utilisé pour la spécification

Classe abstraite : ne peut pas être instanciée, ne peut être héritée ; déclarée via le mot-clé abstract ; la classe abstraite doit contenir au moins

Une méthode abstraite . Cette méthode abstraite n'a pas de corps de méthode et doit être remplacée par des sous-classes

.

Interface : déclarée via l'interface ; les constantes membres et les méthodes de l'interface sont toutes publiques, et la méthode n'a pas besoin d'écrire le mot-clé public ; l'interface peut implémenter l'héritage multiple

ExtraireL'éléphantclasseest uneespècepaspeut La classe qui est implémentée dans , uniquement peut être pour ses autres comme La Parentclasse est utilisée par. Les classes abstraites sont déclarées à l'aide des mots-clés abstract

. Les classes abstraites sont similaires aux classes ordinaires et contiennent des variables membres et des méthodes membres. La différence entre les deux est qu'une classe abstraite doit contenir au moins une méthode abstraite,

Les méthodes abstraites n'ont pas de corps de méthode, et cette méthode est intrinsèquement destinée à être remplacée par des sous-classes. Le format de la méthode abstraite est : abstract function abstractMethod();

L'interface est déclarée via le mot-clé interface Les constantes et méthodes membres de l'interface sont publiques. Vous n'avez pas besoin d'écrire le mot-clé public, et les méthodes de l'interface

n'ont pas non plus de corps de méthode. Les méthodes de l'interface sont également intrinsèquement destinées à être implémentées par des sous-classes. Les fonctions implémentées par les classes abstraites et les interfaces sont très similaires. La plus grande différence est que les interfaces peuvent implémenter l'héritage multiple. Le choix entre abstrait

ou interface dans une application dépend de l'implémentation spécifique.

Les sous-classes héritent de classes abstraites utilisant extends, et les sous-classes implémentent des interfaces à l'aide d'impléments.

8. Comment comprendre l'espace de noms ? ?

Prévenir les conflits de classes et de méthodes de fonction


L'espace de noms peut résoudre les deux problèmes suivants :

(1) Code et nom écrits par l'utilisateur conflits entre classes/fonctions/constantes internes PHP ou classes/fonctions/constantes tierces.

(2) Créer un alias pour un identifiant très long pour améliorer la lisibilité du code et réduire la quantité de code écrit.

9. Quelle version de PHP commence à prendre en charge les espaces de noms ? ?

ThinkPHP3.2


PHP commence à prendre en charge les espaces de noms dans les versions postérieures à 5.3.0.

10. Quelles extensions possède PHP ? ?

PDO : Une interface légère et cohérente définie par PHP pour accéder à la base de données.


Extension CURL

Extension GD

Memcache

Mysql

11. Que dois-je faire s'il y a un conflit dans SVN ? ?

Rôle SVN : développement collaboratif.


Intégration :

Mise à jour :

12. Comment comprendre MVC ? ?

MVC est un modèle de framework qui impose la séparation de l'entrée, du traitement et de la sortie de l'application. Les applications utilisant MVC sont divisées en trois composants principaux : le modèle, la vue et le contrôleur. Ils gèrent chacun leurs propres tâches.


MVC fait référence à un modèle de programmation dans la conception de logiciels. Dans ce mode, les opérations commerciales, l'affichage des données et l'interaction des données seront divisés en opérations

M : représente un modèle (modèle) spécifique, et sa fonction principale est d'interagir avec la base de données

V : Le représentant est une vue (vue) spécifique dont la fonction principale est d'interagir avec les utilisateurs pour les données

C : le représentant est un contrôleur spécifique (contrôleur) dont la fonction principale est de traiter une logique métier spécifique

Par Une application est complétée par le modèle, la vue et le contrôleur. La couche modèle est chargée de fournir les données. Les opérations liées à la base de données sont gérées par la couche modèle. la couche contrôleur est chargée de recevoir la demande, de la distribuer au modèle correspondant pour traitement, puis d'appeler la couche vue pour l'affichage.

13. Quels champs y a-t-il dans la table des produits ? ?

Identifiant du produit, nom du produit, numéro de produit, identifiant de la catégorie de produit, prix du marché, prix de notre magasin, vignette du produit, vignette du produit, s'il s'agit d'un vendeur chaud, 1 signifie vendeur chaud, 0 signifie non, que ce soit est recommandé, 1 signifie recommandation 0 signifie non recommandé, s'il s'agit d'un vendeur chaud 1 signifie nouveau produit 0 signifie non, ajout de temps, indiquant si le produit a été supprimé 1 normal 0 statut de suppression, si le produit est en vente 1 ventes 0 statut de produit disponible,

14. Même identifiant de produit Que dois-je faire si les attributs sont différents ? ?

Les attributs de la table produit sont stockés dans un ensemble, et la table attributaire

15 Cookie et session


Comparez les. deux, il y a Les points suivants sont différents :

1. Emplacement de la fonction : le cookie enregistre les informations utilisateur côté client, la session enregistre les informations utilisateur côté serveur

2. le cookie enregistre une chaîne, les objets sont enregistrés dans la session ;

3. Temps d'action : les cookies peuvent être stockés sur le client pendant une longue période et la session est fermée à la fin de la session ; >4. Généralement, les cookies enregistrent des informations utilisateur sans importance, les informations importantes sont enregistrées par session.

5. Les cookies sont divisés en deux types : les cookies de session et les cookies de fichier. Lorsque le navigateur est fermé, les données du cookie de session disparaissent. Le cookie de fichier stocke les données dans un fichier et définit le délai d'expiration. Après la fermeture du navigateur, si le délai d'expiration n'a pas expiré, les données existent toujours lorsque le navigateur est rouvert. .

16. Le principe de mise en œuvre du panier


Il existe deux situations :

1. L'utilisateur n'est pas connecté, et les données sont stockées dans un cookie, si l'utilisateur se connecte, les données du cookie seront transférées à la base de données.

2. Une fois l'utilisateur connecté, les données sont directement stockées dans la base de données.

17. Gestion des autorisations RBAC

Contrôle d'accès basé sur les rôles (Contrôle d'accès basé sur les rôles)

Cinq tables : deux tables intermédiaires admin, rôle, règle, Admin_role, role_rule

Trois tables : une table intermédiaire

Le processus permettant de contrôler si différents administrateurs peuvent accéder à une certaine méthode via le code est le contrôle des autorisations.


RBAC (Role-Based AccessControl, contrôle d'accès basé sur les rôles) signifie que les utilisateurs sont associés à des rôles et des autorisations. En termes simples, un utilisateur a plusieurs rôles et chaque rôle dispose de plusieurs autorisations. De cette manière, un modèle d'autorisation « permission de rôle d'utilisateur » est construit. Dans ce modèle, il existe généralement une relation plusieurs-à-plusieurs entre les utilisateurs et les rôles, ainsi qu'entre les rôles et les autorisations.

18. Comment comprendre le développement de l'interface

Téléchargez d'abord le fichier d'interface tiers,

19.Comment empêcher le bombardement de SMS avec le code de vérification SMS ? ?

Vérification du client JS

Numéro de téléphone portable limite du nombre de messages texte (compteur)

(1) Ajouter une vérification graphique

Les attaquants malveillants utilisent des outils automatisés pour appeler l'interface "

Dynamic SMS Acquisition" afin d'envoyer des messages SMS dynamiques. La raison principale est que les attaquants peuvent automatiquement effectuer un grand nombre d'appels vers l'interface. L'utilisation de codes de vérification d'image peut empêcher efficacement les appels automatiques d'outils. Autrement dit, avant que l'utilisateur n'effectue l'opération « Obtenir un SMS dynamique », un code de vérification d'image apparaîtra, demandant à l'utilisateur de saisir le code de vérification, puis le code de vérification. Le serveur enverra un SMS dynamique au téléphone mobile de l'utilisateur. Cette méthode peut résoudre efficacement le problème du bombardement de messages texte.

Le code de vérification graphique sécurisé doit répondre aux exigences de protection suivantes

-

Le processus de génération est sécurisé :L'image le code de vérification doit être présent Le côté serveur génère et vérifie ; - Le processus d'utilisation est sûr : il est valide une fois et est soumis à la demande de vérification de l'utilisateur - Le code de vérification lui-même est sûr : il n'est pas facile à utiliser ; reconnu par les outils d'identification et peut empêcher efficacement le craquage par force brute.

Exemple de vérification graphique :

(2) IP unique

Limitation du nombre de requêtes

Image la vérification est utilisée Une fois le code codé, cela peut empêcher les attaquants d'effectuer efficacement des appels automatiques à la fonction « 

SMS dynamiques » ;Cependant, si l'attaquant ignore l'erreur de vérification du code de vérification de l'image, un grand nombre des demandes d'exécution entraîneront une charge supplémentaire pour le serveur et affecteront l'utilisation commerciale. Il est recommandé que le côté serveur limite le nombre de requêtes pour une seule adresse IP dans une unité de temps. Une fois que le nombre de requêtes utilisateur (y compris le nombre de requêtes ayant échoué) dépasse le seuil défini, les requêtes adressées à l'IP seront suspendues pendant une période. de temps ; si la situation est particulièrement grave, l'IP peut être ajoutée à la liste noire, interdire les demandes d'accès depuis cette IP. Cette mesure peut limiter un grand nombre de requêtes provenant d'une adresse IP, empêcher les attaquants d'attaquer un grand nombre d'utilisateurs via la même IP, augmenter la difficulté des attaques et assurer le développement normal de l'activité.

(3) Limiter le délai d'envoi

Il est recommandé de limiter l'intervalle entre les envois répétés de messages texte dynamiques. Autrement dit, lorsqu'un seul utilisateur demande l'envoi d'un message texte dynamique, la restriction côté serveur ne peut être effectuée qu'après une certaine période. de temps (généralement 60 secondes ici). Deuxième requête SMS dynamique. Cette fonction peut protéger davantage l'expérience utilisateur et éviter les messages SMS malveillants de vérification du spam, y compris les attaques manuelles.

Processus complet d'utilisation du code de vérification dynamique par SMS

20. Comment télécharger des images de produits ? ?

21. Comment paramétrer la durée de validité de la séance ? ?

22. Rappels synchrones et rappels asynchrones pour paiement ? ?


Rappel synchrone spécifique et rappel asynchrone

Fonction de rappel synchrone : pour permettre à l'utilisateur d'accéder à la page marchand correspondante une fois le paiement effectué (pour garantir que le paiement de l'utilisateur est effectué. Ensuite, le paiement de l'utilisateur peut être traité correctement)

Fonction de rappel asynchrone : S'assurer que le commerçant traite correctement le paiement de l'utilisateur

23. Le processus de paiement d'Alipay ?


1. Demandez les informations du compte Alipay et obtenez l'APPID correspondant, la clé publique (donnez-la à Alipay) et la clé privée (conservez-la vous-même)

2. Téléchargez le document officiel, créez un test de démonstration localement, définissez l'APPID, l'adresse de rappel synchrone et asynchrone, la clé privée Alipay et d'autres informations dans config.php.

3. Créer une application en arrière-plan

4. Utiliser du code spécifiquement pour implémenter la fonction de paiement

24. Quel est le rôle des rappels asynchrones d'Alipay ? ?


Fonction de rappel asynchrone : assurez-vous que le commerçant gère correctement le paiement de l'utilisateur

1 Assurez-vous que la synchronisation n'est pas exécutée et qu'une demande unilatérale asynchrone est effectuée. ()

2. Résoudre le problème des commandes abandonnées

3. Relativement sûr

Fonction de rappel synchrone : lorsque l'utilisateur termine le paiement, il peut accéder au commerçant correspondant. (assurez-vous qu'une fois le paiement de l'utilisateur terminé, le paiement de l'utilisateur peut être traité correctement) (méthode get)

Fonction de rappel asynchrone : assurez-vous que le commerçant a correctement traité le paiement de l'utilisateur (méthode de publication)

25. Attributs multidimensionnels du module produit

26. Commandes Linux couramment utilisées

pour rechercher des fichiers :

trouver

-nom. pour rechercher en fonction du nom du fichier

-group : Rechercher selon le groupe auquel appartient le fichier

-user : Rechercher selon le propriétaire du fichier

commande Locate, utilisée pour récupérer des données

localiser le nom du fichier

commande df : afficher les informations sur le disque

-l  : afficher le disque localInformations sur le disque

-h  : Afficher les informations sur le disque en 1024 base

-H : Afficher les informations du disque en 1000 base

- T  : Afficher les informations sur le format du disque

-t  : Afficher les informations sur le disque dans le format spécifié

Nom d'utilisateur cd : Entrez pour

cd ~ : Rentrer à la maison

yy : Copier p : Coller

vim Nom du fichier : Afficher le fichier

27, code d'état hppt ? ?

1, 301 MovedPermanently : la ressource demandée a été définitivement déplacée vers un nouvel emplacement, et toute référence future à cette ressource doit utiliser l'un des nombreux URI renvoyés dans cette réponse. Redirection permanente.

2. 302 Déplacer temporairement : la ressource demandée répond temporairement à la demande depuis un URI différent. Étant donné qu'une telle redirection est temporaire , le client doit continuer à envoyer les futures requêtes à l'adresse d'origine

3 404 Not Found : la requête a échoué et la ressource demandée n'est pas disponible dans la requête. Trouvé sur le serveur. Il n'y a aucune information pour dire à l'utilisateur si cette situation est temporaire ou permanente

4. 200 OK : La requête a réussi, et l'en-tête de réponse ou le corps de données attendu par la requête sera renvoyé avec cette réponse. Ce code d'état apparaît lorsque


indique un état normal.

200 (Succès) : Le serveur a traité avec succès la demande. Généralement, cela signifie que le serveur a servi la page Web demandée
201 (Créé) : La demande a réussi et le serveur a créé la nouvelle ressource
202 (Accepté) : Le serveur a accepté la demande, mais elle ne l'a pas encore fait. été traité
203 (Informations non autorisées) : Le serveur a traité avec succès la demande, mais les informations renvoyées peuvent provenir d'une autre source
204 (Aucun contenu) : Le serveur a traité avec succès la demande, mais aucun contenu n'a été renvoyé
205 (Réinitialiser le contenu) : Le serveur a traité avec succès la requête, mais n'a renvoyé aucun contenu
206 (contenu partiel) : Le serveur a traité avec succès une partie de la requête GET
404 (introuvable) : Le serveur a pu ne trouve pas la page Web demandée
500 (Erreur interne du serveur) : Le serveur a rencontré une erreur et n'a pas pu terminer la demande

28 require et include


.

Les performances de l'instruction require() sont similaires à celles de include() , toutes incluent et exécutent le fichier spécifié.

La différence est : pour l'instruction include(), elle doit être lue et évaluée à chaque fois lors de l'exécution du fichier ; lorsqu'une erreur est signalée, elle n'empêchera pas l'exécution du code suivant ; , le fichier n'est traité qu'une seule fois (en fait, le contenu du fichier remplace l'instruction require()). Cela signifie que si le code est susceptible d'être exécuté plusieurs fois, il est plus efficace d'utiliser require(). D'un autre côté, si vous lisez un fichier différent à chaque fois que vous exécutez le code, ou si vous avez une boucle qui parcourt un ensemble de fichiers, utilisez l'instruction include()

include pour charger lorsqu'elle est utilisée

require est chargé au début

29 Comment compiler des extensions de programme PHP dans le système Linux ? ?

1. Recherchez le package compressé du logiciel et décompressez-le

2. Compilez make &&make install

3. Configurez php.ini

4.

30. Compréhension des transactions


Un ensemble logique d'opérations contient plusieurs composants. Ces parties forment un tout, et toutes les opérations sont réussies. échouez et revenez à l’état d’origine !

Avant d'exécuter l'instruction SQL, exécutez d'abord start transaction, qui ouvre une transaction (le point de départ de la transaction), puis vous pouvez exécuter plusieurs instructions SQL. Enfin, vous devez terminer la transaction. soumission, c'est-à-dire dans la transaction Les effets de plusieurs instructions SQL seront conservés dans la base de données. Ou rollback, ce qui signifie rollback, c'est-à-dire revenir au point de départ de la transaction, et toutes les opérations précédentes ont été annulées !

Quatre caractéristiques majeures des transactions (ACID)

Atomicité : Toutes les opérations dans une transaction sont des unités atomiques irréductibles. Toutes les opérations de la transaction s'exécutent avec succès ou échouent.

Cohérence : une fois la transaction exécutée, l'état de la base de données reste cohérent avec les autres règles métier. Par exemple, dans une entreprise de transfert, que la transaction soit exécutée avec succès ou non, la somme des soldes des deux comptes impliqués dans le transfert doit rester inchangée.

Isolement : l'isolement signifie que dans les opérations simultanées, différentes transactions doivent être isolées afin que chaque transaction simultanée n'interfère pas les unes avec les autres.

Durabilité : une fois la transaction soumise avec succès, toutes les opérations de données de la transaction doivent être conservées dans la base de données. Même si la base de données plante immédiatement après la soumission de la transaction, elle doit être garantie au redémarrage de la base de données. Récupérez les données via un mécanisme.

31.

PHP obtient l'heure actuelle time()

Php intercepte la chaîne : fonction substr

PHP trouve s'il y a une sous-chaîne dans le string :

32. Cinq fonctions de traitement de tableau associées ?

In_array : Déterminez si un élément existe dans le tableau

array_reverse() flashbacks les éléments du tableau, et la valeur de retour est le tableau après le flashback.

array_splice(array1,start,length,array2) supprime l'élément correspondant du tableau et le remplace par un nouvel élément

array_push() (push) ajoute un ou à la fin du array Plusieurs éléments,

array_pop() (pop) supprime le dernier élément du tableau

33 Quelles sont les méthodes de requêtes inter-domaines ? ?

JSONP

CORS

34. Combien y a-t-il de moteurs de stockage ? Quelle est la différence ? ?

Mysiam vs innodb


Le type MyISAM ne prend pas en charge le traitement avancé tel que le traitement des transactions, contrairement au type InnoDB.
La table de type MyISAM met l'accent sur les performances et sa vitesse d'exécution est plus rapide que le type InnoDB, mais elle ne fournit pas de prise en charge des transactions, tandis qu'InnoDB fournit une prise en charge des transactions et des fonctions de base de données avancées telles que les clés étrangères.
Créer un index : alerter le nom de la table ajouter un index (`nom du champ`)

35. Numéro de port par défaut de Redis ? Type de données ?


6379

Chaîne, hachage, liste (liste chaînée), set (set), zset (ensemble ordonné)

36, Cas pratiques Redis - ventes flash, compteurs, recommandations, valises de collecte

Ventes flash :


Utiliser la liste chaînée et l'opération pop de Redis, même pour beaucoup utilisateurs Lorsqu'ils arrivent en même temps, ils sont exécutés en séquence

1. Stockez maintenant l'inventaire de la table des produits dans la file d'attente

2. Démarrez l'achat précipité et définissez le cycle de cache de l'inventaire

3. Exécuter sur le client Opération unique, déterminer l'inventaire de la file d'attente redis avant de passer une commande

Compteur :

37. Quelle est la différence entre le lien de gauche et le bon lien dans MySQL ? ?


Jointure gauche : en fonction de la table de gauche, les enregistrements de la table de gauche apparaîtront dans les résultats de la requête. S'il n'y a pas d'enregistrements correspondants dans la table de droite, ils seront remplis avec null.

Jointure à droite : en fonction de la table de droite, les enregistrements de la table de droite apparaîtront dans les résultats de la requête. S'il n'y a pas d'enregistrement correspondant dans la table de gauche, ils seront remplis avec null.

Jointure interne : le statut des deux tables est égal et seuls les enregistrements qui remplissent les conditions de jointure apparaîtront dans les résultats de la requête.

38. Numéro de port par défaut de Memcache ? ? , la différence entre Memcache et Redis ??

27017,28017


Le cache Memcache stocke toutes les données en mémoire, en utilisant une table de hachage. est composé d'une clé et d'une valeur. Lorsque vous souhaitez accéder à une certaine valeur, vous recherchez d'abord la valeur, puis renvoyez le résultat. Memcache utilise l'algorithme LRU pour effacer progressivement les données expirées

39. .Mécanisme de verrouillage MySQL

40.Quels sont les aspects de l'optimisation de la base de données ? ?

1. Conception de la base de données

2. Création d'index

3. Séparation de la lecture et de l'écriture

4. Électricité Dans un projet d'entreprise, quand les stocks de produits changent-ils ? ?


1. Lors de l'ajout de produits, l'inventaire des produits augmente. Pour différents attributs, le tableau d'inventaire ajoute

2. Lorsque le paiement de la commande est réussi, l'inventaire sera réduit

3. Le paiement de la commande échoue, l'inventaire ne sera pas réduit

4. Retours des clients, augmentation de l'inventaire

42. Optimiser les requêtes MySQL

1. Évitez les requêtes de table complète et créez des index pour les champs correspondants

2. qui sont trop longs et interrogent par lots.

3. Il ne peut y avoir d'opération fonctionnelle après où

4 Le premier champ du principe de gauche comme doit avoir un index

Créer un index après où et un groupe. par

Recommandations associées :

Collecte et partage des questions d'entretien PHP

Enregistrement des questions fréquemment posées dans les entretiens 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn