Maison > Article > développement back-end > Collection complète de questions d'entretien PHP (à collectionner)
Recommandations associées : "Résumé des questions d'entretien PHP en 2019 (collection) "
Partie PHP de base
1.1. L'un des avantages majeurs du langage PHP est le multiplateforme.
La combinaison optimale de l'environnement d'exécution de PHP est Apache+MySQL+PHP. Cet environnement d'exécution peut être configuré sur différents systèmes d'exploitation (tels que Windows, Linux, etc.) et n'est donc pas limité par le système d'exploitation. cela s'appelle multiplateforme
2. Combien existe-t-il de méthodes de soumission de données dans le développement WEB ? Quelle est la différence ? Quelle méthode Baidu utilise-t-il ?
Méthodes Get et Post
Différences :
(1) Visibilité de l'URL : Les paramètres d'URL de la méthode Get sont visibles, la publication est invisible
(2 ) Mise en cache : la méthode get peut être mise en cache, mais la méthode post ne peut pas être mise en cache.
(3) Taille des données de transmission : La taille générale des données de transmission de get ne dépasse pas 2k-4k (selon le navigateur, la limite est différente, mais la différence n'est pas grande) ; les données de transmission de la demande sont configurées selon php.ini. Les paramètres du fichier peuvent également être infiniment grands.
(4) Transmission de données : la méthode get est utilisée pour transmettre les paramètres via l'épissage de la barre d'adresse URL, et la méthode post est utilisée pour transmettre les données via le corps.
Recommandations :
1. La méthode get est moins sécurisée que la méthode Post. Elle contient des informations confidentielles. Il est recommandé d'utiliser la méthode de soumission de données Post
2. . Il est recommandé d'utiliser Get pour la requête de données. Pour ajouter, modifier ou supprimer des données, il est recommandé d'utiliser la méthode Post
La méthode get utilisée par Baidu, car elle est visible à partir de son URL
3. Maîtriser quels frameworks et modèles de moteurs PHP, systèmes, etc.Frameworks : Il existe de nombreux frameworks, tels que CI, Yii, Laravel, etc. Ce que nous avons appris, c'est thinkphpMoteurs de modèles : il y en a aussi beaucoup, en les incluant dans les manuels scolaires, on apprend Ce que nous avons appris, c'est le système smarty : il en existe beaucoup, comme les produits de Kangsheng (uchome, supesite, discuzX, etc.), système Empire, DEDE (Dreamweaver), ecshop, etc. Ce que nous avons appris, c'est DEDECMS, Ecshop 4 Dites-moi quelles technologies web front-end vous maîtrisez ? Maîtrise de la mise en page Web DIV+CSS, JavaScript, du framework jQuery, du traitement d'images Photoshop5 Quels sont les avantages d'AJAX ? ajax est une technologie de transmission asynchrone qui peut être implémentée via javascript ou le framework JQuery pour obtenir un rafraîchissement partiel, ce qui réduit la pression sur le serveur et améliore l'expérience utilisateur. 6. La sécurité est cruciale pour un programme. Veuillez nous indiquer à quels mécanismes de sécurité il faut prêter attention lors du développement ? (1) Utilisez le code de vérification pour éviter l'inondation de la machine d'enregistrement. (2) Utilisez le prétraitement, la liaison des paramètres, le filtrage des paramètres et l'échappement pour empêcher l'injection SQL (3) Utilisez un jeton pour empêcher la soumission à distance et utilisez un jeton pour vérifier l'état de connexion. 7. Dans le développement du programme, comment améliorer l'efficacité opérationnelle du programme ? (1) Optimisez les instructions SQL, essayez de ne pas utiliser select * dans les instructions de requête, utilisez quel champ pour vérifier quel champ ; utilisez moins de sous-requêtes et pouvez être remplacé par des connexions de table ; (2) Créez un index dans la table de données. (3) Générer un cache pour les données fréquemment utilisées dans le programme (comme utiliser redis pour mettre en cache les données, comme utiliser ob pour statiquer des pages dynamiques, etc.). (4) Réalisez une réplication maître-esclave de MySQL et séparez la lecture et l'écriture. (Améliorez l'efficacité d'exécution de MySQL et la vitesse des requêtes) (5) Utilisez nginx pour l'équilibrage de charge. (Répartir uniformément la pression d'accès aux serveurs polymorphes) 8. PHP peut-il être utilisé avec d'autres bases de données ? PHP est la meilleure combinaison avec la base de données MYSQL. Bien entendu, PHP peut également être utilisé avec d'autres bases de données, telles que PostgreSql, SqlServer, Oracle, SqlLite, etc. 9. De nos jours, la structure à trois couches MVC est souvent utilisée en programmation. Quels sont les trois couches de MVC ? Les trois couches de MVC font référence à : le modèle commercial, la vue et le contrôleur. La couche contrôleur appelle le modèle pour traiter les données, puis mappe les données à la couche de vue pour l'affichage. Les avantages sont : ①La réutilisation du code peut être obtenue pour éviter la redondance du code ; ②M et V réalisent la séparation du code, de sorte que le même programme puisse utiliser différentes expressions10. ? JSON (JavaScript Object Notation) est un format d'échange de données léger. Le format de données json est fixe et peut être utilisé pour le transfert de données dans plusieurs langues. La fonction en PHP qui gère le format json est json_decode( string $json [, bool $assoc ] ), qui accepte une chaîne au format JSON et la convertit en variable PHP. Le paramètre json est le format de chaîne json. chaîne à décoder. assoc Lorsque ce paramètre est TRUE, il renverra un tableau au lieu d'un objet ; Json_encode : convertit les variables PHP au format json. 11. Quelles sont les différences entre Print, echo et print_r ? (1) echo et print peuvent effectuer une sortie. La différence est que echo n'est pas une fonction et n'a pas de valeur de retour, tandis que print est une fonction avec une valeur de retour, donc relativement parlant, ce sera plus rapide. si vous produisez simplement echo. Print_r est généralement utilisé pour imprimer des informations sur les variables, généralement utilisées dans le débogage. (2) print consiste à imprimer une chaîne (3) print_r consiste à imprimer un type composite tel qu'un objet tableau 12. Quelle est la différence entre SESSION et BISCUIT ? (1) Emplacement de stockage : la session est stockée dans le serveur, le cookie est stocké dans le navigateur (2) Sécurité : la sécurité de la session est supérieure à celle du cookie (3 ) session Il s'agit d'un « service de session ». Vous devez activer le service lorsque vous l'utilisez. Les cookies n'ont pas besoin d'être activés. Vous pouvez l'utiliser directement.
13. Fonctions couramment utilisées pour traiter les tableaux en PHP ? (Concentrez-vous sur les 'paramètres' et la 'valeur de retour' de la fonction)
(1) array() crée un tableau
(2) in_array() détermine si l'élément est dans le array
(3) count() renvoie le nombre d'éléments dans le tableau
(4) array_merge() fusionne plusieurs tableaux en un seul tableau
(5) array_diff( ) compare deux ou Différence entre deux tableaux ou plus
(6) array_intersect() Obtient l'intersection de deux tableaux ou plus
(7) array_keys() Obtient la liste des clés du tableau
(8) array_values() Récupère la liste des valeurs du tableau
(9) array_unique() Supprime les valeurs en double dans le tableau
(10) array_push() Insérer un ou plusieurs éléments dans le tableau La fin du tableau (push)
(11) array_pop() apparaît et renvoie le dernier élément du tableau array (push)
(12) array_walk() utilise une fonction définie par l'utilisateur pour tableau Le traitement de rappel est effectué pour chaque élément de
14. Quelles sont les fonctions courantes permettant à PHP de traiter les chaînes ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)
(1) trim() supprime les espaces et autres caractères des deux côtés de la chaîne
(2) strlen() Obtenez la longueur de la chaîne
(3) mb_strlen() Obtenez la longueur de la chaîne (l'encodage des caractères peut être spécifié, calculez la longueur pour les chaînes chinoises)
(4) substr() renvoie la partie chaîne ;
(5) remplacement de sous-chaîne str_replace()
(6) str_repeat () répète une chaîne
(7) is_string() détecte si la variable est une chaîne ;
(8) str_shuffle () mélange aléatoirement une chaîne
(9) sprintf() renvoie une chaîne générée sur la base d'une chaîne formatée (généralement utilisée pour obtenir des scores) Le nom de la table de données après la table)
(10) strstr() trouve la première occurrence de la chaîne
(11) ajoute des barres obliques inverses pour citer la chaîne
15 . Fonctions communes pour le temps de traitement en PHP ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)
(1) date() formate une heure/date locale.
(2) getdate() obtient des informations de date/heure.
(3) date_default_timezone_set() définit le fuseau horaire par défaut.
(4) date_default_timezone_get() renvoie le fuseau horaire par défaut.
(5) mktime() renvoie l'horodatage Unix d'une date.
(6) strtotime() Analyse toute description datetime de chaîne dans un horodatage Unix
(7) strftime() Formate l'heure/la date locale en fonction des paramètres régionaux
16. Fonctions couramment utilisées par PHP pour traiter les bases de données ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)
Veuillez vous référer au manuel PHP et lisez-le attentivement. Cet élément est très important
Quels sont les points communs. des fonctions permettant à PHP d'exploiter des fichiers ? (Concentrez-vous sur les 'paramètres' et la 'valeur de retour' de la fonction)
(1) Ouvrez le fichier fopen()
(2) Lisez le fichier fgets(); () est également Lire le fichier
(3) Écrire le fichier fwrite(); Remarque : file_put_contents() peut également écrire le fichier
(4) Fermer le descripteur de fichier fclose()
(5) Déplacer/renommer le fichier rename()
(6) Copier le fichier copy()
(7) Créer le fichier vim ou toucher
(8) Supprimer le fichier unlink()
(9) Obtenez l'heure à laquelle le fichier a été consulté pour la dernière fois fileatime()
(10) Obtenez l'heure à laquelle le fichier a été modifié pour la dernière fois filemtime()
(11) Obtenez la taille du fichier filesize()
(12) Obtenez le type de fichier filetype()
(13) Obtenez l'état des détails du fichier ( )
(14) Déterminer s'il s'agit d'un répertoire is_dir()
18. Fonctions couramment utilisées en PHP pour faire fonctionner des répertoires (dossiers) ? (Focus sur les 'paramètres' et la 'valeur de retour' de la fonction)
(1) Ouvrir le répertoire opendir()
(2) Lire le répertoire readdir()
( 3) Supprimez le répertoire rmdir()
(4) Fermez le handle du répertoire closeir()
(5) Créez le répertoire mkdir()
(6 ) Renvoie le répertoire dans le chemin Part dirname()
(7) Récupère le répertoire de travail actuel getcwd()
(8) Répertorie les fichiers et répertoires dans le chemin spécifié scandir()
2. Partie base de données
Quels sont les produits courants du système de gestion de bases de données relationnelles ?
Réponse : Oracle, SQL Server, MySQL, Sybase, DB2, Access, etc.
Quelles parties le langage SQL comprend-il ? Quels sont les mots-clés d’action pour chaque section ?
Réponse : Le langage SQL comprend quatre parties : la définition des données (DDL), la manipulation des données (DML), le contrôle des données (DCL) et la requête de données (DQL).
Définition des données : créer une table, modifier une table, supprimer une table, créer un index, etc.
Manipulation des données : sélectionner, insérer, mettre à jour, supprimer,
Contrôle des données : accorder, révoquer
requête de données : sélectionner
Quelles sont les contraintes d'intégrité incluses ?
L'intégrité des données fait référence à l'exactitude et à la fiabilité des données.
Comprend :
(1) Intégrité de l'entité : stipule que chaque ligne du tableau est une entité unique dans le tableau.
(2) Intégrité du domaine : cela signifie que les colonnes du tableau doivent répondre à certaines contraintes de type de données, qui incluent la plage de valeurs, la précision et d'autres réglementations.
(3) Intégrité référentielle : signifie que les données de la clé primaire et de la clé étrangère des deux tables doivent être cohérentes, garantissant la cohérence des données entre les tables et empêchant la perte de données ou la propagation de données dénuées de sens. bases de données.
(4) Intégrité définie par l'utilisateur : différents systèmes de bases de données relationnelles nécessitent souvent des contraintes particulières en fonction de leurs environnements d'application. L'intégrité définie par l'utilisateur est une contrainte pour une base de données relationnelle spécifique, qui reflète les exigences sémantiques auxquelles une application spécifique doit répondre.
Qu'est-ce qu'une transaction ? et ses caractéristiques ?
Transaction : il s'agit d'une série d'opérations de base de données et de l'unité logique de base des applications de base de données.
Caractéristiques :
(1) Atomicité : c'est-à-dire indivisibilité, soit toutes les transactions sont exécutées, soit aucune n'est exécutée.
(2) Cohérence ou cordabilité. L'exécution d'une transaction convertit la base de données d'un état correct à un autre état correct
(3) Isolement. Avant que la transaction ne soit correctement validée, toute modification apportée aux données effectuée par la transaction ne peut être transmise à aucune autre transaction,
(4) Persistance. Une fois qu'une transaction est soumise correctement, ses résultats seront enregistrés de manière permanente dans la base de données. Même s'il y a d'autres échecs après la soumission de la transaction, les résultats du traitement de la transaction seront enregistrés.
Compréhension simple : toutes les opérations d'une transaction réussissent ou échouent.
Qu'est-ce qu'un cadenas ?
La base de données est une ressource partagée utilisée par plusieurs utilisateurs. Lorsque plusieurs utilisateurs accèdent simultanément aux données, plusieurs transactions accèdent simultanément aux mêmes données dans la base de données. Si les opérations simultanées ne sont pas contrôlées, des données incorrectes peuvent être lues et stockées, détruisant la cohérence de la base de données.
Le verrouillage est une technologie très importante pour contrôler la concurrence des bases de données. Avant qu'une transaction n'agisse sur un objet de données, elle envoie d'abord une demande au système pour le verrouiller. Après le verrouillage, la transaction a un certain contrôle sur l'objet de données. Avant que la transaction ne libère le verrou, les autres transactions ne peuvent pas mettre à jour l'objet de données.
Types de verrous de base : les verrous incluent les verrous au niveau des lignes et les verrous au niveau des tables
Qu'est-ce qu'une vue ? Qu'est-ce qu'un curseur ?
Une vue est une table virtuelle qui a les mêmes fonctions qu'une table physique. Les vues peuvent être ajoutées, modifiées, vérifiées et exploitées. Une vue est généralement un sous-ensemble de lignes ou de colonnes d'une ou de plusieurs tables. Les modifications apportées à la vue n'affectent pas les tables sous-jacentes. Cela nous permet d'obtenir plus facilement des données que les requêtes multi-tables.
Curseur : il traite efficacement l'ensemble des résultats de la requête comme une unité. Le curseur peut être positionné sur une ligne spécifique de la cellule pour récupérer une ou plusieurs lignes de la ligne actuelle dans le jeu de résultats. Vous pouvez modifier la ligne actuelle du jeu de résultats. Les curseurs ne sont généralement pas utilisés, mais lorsque les données doivent être traitées une par une, les curseurs sont très importants.
Qu'est-ce qu'une procédure stockée ? Comment appeler ?
Une procédure stockée est une instruction SQL précompilée. L'avantage est qu'elle permet une conception modulaire, ce qui signifie qu'elle ne doit être créée qu'une seule fois et peut être appelée plusieurs fois dans le programme ultérieurement. Si une certaine opération nécessite plusieurs exécutions de SQL, l'utilisation de procédures stockées est plus rapide que l'exécution de simples instructions SQL. Les procédures stockées peuvent être appelées à l'aide d'un objet de commande.
Quel est le rôle de l'index ? Et quels sont ses avantages et ses inconvénients ?
Un index est une table de requête spéciale que le moteur de recherche de base de données peut utiliser pour accélérer la récupération des données. C'est très similaire à la table des matières d'un livre dans la vraie vie. Vous pouvez trouver les données souhaitées sans interroger l'intégralité du livre. Les index peuvent être uniques et la création d'un index vous permet de spécifier une seule ou plusieurs colonnes.
L'inconvénient est que cela ralentit la saisie des données et augmente également la taille de la base de données.
Comment comprendre les trois paradigmes de manière populaire ?
Première forme normale : 1NF est une contrainte atomique sur les attributs, qui nécessite que les attributs soient atomiques et ne peuvent pas être décomposés.
Deuxième forme normale : 2NF est une contrainte unique sur les enregistrements, qui nécessite des enregistrements ; Il existe une identité unique, c'est-à-dire l'unicité de l'entité
Troisième forme normale : 3NF est une contrainte sur la redondance des champs, c'est-à-dire qu'aucun champ ne peut être dérivé d'autres champs, et nécessite que le le champ n’est pas redondant. .
Qu'est-ce qu'une table de base ? Qu'est-ce qu'une vue ?
La table de base est une table qui existe indépendamment. En SQL, une relation correspond à une table.
Une vue est une table dérivée d'une ou plusieurs tables de base. La vue elle-même n'est pas stockée indépendamment dans la base de données, c'est une table virtuelle
Décrivez les avantages des vues ?
(1) Les vues peuvent simplifier les opérations des utilisateurs
(2) Les vues permettent aux utilisateurs de visualiser les mêmes données sous plusieurs angles
(3) Les vues fournissent une base de données dans une certaine mesure ; d'indépendance logique ;
(4) Les vues peuvent assurer la protection des données confidentielles.
Que signifie NULL ?
La valeur NULL représente UNKNOWN (inconnu) : elle ne représente pas "" (chaîne vide).
Toute comparaison avec une valeur NULL produira une valeur NULL.
Vous ne pouvez comparer aucune valeur à une valeur NULL et vous attendre logiquement à obtenir une réponse.
Utilisez IS NULL pour un jugement NULL
Quelles sont les différences entre les clés primaires, les clés étrangères et les index ?
La différence entre la clé primaire, la clé étrangère et l'index
Définition :
Clé primaire – identifie de manière unique un enregistrement, ne peut pas être dupliquée et ne peut pas être vide
Clé étrangère – la clé étrangère d'une table est la clé primaire d'une autre table. Les clés étrangères peuvent avoir des doublons et peuvent être des valeurs nulles
Index – ce champ n'a pas de valeurs en double, mais peut avoir une valeur nulle
Fonction :
Clé primaire – utilisée pour garantir l'intégrité des données
Clé étrangère – utilisée pour établir des connexions avec d'autres tables
Index – utilisé pour améliorer la vitesse de tri des requêtes
Numéro :
Clé primaire – il ne peut y avoir qu'une seule clé primaire
Clés étrangères – une table peut avoir plusieurs clés étrangères
Indices – une table peut avoir plusieurs index uniques
Que pouvez-vous utiliser pour garantir que les champs d'une table n'acceptent que des plages spécifiques valeur dans ?
La limite de contrôle, qui est définie dans la table de la base de données, est utilisée pour limiter la valeur saisie dans cette colonne.
Dites-moi quelles méthodes existe-t-il pour optimiser les instructions SQL ? (Choisissez-en quelques-uns)
(1) Dans la clause Where : la connexion entre les tables Where doit être écrite avant les autres conditions Where et les conditions qui peuvent filtrer le nombre maximum d'enregistrements doivent être écrites à la fin de la clause Where .HAVING en dernier.
(2) Remplacez IN par EXISTS et NOT IN par NOT EXISTS.
(3) Évitez d'utiliser des calculs sur les colonnes d'index
(4) Évitez d'utiliser IS NULL et IS NOT NULL sur les colonnes d'index
(5) Optimisez les requêtes, vous devriez essayer pour éviter les analyses de table complètes, envisagez d'abord de créer des index sur les colonnes impliquées dans Where et Trier par.
(6) Essayez d'éviter de porter des jugements de valeur nulle sur les champs de la clause Where, sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table
(7) Essayez d'éviter en utilisant la clause Where Effectuer des opérations d'expression sur les champs dans les clauses entraînera l'abandon par le moteur de l'utilisation des index et une analyse complète de la table
Quelle est la différence entre « sous-requête corrélée » et « sous-requête non corrélée » dans une instruction SQL ?
(1) La sous-requête non corrélée est une sous-requête indépendante de la requête externe. La sous-requête est exécutée une fois au total et la valeur est transmise à la requête externe après exécution.
(2) L'exécution de la sous-requête concernée dépend des données de la requête externe. Lorsque la requête externe exécute une ligne, la sous-requête est exécutée une fois.
Les sous-requêtes non corrélées sont donc plus efficaces que les sous-requêtes corrélées
Quelle est la différence entre char et varchar ?
char est un type de longueur fixe et varchar est un type de longueur variable.
Différence :
Dans une colonne de données de type char(M), chaque valeur occupe M octets. Si une longueur est inférieure à M, MySQL utilisera des espaces à sa droite. . (Les espaces remplis seront supprimés lors de l’opération de recherche).
Dans la colonne de données de type varchar(M), chaque valeur n'occupe que juste assez d'octets plus un octet pour enregistrer sa longueur (c'est-à-dire que la longueur totale est de L+1 octets).
Moteur de stockage MySQL, la différence entre myisam et innodb.
MyISAM est un moteur de stockage non transactionnel ; adapté aux applications avec des requêtes fréquentes ; aucun blocage ne prend en charge les transactions ; Convient aux petites données et aux petites concurrences
Innodb est un moteur de stockage qui prend en charge les transactions ; adapté aux applications avec de nombreuses opérations d'insertion et de mise à jour si la conception est raisonnable, il s'agit d'un verrouillage de ligne (la plus grande différence est ; au niveau du verrou) ; adapté aux données volumineuses, concurrence massive.
Quels sont les types de tables de données
MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV, etc.
MyISAM : Mature, stable, facile à gérer, rapide à lire. Certaines fonctions ne prennent pas en charge (transactions, etc.) les verrous au niveau de la table.
InnoDB : prend en charge les transactions, les clés étrangères et d'autres fonctionnalités, ainsi que le verrouillage des lignes de données. Il prend beaucoup de place et ne prend pas en charge l'indexation en texte intégral, etc.
La base de données MySQL est utilisée comme stockage du système de publication. Plus de 50 000 entrées sont ajoutées en une journée. L'exploitation et la maintenance devraient durer trois ans.
(1) Concevez une structure de base de données bien conçue, autorisez une redondance partielle des données et essayez d'éviter les requêtes de jointure pour améliorer l'efficacité.
(2) Sélectionnez le type de données de champ de table et le moteur de stockage appropriés, et ajoutez des index de manière appropriée.
(3) Effectuez la séparation lecture-écriture de la réplication maître-esclave MySQL.
(4) Divisez la table de données en tables pour réduire la quantité de données dans une seule table et améliorer la vitesse des requêtes.
(5) Ajouter un mécanisme de mise en cache, tel que redis, memcached, etc.
(6) Pour les pages qui ne changent pas fréquemment, générez des pages statiques (telles que le cache ob).
(7) Écrivez du SQL efficace. Par exemple, SELECT * FROM TABEL est remplacé par SELECT field_1, field_2, field_3 FROM TABLE.
Pour les sites Web à fort trafic, quelle méthode utilisez-vous pour résoudre le problème des statistiques de visites de pages ?
(1) Confirmez si le serveur peut prendre en charge le trafic actuel.
(2) Optimiser l'accès à la base de données.
(3) L'accès externe aux liens (hotlinking), tels que le hotlinking d'images, est interdit.
(4) Téléchargement du fichier de contrôle.
(5) Effectuez un équilibrage de charge et utilisez différents hôtes pour décharger le trafic.
(6) Utiliser un logiciel de statistiques de navigation pour comprendre le nombre de visites et effectuer une optimisation ciblée.
3. Partie orientée objet
1. Qu'est-ce que l'orienté objet (Répondez avec compréhension)
L'orienté objet est une idée basée on Orienté processus signifie que l'orienté objet implémente des fonctions via des objets, encapsule des fonctions dans des objets et permet aux objets d'implémenter des détails spécifiques.
L'orientation objet présente trois caractéristiques majeures : l'encapsulation, l'héritage et le polymorphisme.
Les langages OO purs actuels sont principalement Java et C# et C++ supportent également OO qui est orienté processus.
2. Décrivez brièvement les droits d'accès des modificateurs privés, protégés et publics.
privé : membre privé, accessible uniquement à l'intérieur de la classe.
protected : membres protégés, accessibles au sein de la classe et des classes héritées.
public : membres publics, entièrement publics, aucune restriction d'accès.
3. Quelle est la différence entre tas et pile ?
La pile est un espace mémoire alloué lors de la compilation, la taille de la pile doit donc être clairement définie dans votre code ;
Le tas est un espace mémoire alloué dynamiquement lors de l'exécution du programme ; la taille de la mémoire tas à allouer peut être déterminée en fonction des conditions d'exécution du programme.
4. La principale différence entre XML et HTML
Différentes exigences grammaticales :
(1) Insensible à la casse en HTML, distinction stricte en XML.
(2) En HTML, parfois ce n'est pas strict. Si le contexte indique clairement où se termine la clé de paragraphe ou de liste, vous pouvez omettre
ou des balises de fermeture similaires. En XML, il s'agit d'une structure arborescente stricte, et la balise de fermeture ne doit pas être omise.
(3) En XML, les éléments qui ont une seule balise sans balise de fermeture correspondante doivent se terminer par un caractère /. De cette façon, l'analyseur sait qu'il ne doit pas rechercher la balise de fermeture.
(4) En XML, les valeurs d'attribut doivent être placées entre guillemets. En HTML, les guillemets sont facultatifs.
(5) En HTML, vous pouvez avoir des noms d'attributs sans valeurs. En XML, tous les attributs doivent avoir des valeurs correspondantes.
(6) Dans les documents XML, les espaces ne seront pas automatiquement supprimés par l'analyseur mais le HTML filtre les espaces. Les balises
sont différentes :
(1) HTML utilise des balises inhérentes ; XML n'a pas de balises inhérentes.
(2) Les balises HTML sont prédéfinies ; les balises XML sont gratuites, personnalisables et extensibles.
Différentes fonctions :
(1) HTML est utilisé pour afficher les données ; XML est utilisé pour décrire les données et stocker les données, il peut donc être utilisé comme support de persistance ! HTML combine les données et l'affichage et affiche les données sur la page ; XML sépare les données et l'affichage. XML est conçu pour décrire des données, en mettant l'accent sur leur contenu. HTML a été conçu pour afficher des données, l'accent étant mis sur l'apparence des données.
(2) XML ne remplace pas HTML et HTML sont deux langages aux usages différents. XML n'est pas destiné à remplacer HTML ; en fait, XML peut être considéré comme un complément à HTML. Les objectifs de XML et HTML sont différents. L'objectif de conception de HTML est d'afficher des données et de se concentrer sur leur apparence, tandis que l'objectif de conception de XML est de décrire les données et de se concentrer sur leur contenu.
(3) La meilleure description de XML pourrait être : XML est un outil multiplateforme, indépendant du logiciel et du matériel, pour le traitement et la transmission d'informations.
(4) XML sera omniprésent dans le futur. XML deviendra l'outil le plus courant pour le traitement et la transmission de données.
5. Quelles sont les caractéristiques de l'orientation objet
Inclut principalement l'encapsulation, l'héritage et le polymorphisme. S'il s'agit de 4 aspects, ajoutez : abstraction.
Encapsulation :
L'encapsulation est la base pour garantir que les composants logiciels ont une excellente modularité. L'objectif de l'encapsulation est d'obtenir une cohésion élevée et un faible couplage des composants logiciels et d'éviter que l'interdépendance des programmes ne cause des problèmes. L'impact des changements futurs.
Héritage :
Lors de la définition et de l'implémentation d'une classe, vous pouvez le faire sur la base d'une classe existante. Le contenu est considéré comme son propre contenu, et certains. un nouveau contenu peut être ajouté ou la méthode d'origine peut être modifiée pour la rendre plus adaptée à des besoins particuliers. Il s'agit d'un héritage. L'héritage est un mécanisme permettant aux sous-classes de partager automatiquement les données et les méthodes de la classe parent. Il s'agit d'une relation entre les classes qui améliore la réutilisabilité et l'évolutivité du logiciel.
Polymorphisme :
Le polymorphisme signifie que le type spécifique pointé par la variable de référence définie dans le programme et l'appel de méthode émis via la variable de référence ne sont pas déterminés lors de la programmation, mais dans le programme. est déterminé pendant l'exécution qu'une variable de référence pointera vers un objet d'instance de quelle classe. L'appel de méthode émis par la variable de référence est une méthode implémentée dans quelle classe. Cela doit être déterminé lors de l'exécution du programme.
Abstraction :
L'abstraction consiste à découvrir les similitudes et les points communs de certaines choses, puis à classer ces choses dans une classe. Ce cours ne considère que les similitudes et les points communs de ces choses, et Will. ignorez les aspects qui ne sont pas pertinents par rapport au sujet et à l'objectif actuels et concentrez-vous sur les aspects qui sont pertinents par rapport à l'objectif actuel. Par exemple, si vous voyez une fourmi et un éléphant et que vous pouvez imaginer à quel point ils se ressemblent, c’est de l’abstraction.
6. Quels sont les concepts et les différences entre les classes abstraites et les interfaces ?
Classe abstraite : c'est une classe spéciale qui ne peut pas être instanciée et ne peut être utilisée que comme classe parent d'autres classes. Déclaré à l'aide du mot-clé abstract.
Interface : Il s'agit d'une classe abstraite spéciale et d'une classe spéciale déclarée à l'aide de l'interface.
Différences :
(1) Les opérations des classes abstraites sont implémentées via le mot-clé d'héritage extends, tandis que l'utilisation des interfaces est implémentée via le mot-clé Implements.
(2) Il y a des membres de données dans la classe abstraite, qui peuvent réaliser l'encapsulation de données, mais l'interface n'a pas de membres de données.
(3) Les classes abstraites peuvent avoir des constructeurs, mais les interfaces n'ont pas de constructeurs.
(4) Les méthodes des classes abstraites peuvent être modifiées avec les mots-clés private, protected et public (les méthodes abstraites ne peuvent pas être privées), tandis que les méthodes des interfaces ne peuvent être modifiées qu'avec le mot-clé public.
(5) Une classe ne peut hériter que d'une seule classe abstraite, et une classe peut implémenter plusieurs interfaces en même temps.
(6) Une classe abstraite peut avoir un code d'implémentation pour les méthodes membres, mais une interface ne peut pas avoir de code d'implémentation pour les méthodes membres.
7. Qu'est-ce qu'un constructeur, qu'est-ce qu'un destructeur et quelle est sa fonction ?
Le constructeur (méthode) est la première méthode automatiquement appelée par l'objet après la création de l'objet. Il existe dans chaque classe déclarée et constitue une méthode membre spéciale. Sa fonction est d'effectuer certaines tâches d'initialisation. En Php, __construct() est utilisé pour déclarer la méthode constructeur, et une seule peut être déclarée.
Le destructeur (méthode) est exactement l'opposé du constructeur. C'est la dernière méthode automatiquement appelée par l'objet avant sa destruction. Il s'agit d'un contenu nouvellement ajouté dans PHP5 qui est utilisé pour effectuer certaines opérations spécifiques avant de détruire un objet, comme la fermeture de fichiers et la libération de mémoire.
8. Comment surcharger les méthodes de la classe parent, avec des exemples
La surcharge signifie remplacer les méthodes de la classe parent, c'est-à-dire utiliser les méthodes de la sous-classe pour remplacer les méthodes héritées de la classe parent, également appelée réécriture de méthode.
La clé pour remplacer la méthode de la classe parent est de créer la même méthode dans la classe parent de la sous-classe, y compris le nom de la méthode, les paramètres et le type de valeur de retour. En PHP, seuls les noms des méthodes doivent être identiques.
9. Quelles sont les méthodes magiques couramment utilisées ? Par exemple
PHP stipule que les méthodes commençant par deux traits de soulignement (__) sont réservées comme méthodes magiques, il est donc recommandé que le nom de votre fonction ne commence pas par __ sauf si c'est pour surcharger une méthode magique existante.
__construct() est automatiquement appelée lors de l'instanciation d'une classe.
__destruct() est automatiquement appelée lorsque l'objet de classe est utilisé.
__set() est appelé lors de l'attribution d'une valeur à une propriété non définie.
__get() est appelé lorsque des propriétés non définies sont appelées.
__isset() sera appelé lors de l'utilisation de la fonction isset() ou empty().
__unset() sera appelé lors de l'utilisation d'unset().
__sleep() est appelé lors de la sérialisation à l'aide de Serialize.
__wakeup() est appelé lors de la désérialisation à l'aide de unserialize.
__call() est appelée lors de l'appel d'une méthode qui n'existe pas.
__callStatic() appelle une méthode statique qui n'existe pas.
__toString() est appelée lors de la conversion d'un objet en chaîne. Comme l'écho.
__invoke() Appelé lors de la tentative d'invocation d'un objet en tant que méthode.
__set_state() est appelé lors de l'utilisation de la fonction var_export(). Accepte un paramètre de tableau.
__clone() est appelée lors de l'utilisation de clone pour copier un objet.
10. Que représentent respectivement les trois mots-clés $this et self et parent ? Dans quelles situations est-il utilisé ?
$cet objet actuel
classe auto-actuelle
classe parent parent de la classe actuelle
$ceci est utilisé dans la classe actuelle, utilisez -> ; pour appeler les propriétés et les méthodes.
self est également utilisé dans la classe actuelle, mais il doit être appelé en utilisant ::.
parent est utilisé dans les cours.
11. Comment définir des constantes dans une classe, comment appeler des constantes dans une classe et comment appeler des constantes en dehors d'une classe.
Les constantes de la classe sont également des constantes membres. Une constante est une quantité qui ne change pas et est une valeur constante.
Définir des constantes à l'aide du mot-clé const.
Par exemple : const PI = 3.1415326;
Que ce soit à l'intérieur d'une classe ou à l'extérieur d'une classe, l'accès aux constantes et aux variables sont différents. Les constantes n'ont pas besoin d'instancier les objets. Le format de
pour accéder aux constantes est le nom de la classe plus le symbole de l'opérateur de portée (double deux-points) à appeler.
C'est-à-dire : nom de classe :: nom de constante de classe
12. Comment utiliser l'opérateur de portée ::? Dans quelles situations est-il utilisé ?
(1) Appeler des constantes de classe
(2) Appeler des méthodes statiques (méthodes de classe modifiées avec static)
13. Quel est le principe de fonctionnement de la méthode __autoload(). ?
La condition de base pour utiliser cette fonction magique est que le nom du fichier de classe doit être cohérent avec le nom de la classe.
Lorsque le programme est exécuté pour instancier une certaine classe, si le fichier de classe n'est pas introduit avant l'instanciation, la fonction __autoload() sera automatiquement exécutée.
Cette fonction trouvera le chemin du fichier de classe en fonction du nom de la classe instanciée. Lorsqu'il est déterminé que le fichier de classe existe dans le chemin du fichier de classe,
le fera. exécutez include ou require pour le charger. Entrez dans cette classe, puis le programme continue de s'exécuter. Si le fichier n'existe pas dans ce chemin, une erreur sera affichée.
L'utilisation de la fonction magique de chargement automatique élimine le besoin d'écrire de nombreuses fonctions include ou require.
4. Partie THINKPHP
1. Frameworks PHP courants
Réponse : thinkPHP, laravel, yii, ci, etc.
2. Comment comprendre le fichier à entrée unique dans TP ?
ThinkPHP adopte un mode d'entrée unique pour le déploiement et l'accès au projet Quelle que soit la fonction exécutée, un projet a une entrée unifiée (mais pas nécessairement la seule). Il faut dire que tous les projets partent du fichier d'entrée, et les fichiers d'entrée de tous les projets sont similaires.
Le fichier d'entrée comprend principalement :
(1) Définir le chemin du framework, le chemin du projet et le nom du projet (facultatif)
(2) Définir le mode de débogage et le mode d'exécution Constantes associées (facultatif)
(3) Charger le fichier d'entrée du framework (obligatoire)
3 Qu'est-ce que la superposition MVC dans ThinkPHP ? (Comprendre)
MVC est une méthode de séparation de la couche logique et de la couche de présentation d'une application. ThinkPHP est également basé sur le modèle de conception MVC. MVC n'est qu'un concept abstrait sans réglementation particulièrement claire. La superposition MVC dans ThinkPHP se reflète grossièrement dans :
Modèle (M) : La définition du modèle est complétée par la classe Model.
Contrôleur (C) : le contrôleur d'application (classe d'application du contrôleur principal) et le contrôleur d'action assument tous deux le rôle de contrôleur. Le contrôleur d'action complète le contrôle des processus métier, tandis que le contrôleur d'application est responsable du contrôle de la planification.
View (V) : il est composé d'une classe View et d'un fichier modèle. Le modèle est 100 % séparé et peut être prévisualisé et produit indépendamment.
Mais en fait, ThinkPHP ne s'appuie pas sur M ou V, ce qui signifie qu'il peut fonctionner sans modèles ni vues. Il ne repose même pas sur C. En effet, ThinkPHP dispose également d'un contrôleur principal au-dessus d'Action, le contrôleur d'application, qui est responsable de la planification globale de l'application. En l’absence de C, la vue V doit exister, sinon ce n’est plus une application complète.
En bref, le modèle MVC de ThinkPHP fournit uniquement un moyen de développement agile, plutôt que de s'en tenir au MVC lui-même.
4. Comment optimiser SQL ? (Les étudiants peuvent comprendre l'explication suivante, puis simplement énoncer la signification générale selon leur propre compréhension)
(1) Choisissez le bon moteur de stockage
MyISAM convient à certains besoins Idéal pour les requêtes -applications lourdes, mais pas très adaptées aux opérations d'écriture volumineuses. Même si vous avez juste besoin de mettre à jour un champ, la table entière sera verrouillée et les autres processus, même le processus de lecture, ne pourront pas fonctionner tant que l'opération de lecture n'est pas terminée. De plus, MyISAM est extrêmement rapide pour les calculs tels que SELECT COUNT(*).
La tendance d'InnoDB sera un moteur de stockage très complexe, et pour certaines petites applications, il sera plus lent que MyISAM. Mais il prend en charge le "verrouillage de ligne", ce sera donc mieux lorsqu'il y aura de nombreuses opérations d'écriture. De plus, il prend également en charge des applications plus avancées, telles que les transactions.
(2) Optimiser le type de données du champ
Rappelons un principe, plus la colonne est petite, plus elle sera rapide. Si une table ne comporte que quelques colonnes (comme une table de dictionnaire, une table de configuration), alors nous n'avons aucune raison d'utiliser INT comme clé primaire. Il sera plus économique d'utiliser MEDIUMINT, SMALLINT ou un TINYINT plus petit. Si vous n'avez pas besoin de suivre l'heure, il est préférable d'utiliser DATE plutôt que DATETIME. Bien entendu, vous devez également laisser suffisamment de place à l’expansion.
(3) Ajouter un index au champ de recherche
L'index ne signifie pas nécessairement la clé primaire ou le champ unique. S'il y a un champ dans votre table que vous utiliserez toujours pour la recherche, il est préférable de l'indexer. À moins que le champ que vous souhaitez rechercher soit un champ de texte volumineux, vous devez alors créer un index de texte intégral.
(4) Évitez d'utiliser Select. Plus les données sont lues dans la base de données, plus la requête deviendra lente. De plus, si votre serveur de base de données et votre serveur WEB sont deux serveurs indépendants, cela augmentera également la charge de transmission réseau. Même si vous souhaitez interroger tous les champs de la table de données, essayez de ne pas utiliser de caractères génériques. Faire bon usage des définitions d'exclusion de champs intégrées peut être plus pratique.
(5) Utilisez ENUM au lieu de VARCHAR
Le type ENUM est très rapide et compact. En fait, il contient un TINYINT, mais il apparaît sous la forme d'une chaîne. De cette façon, il devient tout à fait parfait d'utiliser ce champ pour faire des listes de choix. Par exemple, si les valeurs de champs tels que le sexe, l'origine ethnique, le département et le statut sont limitées et fixes, vous devez utiliser ENUM au lieu de VARCHAR.
(6) Utilisez NOT NULL autant que possible
Sauf si vous avez une raison très spécifique d'utiliser des valeurs NULL, vous devez toujours garder vos champs NOT NULL. NULL nécessite en fait un espace supplémentaire et votre programme sera plus complexe lorsque vous effectuerez des comparaisons. Bien sûr, cela ne signifie pas que vous ne pouvez pas utiliser NULL. La réalité est très compliquée et il y aura toujours des situations dans lesquelles vous devrez utiliser des valeurs NULL.
(7) Les tableaux de longueur fixe seront plus rapides
Si tous les champs du tableau sont de « longueur fixe », la table entière sera considérée comme « statique » ou « de longueur fixe » ". Par exemple, la table ne contient aucun champ des types suivants : VARCHAR, TEXT, BLOB. Tant que vous incluez l'un de ces champs, la table n'est plus une "table statique de longueur fixe" et le moteur MySQL la traitera d'une autre manière.
Les tables de longueur fixe amélioreront les performances car MySQL recherchera plus rapidement. Parce que ces longueurs fixes facilitent le calcul du décalage des données suivantes, la lecture sera naturellement plus rapide. Et si le champ n'est pas de longueur fixe, chaque fois que vous souhaitez trouver le suivant, le programme doit trouver la clé primaire.
De plus, les tables de longueur fixe sont plus faciles à mettre en cache et à reconstruire. Cependant, le seul effet secondaire est que les champs de longueur fixe gaspillent de l'espace, car les champs de longueur fixe nécessitent beaucoup d'espace, que vous les utilisiez ou non.
5. Comment comprendre le comportement dans l'architecture ThinkPHP 3.0 (noyau + comportement + pilote) ?
(1) Core : C'est le code de base du framework, une chose indispensable. TP lui-même est un framework développé sur la base de l'idée MVC.
(2) Comportement : le comportement joue un rôle décisif dans l'architecture de la nouvelle version de ThinkPHP. Au-dessus du noyau du système, il existe de nombreux bits d'extension de balise, et chaque position de balise peut exécuter sa propre fonction dans. tour à tour un comportement indépendant. C'est ainsi que sont nées les extensions comportementales, et de nombreuses fonctions du système sont également complétées par des extensions comportementales intégrées. Toutes les extensions comportementales sont remplaçables et additives, constituant ainsi la base de l'assemblage du cadre sous-jacent.
(3) Pilote : pilote de base de données, pilote de cache, pilote de bibliothèque de balises et pilote de moteur de modèles, ainsi que des extensions de classe externes.
6. Quelle est la configuration conventionnelle ?
La configuration dite conventionnelle est le propre fichier de configuration du framework. Ce fichier se trouve dans convention.php dans le répertoire principal du framework et le contenu de configuration est le suivant. Étant donné que ce fichier est un fichier de configuration fourni avec le framework, dans le processus de développement actuel, il nous sert principalement d'exemple de référence. Nous modifions rarement le contenu de configuration de ce fichier, et configurons le plus souvent les champs en fonction des besoins. selon la convention Définitions et annotations pour personnaliser le contenu de configuration dans les modules ou Common.
7. Qu'est-ce que l'injection SQL ? (Comprendre)
L'attaque par injection SQL est l'une des méthodes courantes utilisées par les pirates pour attaquer les bases de données.
Certains programmeurs ne jugent pas la légalité des données saisies par l'utilisateur lors de l'écriture du code. L'injecteur peut saisir un code de requête de base de données dans le formulaire et le soumettre, et le programme rassemblera les informations soumises pour générer un SQL complet. instruction, le serveur est amené à exécuter la commande SQL malveillante. L'injecteur obtient avec succès certaines données sensibles en fonction des résultats renvoyés par le programme et contrôle même l'ensemble du serveur. Il s'agit d'une injection SQL.
8. Comment ThinkPHP empêche-t-il l'injection SQL ? (Comprendre)
(1) Essayez d'utiliser des tableaux pour les conditions de requête, ce qui est un moyen plus sûr
(2) Si vous devez utiliser des conditions de requête de chaîne, utilisez le mécanisme de prétraitement ; 🎜>
(3) Utilisez les paramètres de liaison (4) Activez la vérification du type de champ de données et vous pouvez forcer la conversion des types de données numériques (la vérification du type de champ est obligatoire depuis la version 3.1)(5) Utiliser des mécanismes de vérification automatique et de complétion automatique pour personnaliser le filtrage spécifique à l'application
(6) Utiliser des mécanismes de vérification de type de champ, de vérification automatique et de complétion automatique pour éviter la saisie de données malveillantes.
9. Comment activer le mode débogage ? Quels sont les avantages du mode débogage ?
L'activation du mode débogage est très simple. Il vous suffit d'ajouter une ligne de code de définition constante au fichier d'entrée :
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define(‘APP_DEBUG’, true);
Les avantages du mode débogage sont : Activer la journalisation, toute information d'erreur. et les informations de débogage seront enregistrées en détail, pour faciliter le débogage ; désactivez la mise en cache du modèle, les modifications du modèle peuvent prendre effet immédiatement ; enregistrez les journaux SQL pour faciliter l'analyse SQL, les modifications des champs de la table de données ne seront pas affectées par le cache ; vérifiez strictement le cas du fichier (même sur les plates-formes Windows) pour vous aider à avancer dans les problèmes de déploiement de Discover Linux ; il peut être facilement utilisé à différentes étapes du processus de développement, y compris le développement, les tests et la démonstration, et dans toute autre situation nécessaire. Différents modes d'application peuvent être. configuré avec des fichiers de configuration de projet indépendants.
10. Quels modes de configuration sont pris en charge dans TP ? Priorité?
Configuration conventionnelle->Configuration de l'application->Configuration du mode->Configuration du débogage->Configuration de l'état->Configuration du module->Configuration étendue->Configuration dynamique
Ci-dessus Il s'agit de l'ordre de chargement des fichiers de configuration. Comme la configuration ultérieure écrasera la configuration précédente du même nom (si elle n'est pas efficace), la priorité est de droite à gauche.
11. Quels sont les modèles d'URL dans TP ? Quelle est la valeur par défaut ?
ThinkPHP prend en charge quatre modes d'URL, qui peuvent être définis en définissant le paramètre URL_MODEL, notamment le mode normal, PATHINFO, REWRITE et le mode de compatibilité.
Le mode par défaut est : mode PATHINFO, définissez URL_MODEL sur 1
12 Quelles sont les variables système dans TP ? Comment obtenir les variables système ?
(1) Variables système : variables SERVER, _SERVER, SERVER, _ENV, $_POST, $_GET, REQUEST, _REQUEST, REQUEST, _SESSION et $_COOKIE
(2) Obtenir les variables système :
{KaTeX parse error: Expected 'EOF', got '}' at position 25: …ver.script_name}̲ // 输出_SERVER[‘SCRIPT_NAME’]变量 {KaTeX parse error: Expected 'EOF', got '}' at position 22: …session.user_id}̲ // 输出_SESSION[‘user_id’]变量 {KaTeX parse error: Expected 'EOF', got '}' at position 21: ….get.pageNumber}̲ // 输出_GET[‘pageNumber’]变量 {KaTeX parse error: Expected 'EOF', got '}' at position 18: …ink.cookie.name}̲ // 输出_COOKIE[‘name’]变量
13. Quelle est la différence entre la fonction D et la fonction M dans le framework ThinkPHP ?
La méthode M instancie le modèle sans que l'utilisateur définisse une classe de modèle pour chaque table de données. La méthode D peut détecter automatiquement la classe de modèle personnalisée. Si une classe de modèle personnalisée existe, la classe de modèle personnalisée sera instanciée. elle n'existe pas, la méthode M sera automatiquement appelée pour instancier la classe de base Model. Dans le même temps, les modèles instanciés ne seront pas instanciés à plusieurs reprises (mode cas unique).
5. Moteur de modèles intelligent1. Quelle est la différence entre la compilation et la mise en cache ?
Le processus de compilation de smarty consiste à prendre le modèle et à remplacer les balises à l'intérieur par le code php correspondant. C'est la compilation de smarty. En fait, c'est le processus de mélange de php et de html.
Besoins de mise en cache de Smarty S'il est activé manuellement, le cache de Smarty exécutera le fichier compilé et générera une page html statique en même temps. Lorsque vous y accéderez à nouveau, vous accéderez au fichier html, donc en termes d'efficacité, c'est le cas. plus haut. 2. Qu'est-ce que smarty ? Quels sont les avantages de Smarty ?Smarty est un moteur de modèles PHP écrit en PHP. Le but est de séparer les programmes PHP des artistes, afin que les programmeurs puissent les modifier. le contenu logique du programme n'affectera pas la conception de la page de l'artiste, et lorsque l'artiste re-modifie la page, cela n'affectera pas la logique du programme. Ceci est particulièrement important dans les projets de collaboration multi-personnes. (Il est également facile de développer des programmes multi-styles) Avantages de Smarty (1) Rapide : par rapport aux autres moteurs de modèles. (2) Type compilé : un programme écrit en smarty doit être compilé dans un fichier PHP de technologie non-modèle au moment de l'exécution (3) Technologie de mise en cache : elle peut convertir ce que l'utilisateur voit finalement Les fichiers HTML sont mis en cache dans une page HTML statique (4) Technologie de plug-in : smarty peut personnaliser les plug-ins. Lieux où smarty ne convient pas (1) Contenu qui doit être mis à jour en temps réel. Par exemple, comme l'affichage des stocks, il doit mettre à jour les données fréquemment(2)小项目。小项目因为项目简单而美工与程序员兼于一人的项目
3、在模板中使用{$smarty}保留变量
{KaTeX parse error: Expected 'EOF', got '}' at position 16: smarty.get.page}̲ //类似在php脚本中访问_GET[page] {KaTeX parse error: Expected 'EOF', got '}' at position 16: smarty.cookies.}̲ {smarty.post.} {KaTeX parse error: Expected 'EOF', got '}' at position 16: smarty.session.}̲ {smarty.server.}
在模板中访问php中的变量
5、变量调解器
2018PHP经典面试题大全汇总(更新)-PHP面试题
6、php查询mysql数据库时,查询中文结果时出现的乱码。怎么解决?
(1)文件meta(设置浏览器解析的时候)
(2)连接数据库时编码设定
(3)PHP文件中使用header函数确定编码
7、缓存机制
如果开启了缓存,smarty同时生成一份静态的html页面,如果在设定的时间没有过期,再次访问的时候,你访问的就是是html文件了,减少了读取数据库,所以就效率来说,要高一些。
8、smarty的赋值和载入模板
$Smarty->assign(name,value) $Smarty->display(‘index.html’)
9、marty模板技术的用途是什么?
为了php与html分开,美工和程序员各司其职,互不干扰。
10、smarty配置主要有哪几项?
(1)引入smarty.class.php;
(2) 实例化smarty对象;
(3)重新修改默认的模板路径;
(4)重新修改默认的编译后文件的路径;
(5)重新修改默认的配置文件的路径;
(6)重新修改默认的cache的路径。
(7) 可以设置是否开启cache。
(8)可以设置左侧和右侧定界符。
11、smarty在使用过程中需要注意哪些细节?
Smarty是基于MVC概念的一种模板引擎,它将一个页面程序分成了两部分来实现:即视图层和控制层,
也就是说smarty技术将用户UI与php代码分离开。
这样程序员和美工各司其职,互不干扰。
12、smarty运用过程中要注意以下几个问题:
(1)正确配置smarty。主要要实例化smarty对象,配置smarty模板文件的路径;
(2)php页面中使用assign赋值 和display显示页面;
(3)smarty模板文件中不允许出现php代码段,所有的注释,变量,函数都要包含在定界符内。
六、二次开发系统(DEDE、ecshop)
1、对二次开发的理解
二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。
2、MVC
Model(模型)数据处理。
View(视图) 模板显示。
Controller(控制器) 控制流程。
MVC的概念是什么?各层主要做什么工作?
MVC(即模型-视图-控制器)是一种软件设计模式或者说编程思想。
M指Model模型层,V是View视图层(显示层或者用户界面),C是Controller控制器层。
使用mvc的目的是实现M和V分离,从而使得一个程序可以轻松使用不同的用户界面。
在网站开发中,
模型层一般负责对数据库表信息进行增删改查,
视图层负责显示页面内容,
控制器层在M和V之间起到调节作用,控制器层决定调用哪个model类的哪个方法,
执行完毕后由控制器层决定将结果assign到哪个view层。
3、二次开发程序安装后访问时候出现一些警告以及错误
根据错误,来修改服务器配置参数以及百度
4、功能,模板的更换,功能的添加修改
其实也就是面向对象的应用 用,以及模板的更换类似smarty的使用
5、用过哪些二次开发的东西?
Dedecms phpcms ecshop,基本这些的东西如果基础好了 学习起来都是没问题的。
6、像php做一次开发好,还是二次开发好?
一般中小企业都用cms系统二次开发,都是为了效率。当然如果想一次开发也行,会用框架而且时间充足的话就可以了,大企业都是团队来开发的,杜绝版权问题。
7、二次开发过程中很多类与类之间进行之间的方法访问,是通过什么方式传递的?
不是类继承而是对象组合,把实例化好的对象通过global传递进去
8、dedecms如果更换目录,后台某项就进不去了如何解决?
后台核心设置中修改成现在的 项目目录名称
9、dedecms中自定义模型的理解?
在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。
当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点。
相当于我们自动添加了表结构,适应现在当前需求的变化
10、dede中概念,设计和使用模板,必须要理解下面几个概念
(1)板块(封面)模板:
指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎去解析后才输出内容或生成特定的文件。
(2)列表模板:
指网站某个栏目的所有文章列表的模板,一般用 “list_识别ID.htm” 命名。
(3) 档案模板:
表示文档查看页的模板,如文章模板,一般用 “article_识别ID.htm” 命名。
(4) 其它模板:
一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。
11、dede中几种标签的使用?
列表 内容 等标签 只能在其本范围内使用,列表标签只能在列表中使用,内容标签只能在内容标签中使用。
全局标签能在所有页面中使用
12、熟悉常用类库
(例如:dedesql.class.php);熟悉系统函数库(common.func.php);熟悉自定义函数库(extend.func.php);熟悉前台入口文件(common.inc.php)
七、微信公众平台开发
1、微信运行机制
公众号与php之间用什么语言通信:Xml
Weixin.php中是如何接收公众号数据的:
$postStr = $GLOBALS[“HTTP_RAW_POST_DATA”];//接收数据 XML数据
2、消息类型
微信目前提供了7种基本消息类型,分别为:
(1)文本消息(text);
(2)图片消息(image);
(3)语音(voice)
(4)视频(video)
(5)地理位置(location);
(6)链接消息(link);
(7)事件推送(event)
类型。掌握不同的消息类型发送时的数据传递格式
3、将整个文件读入一个字符串的函数是
File_get_contents
4、常用函数
把xml数据解析成对象的函数是
simplexml_load_string( )
将字符串转换为数组的函数是___ explode_________,将数组转化为字符串的函数是____implode________.
编码 URL 字符串的字符串是____urlencode________.
5、Sprintf函数的作用
这个都是可以查手册的。
6、微信公众号出现无法提供服务的原因?
(1)网络原因 ,数据接口原因
(2)代码错误,怎么推测原因
修改的哪里检查一下,如果代码没错
可以输出数据 看一下。用php操作文件
$myfile = fopen(“newfile.txt”, “w”); txt="aaaaaaaaaa";fwrite( txt ="aaaaaaaaaa";fwrite(txt="aaaaaaaaaa";fwrite(myfile, txt);fclose( txt);fclose(txt);fclose(myfile);
7、自定义菜单的事件推送
单击
单击跳转链接
扫码推事件
扫码推且弹出
弹出系统拍照发图的事件
弹出微信相册发图器的事件
弹出地理位置选择器的事件
8、token的作用
安全机制验证,用于微信服务器与PHP服务器之间的安全验证
9、Appid与secrect的作用
请求api接口(例如菜单的操作)时需要传appid与secrect两个值,用来获取应用的授权码
laravle面试题
PHP7 和 PHP5 的区别,具体多了哪些新特性?
性能提升了两倍
结合比较运算符 (96b4fef55684b9312718d5de63fb7121)
标量类型声明
返回类型声明
try…catch 增加多条件判断,更多 Error 错误可以进行异常处理
匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义
…… 了解更多查看文章底部链接 PHP7 新特性
为什么 PHP7 比 PHP5 性能提升了?
变量存储字节减小,减少内存占用,提升变量操作速度
改善数组结构,数组元素和 hash 映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率
改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率
laravel 模块
服务提供者是什么?
服务提供者是所有 Laravel 应用程序引导启动的中心, Laravel 的核心服务器、注册服务容器绑定、事件监听、中间件、路由注册以及我们的应用程序都是由服务提供者引导启动的。
IoC 容器是什么?
IoC(Inversion of Control)译为 「控制反转」,也被叫做「依赖注入」(DI)。什么是「控制反转」?对象 A 功能依赖于对象 B,但是控制权由对象 A 来控制,控制权被颠倒,所以叫做「控制反转」,而「依赖注入」是实现 IoC 的方法,就是由 IoC 容器在运行期间,动态地将某种依赖关系注入到对象之中。
En termes simples, sa fonction est d'utiliser l'injection de dépendances pour décomposer des applications complexes en objets coopérants, réduisant ainsi la complexité de la résolution de problèmes et obtenant un faible couplage et une expansion élevée du code d'application.
Le conteneur de services dans Laravel est un outil utilisé pour gérer les dépendances de classe et effectuer l'injection de dépendances.
Que sont les façades ?
Façades (un modèle de conception, généralement traduit par modèle d'apparence) fournit une interface « statique » (statique) pour accéder aux classes enregistrées dans le conteneur IoC. Fournit une syntaxe simple et facile à retenir sans avoir à mémoriser les noms de classe longs qui doivent être injectés ou configurés manuellement. De plus, les tests sont rendus très faciles grâce à l'utilisation unique des méthodes dynamiques de PHP.
Qu'est-ce que le contrat ?
Contract est l'interface permettant à Laravel de définir les services de base fournis par le framework. Il n'y a pas de différence essentielle entre Contract et Façades. Leur fonction est de rendre l'interface moins couplée et plus simple.
Quel est le principe de l’injection de dépendances ?
Je n’expliquerai pas cela. C’est la condition préalable pour comprendre les conteneurs IoC.
Qu'est-ce que Composer et comment ça marche ?
Composer est un outil de gestion des dépendances pour PHP. Le principe de fonctionnement consiste à télécharger le package d'extension développé depuis le référentiel packagist.org composer dans notre application, et à déclarer les dépendances et le contrôle de version.
Mise en cache
Quelle est la différence entre Redis et Memecached ?
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.
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.
Redis fournit des fonctions de transaction pour garantir l'atomicité d'une série de commandes
Redis prend en charge la persistance des données et peut conserver les données en mémoire sur le disque
Redis n'utilise qu'un seul cœur, alors 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 ?
La persistance RDB enregistre l'état de Redis en mémoire sur le disque dur, ce qui équivaut à sauvegarder l'état de la base de données.
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 dans AOF sont enregistrées au format de protocole redis.
Base de données
Qu'est-ce qu'un index et quel est son rôle ? Quels sont les types d’index courants ? Principes d'indexation MySQL ?
Les indices sont un type spécial de fichier. Ils contiennent des pointeurs de référence vers tous les enregistrements de la table de données, ce qui équivaut à la table des matières d'un livre. Sa fonction est d'accélérer l'efficacité de la récupération des données. Les types d'index courants incluent la clé primaire, l'index unique, l'index composite et l'index de texte intégral.
Principes de création d'index
Principe du préfixe le plus à gauche
Choisissez des colonnes hautement différenciées comme index
Développez l'index autant que possible, ne créez pas de nouvel index
Comment gérer une concurrence élevée ?
Utiliser la mise en cache
Optimiser la base de données et améliorer l'efficacité de son utilisation
Équilibrage de charge
Je ne parlerai pas beaucoup du modèle de conception de PHP, mais le principe de conception SOLID est que chaque PHPer doit le maîtriser.
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!