Maison  >  Article  >  développement back-end  >  Questions d'entrevue classiques 2017php

Questions d'entrevue classiques 2017php

不言
不言original
2018-04-21 10:32:071582parcourir

Le contenu présenté dans cet article concerne les questions d'entretien classiques de 2017php. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

1. les aspects majeurs du langage PHP L'avantage est le multiplateforme. Qu'est-ce que le multiplateforme ? 1. Bases de PHP :


La combinaison optimale de l'environnement d'exploitation PHP est Apache+MySQL+PHP. Il est configuré sur différents systèmes d'exploitation (tels que Windows, Linux, etc.) et n'est pas limité par le système d'exploitation, il est donc appelé multiplateforme

2. Combien de méthodes existe-t-il pour la soumission de données dans le développement WEB ? Quelle est la différence ? Quelle méthode Baidu utilise-t-il ?

Deux méthodes de Get et post

Différence : 1. Get obtient les données du serveur et post transmet les données au serveur

2. La valeur transmise par Get est visible dans l'url, mais la valeur transmise par post n'est pas visible dans l'url

4. la valeur transmise par Get est généralement inférieure à 2 Ko et la taille de la valeur transmise par publication est OK. Définie dans php.ini

5. Get n'est pas faible en termes de sécurité, la publication est plus sécurisée. , mais son efficacité d'exécution est supérieure à Post

Recommandations :

1 La méthode get est moins sécurisée que la méthode post et contient des informations confidentielles. informations. Il est recommandé d'utiliser la méthode de soumission des données post ;

2 , il est recommandé d'utiliser la méthode Get pour la requête de données, il est recommandé d'utiliser la méthode Post pour l'ajout, modifier ou supprimer des données

La méthode get utilisée par Baidu, car elle est visible depuis son URL

3. moteurs de modèles, systèmes, etc. de PHP

Framework : Il existe de nombreux frameworks, tels que zendframe, CI, Yii, etc. Ce que nous avons appris, c'est thinkphp

Moteur de modèles : il y en a beaucoup, certains sont dans les manuels, ce que nous avons appris est intelligent

système : il y en a Il y en a beaucoup, comme : Les produits de Kangsheng (uchome, supesite, discuzX, etc.), Empire System, DEDE (Dreamweaver), ecshop, etc. Ce que nous avons appris c'est DEDECMS, Ecshop

4 , dis-moi quel front web -technologies finales que vous maîtrisez ?

Maîtrise de la mise en page Web p+CSS, JavaScript, du framework jQuery, du traitement d'images Photoshop

5 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 ?

①Empêcher la soumission à distance ; ②Empêcher l'injection SQL, filtrer les codes spéciaux ; ③Empêcher l'inondation de la machine d'enregistrement, utiliser le code de vérification

7. Dans le développement ; des programmes, comment améliorer l’efficacité opérationnelle du programme ?

① 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 requêtes moins floues ; ; ②Table de données Créer des index dans ; ③ Générer un cache pour les données fréquemment utilisées dans le programme

8.

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 MSSQL. PHP a des fonctions réservées pour faire fonctionner MSSQL. Utiliser

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 respectivement au modèle commercial, à la vue et au 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. Les avantages sont les suivants : ① Il peut permettre la réutilisabilité du code et éviter la redondance du code ; ②M et V implémentent la séparation du code, de sorte que le même programme puisse utiliser différentes expressions

10. le format est compris ?

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 renverra un tableau au lieu d'un objet lorsque ce paramètre est VRAI

Json_encode : Convertir les variables PHP au format json

11. différences entre Print, echo et print_r ?

① 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, si vous produisez uniquement, echo sera plus rapide et print_r est généralement utilisé pour imprimer des informations sur les variables, généralement utilisées dans le débogage.

② print consiste à imprimer une chaîne

③ print_r consiste à imprimer un type composite tel qu'un objet tableau

12. Quelle est la différence entre SESSION et COOKIE ?

①Emplacement de stockage : la session est stockée sur le serveur, le cookie est stocké dans le navigateur

②Sécurité : la sécurité de la session est supérieure à celle du cookie

③session est 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 utiliser directement

<.>14. PHP pour traiter les tableaux Fonctions couramment utilisées ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)

①array() crée un tableau ②count() renvoie le nombre d'éléments dans le tableau ③array_push() ; pousse un ou plusieurs éléments insérés à la fin du tableau (poussés sur la pile) ; ④array_column() renvoie la valeur d'une seule colonne dans le tableau d'entrée ; ⑤array_combine() crée un nouveau tableau en fusionnant deux tableaux ; renvoie le tableau dans l'ordre inverse ; ⑦array_unique() supprime les valeurs en double dans le tableau ; ⑧in_array() vérifie si la valeur spécifiée existe dans le tableau

15. traiter des chaînes en PHP ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)

①trim() supprime les caractères vides et autres caractères des deux côtés de la chaîne ②substr_replace() remplace une partie de ; la chaîne Remplacer par une autre chaîne ; ③substr_count() compte le nombre de fois qu'une sous-chaîne apparaît dans la chaîne ; ④substr() renvoie une partie de la chaîne ; ⑤strtolower() convertit la chaîne en lettres minuscules ; ⑥strtoupper() convertit la chaîne en majuscules ; Lettres ; ⑦strtr() convertit des caractères spécifiques dans une chaîne ; ⑧strrchr() trouve la dernière occurrence d'une chaîne dans une autre chaîne ; ⑨strstr() trouve la première occurrence d'une chaîne dans une autre chaîne (sensible à la casse) ; la chaîne ; strlen() renvoie la longueur de la chaîne ; str_replace() remplace certains caractères dans la chaîne (sensible à la casse) ; print() génère une ou plusieurs chaînes ; ) détecte si la variable est une chaîne ; strip_tags() supprime les balises HTML d'une chaîne ; mb_substr() est une fonction utilisée pour couper le chinois et l'anglais

16. traiter le temps ? (Concentrez-vous sur les 'paramètres' et la 'valeur de retour' de la fonction)

date_default_timezone_get() renvoie le fuseau horaire par défaut.

date_default_timezone_set() définit le fuseau horaire par défaut.

date() formate l'heure/la date locale.

getdate() renvoie les informations de date/heure.

gettimeofday() renvoie les informations sur l'heure actuelle.

microtime() renvoie le nombre de microsecondes dans l'heure actuelle.

mktime() renvoie l'horodatage Unix d'une date.

strtotime() analyse toute description de date ou d'heure de texte anglais dans un horodatage Unix.

time() renvoie l'horodatage Unix de l'heure actuelle.

17. Quelles sont les fonctions courantes de PHP pour le traitement des bases de données ? (Focus 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

18. Quelles sont les fonctions courantes pour exploiter des fichiers en PHP ? (Focus sur les « paramètres » et la « valeur de retour » de la fonction)

①Ouvrir le fichier ; ②Supprimer le fichier ; ③Lire le fichier ; ④Écrire le fichier ; ⑥Fermer le fichier ; ⑦Créer un fichier, etc. Cet élément est très important et est souvent utilisé pour générer des fichiers au travail. veuillez vous référer au manuel PHP et vérifier attentivement

19 Quelles sont les fonctions courantes des répertoires d'exploitation PHP (dossiers) ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)

①Ouvrez le répertoire ; ②Lisez le répertoire ; ④Créez le répertoire ; répertoire Attendez, cet élément est très important. Au travail, il est souvent utilisé pour créer ou supprimer des répertoires pour les fichiers téléchargés, créer ou supprimer des répertoires pour les caches et les pages statiques. Veuillez vous référer au manuel PHP et lire attentivement

.

Retour en haut

Partie base de données

1 . Quels sont les produits courants des systèmes de gestion de bases de données relationnelles ?

Réponse : Oracle, SQL Server, MySQL, Sybase, DB2, Access, etc.

2. 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, Craete/Drop 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

3. Quelles sont les contraintes d’intégrité ?

Réponse : L'intégrité des données fait référence à l'exactitude et à la fiabilité des données.

est divisé en quatre catégories suivantes :

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 : cela 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 corruption des données. . Les données manquantes ou dénuées de sens prolifèrent dans la base 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.

Contraintes liées aux tables : y compris les contraintes de colonnes (NOT NULL (contraintes non nulles)) et les contraintes de table (PRIMARY KEY, Foreign clé, chèque, UNIQUE).

4. Qu'est-ce qu'une transaction ? et ses caractéristiques ?

Réponse : Transaction : Il s'agit d'une série d'opérations de base de données et de l'unité logique de base de l'application de base de données.

Caractéristiques des transactions :

(1) Atomicité : c'est-à-dire indivisibilité, les transactions sont soit toutes exécutées, soit aucune.

(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 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.

Ou comprenez-le de cette façon :

Une transaction est un groupe d'instructions SQL liées entre elles en tant qu'unité de travail logique. Si une opération d'instruction échoue, la transaction échoue. l'opération entière sera En cas d'échec, les opérations futures seront rétablies à l'état d'avant l'opération, ou il y aura un nœud dessus. Pour garantir que quelque chose est exécuté ou non, des transactions peuvent être utilisées. Pour qu’une instruction groupée soit considérée comme une transaction, elle doit réussir les tests ACID, à savoir l’atomicité, la cohérence, l’isolement et la durabilité.

5. Qu'est-ce qu'un cadenas ?

Réponse : 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. Lorsqu'une transaction opère 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

6. Qu'est-ce qu'une vue ? Qu'est-ce qu'un curseur ?

Réponse : 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.

7. Qu'est-ce qu'une procédure stockée ? Comment appeler ?

Réponse : 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. le programme plus tard. 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.

8. Quel est le rôle de l'index ? Et quels sont ses avantages et ses inconvénients ?

Réponse : 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 la taille de la base de données.

9. Comment comprendre les trois paradigmes de manière populaire ?

Réponse : Première forme normale : 1NF est une contrainte d'atomicité sur les attributs, exigeant que les attributs soient atomiques et non décomposables

Non. Deuxième forme normale : 2NF est une contrainte sur l'unicité des enregistrements, exigeant que les enregistrements aient des identités uniques, c'est-à-dire l'unicité des entités ; Troisième forme normale : 3NF est une contrainte sur la redondance des champs, c'est-à-dire qu'aucun champ ne peut être dérivé de d'autres champs, cela nécessite que les champs ne soient pas redondants. .

10. Qu'est-ce qu'un tableau de base ? Qu'est-ce qu'une vue ?

Réponse : 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, mais est une table virtuelle

11. Décrivez les avantages des vues ?

Réponse : (1) Les vues peuvent simplifier les opérations de l'utilisateur (2) Les vues permettent aux utilisateurs de visualiser les mêmes données sous plusieurs angles (3) Les vues fournissent un certain degré de logique pour la base de données ; Indépendance ; (4) Les vues peuvent assurer la protection des données confidentielles.

12. Que signifie NULL ?

Réponse : La valeur NULL représente 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 le jugement NULL

13. Quelle est la différence entre la clé primaire, la clé étrangère et l'index ?

La différence entre clé primaire, clé étrangère et index

Définition :

Clé primaire - unique Identifie un enregistrement, il ne peut pas y avoir de doublons et il ne doit pas être vide

Clé étrangère - la clé étrangère d'une table est la clé primaire d'une autre table, la clé étrangère la clé peut être dupliquée et elle peut être vide Valeur

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é - utilisée pour établir des connexions avec d'autres tables

Index - 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é étrangère - une table peut avoir plusieurs clés étrangères

Index - une table peut avoir plusieurs index uniques

14. que le champ n'accepte que les valeurs dans une plage spécifique ?

Réponse : Vérifiez la restriction, qui est définie dans la table de la base de données pour limiter la valeur saisie dans la colonne.

Les déclencheurs peuvent également être utilisés pour limiter les valeurs que les champs des tables de base de données peuvent accepter, mais cette méthode nécessite que des déclencheurs soient définis dans la table, ce qui peut poser problème dans certains cas . Impact moindre sur les performances.

15. Quelles sont les méthodes 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. doit être écrit à 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) Pour optimiser la requête, essayez d'éviter les analyses de table complètes. Tout d'abord, pensez à créer des index sur les colonnes impliquées dans Where et à trier par.

(6) Essayez d'éviter les jugements de valeur nuls 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 les opérations d'expression sur les champs de la clause Where, ce qui amènera le moteur à abandonner l'utilisation de l'index et à effectuer une analyse complète de la table

16 Instruction SQL Quelle est la différence entre « sous-requête corrélée » et « sous-requête non corrélée » ?

Réponse : Sous-requête : Une requête imbriquée dans d'autres requêtes est appelée une requête.

Une sous-requête est également appelée requête interne, et l'instruction contenant la sous-requête est appelée requête externe (également appelée requête principale).

Toutes les sous-requêtes peuvent être divisées en deux catégories, à savoir les sous-requêtes corrélées et les sous-requêtes non corrélées

(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.

Par conséquent, les sous-requêtes non corrélées sont plus efficaces que les sous-requêtes corrélées

17. Quelle est la différence entre char et varchar ?

Réponse : Il s'agit d'un type de longueur fixe, tandis que varchar est un type de longueur variable. La différence entre eux est :

Dans. une colonne de données de type char(M), chaque valeur occupe M octets. Si une longueur est inférieure à M, MySQL la remplira avec des espaces à droite. (Les espaces de remplissage seront supprimés lors de l'opération de recherche.) Dans une 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 L+1 octets ).

18. Moteur de stockage Mysql, la différence entre myisam et innodb.

Réponse : Expression simple :

MyISAM est un moteur de stockage non transactionnel adapté aux applications avec des requêtes fréquentes. Les verrous de table ne seront pas bloqués ; se produit ; adapté aux petites données, petite concurrence

innodb est un moteur de stockage qui prend en charge les transactions adaptées aux applications avec de nombreuses opérations d'insertion et de mise à jour s'il est conçu correctement, les verrous de ligne (la plus grande différence ; Juste au niveau du verrouillage ); adapté au Big Data et à la grande concurrence.

19. Quels sont les types de tables de données ?

Réponse : 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.

20. La base de données MySQL est utilisée comme stockage du système de publication. L'augmentation de plus de 50 000 éléments par jour devrait durer trois ans.

a. 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é.

b. Sélectionnez le type de données de champ de table et le moteur de stockage appropriés, et ajoutez les index de manière appropriée.

c. Séparation maître-esclave de la bibliothèque MySQL en lecture et en écriture.

d. Recherchez des tables régulières pour réduire la quantité de données dans une seule table et améliorer la vitesse des requêtes.

e. Ajoutez des mécanismes de mise en cache, tels que memcached, apc, etc.

f. Générez des pages statiques pour les pages qui ne changent pas fréquemment.

g. Écrivez du SQL efficace. Par exemple, SELECT * FROM TABEL est remplacé par SELECT field_1, field_2, field_3 FROM TABLE.

21 Pour les sites Web à fort trafic, quelle méthode utilisez-vous pour résoudre le problème des statistiques. de visites de pages ?

Réponse : a. Confirmez si le serveur peut prendre en charge le trafic actuel.

b. Optimiser l'accès à la base de données.

c. Interdire l'accès externe aux liens (hotlinking), comme le hotlinking d'images.

d. Contrôler les téléchargements de fichiers.

e. Utilisez différents hôtes pour répartir le trafic.

f. Utiliser un logiciel de statistiques de navigation pour comprendre le nombre de visites et effectuer une optimisation ciblée.

Retour en haut

3. Partie orientée objet

1. Qu'est-ce que l'orientation objet (Répondre avec compréhension)

Réponse : OO orienté objet = Analyse orientée objet OOA + Conception orientée objet OOD + Programmation orientée objet OOP ; l'explication populaire est que « tout est un objet » et que toutes choses sont considérées comme des objets indépendants ; . (unité), ils peuvent remplir leurs propres fonctions au lieu d'être divisés en fonctions comme C.

Les langages OO purs actuels sont principalement Java et C# et C++ prennent également en charge OO qui est orienté processus.        

2. Décrivez brièvement les droits d'accès des modificateurs privés, protégés et publics.

Réponse : privé : membre privé, accessible uniquement à l'intérieur de la classe.

protected : membres protégés, accessibles au sein de la classe et 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 ?

Réponse : 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. Vous pouvez déterminer la taille de la mémoire tas à allouer en fonction des conditions d'exécution du programme.

4. La principale différence entre XML et HTML

Réponse : (1) XML fait la distinction entre les lettres majuscules et minuscules, alors que HTML ne le fait pas. .

(2) En HTML, si le contexte indique clairement où se termine la clé de paragraphe ou de liste, alors vous pouvez omettre la balise de fin

de la classe. En XML, la balise fermante 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.

5. Quelles sont les caractéristiques de l'orientation objet

Réponse : Inclut principalement l'encapsulation, l'héritage et le polymorphisme. S'il s'agit de 4 aspects, ajoutez : abstraction.

L'explication suivante est destinée à la compréhension :

Encapsulation :

L'encapsulation consiste à garantir que Les composants logiciels ont la base d'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 l'impact des changements provoqués par l'interdépendance des programmes

.

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 défini par la classe est pris en compte. comme son propre contenu, et du nouveau contenu peut être ajouté, ou la méthode originale 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 fait référence au type spécifique pointé par la variable de référence définie dans le programme et à la méthode émise via la variable de référence L'appel n'est pas déterminé lors de la programmation, mais est déterminé lors de l'exécution du programme, c'est-à-dire sur quel objet d'instance de classe une variable de référence pointera, et l'appel de méthode émis par la variable de référence doit être implémenté dans quelle classe elle peut. être décidé pendant 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. Cette classe ne considère que les similitudes de celles-ci. choses et points communs, et ignorera les aspects qui ne sont pas pertinents par rapport au sujet et à l'objectif actuels, et se concentrera 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 ?

Réponse : Classe abstraite : Il s'agit d'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.

C'est une classe abstraite spéciale et une classe spéciale qui utilise la déclaration d'interface.

(1) Les opérations des classes abstraites sont implémentées via le mot-clé d'héritage extends, et l'utilisation des interfaces est implémentée via le mot-clé Implements.

(2) Il y a des données membres dans la classe abstraite, qui peuvent réaliser l'encapsulation de données, mais l'interface n'a pas de données membres.

(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 public mot-clé.

(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 ?

Réponse : 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

Réponse : La surcharge, c'est-à-dire le remplacement des méthodes de la classe parent, c'est-à-dire l'utilisation des méthodes de la sous-classe pour remplacer les méthodes héritées de la classe parent, est également appelée réécriture de méthodes.

La clé pour remplacer la méthode de la classe parent est de créer la même méthode dans la classe parent dans 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 ? Exemple

Réponse : 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 redondance. Contient les méthodes magiques existantes.

__construct() est automatiquement appelée lors de l'instanciation d'une classe.

__destruct() est automatiquement appelé 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 attributs non définis sont appelés.

__isset() sera appelé lors de l'utilisation de la fonction isset() ou empty().

__unset() sera appelé lorsque unset() est utilisé.

__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é lors de la conversion d'un objet en chaîne. Comme l'écho.

__invoke() est appelé lorsque vous essayez d'invoquer 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é 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é ?

Réponse : $cet objet actuel

auto-classe actuelle

parent parent de l'actuel class Class

$this est utilisé dans la classe actuelle, utilisez ->

self est également utilisé dans la classe actuelle, mais il doit être appelé en utilisant ::.

parent est utilisé dans la classe.

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.

Réponse : 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éfinissez 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 est différent de celui des variables. Les constantes n'ont pas besoin d'instancier les objets. Le format d'accès 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é ?

Réponse : Appeler les constantes de classe

Appeler les méthodes statiques

Méthode __autoload(). Comment ça marche ?

Réponse : 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 de ce fichier de classe en fonction du nom de la classe instanciée Lorsqu'il est déterminé que ce fichier de classe existe dans le chemin de ce fichier de classe

Exécutez include ou require pour charger la 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 d'inclusion ou d'exigence.

Retour en haut

Partie ThinkPHP

1. Frameworks PHP communs

Réponse : thinkPHP

yii

ZendFramework

CakePhp

sy

2. Comment comprendre TP Fichier à entrée unique ?

Réponse : 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 :

définir le chemin du framework, le chemin du projet et le projet. Nom (facultatif)

Définit les constantes associées pour le mode débogage et le mode d'exécution (facultatif)

Charger le fichier d'entrée du framework (obligatoire)

3. Qu'est-ce que la superposition MVC dans ThinkPHP ? (Comprendre)

Réponse : 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 et n'a pas de 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 le modèle. classe.

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, et l'application est responsable de la planification. contrôle.

View (V) : il se compose 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 dépend pas de M ou de V, ce qui signifie qu'il peut fonctionner sans modèle ni vue. 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 élèves peuvent comprendre l'explication suivante, puis simplement énoncer le sens général selon leur propre compréhension)

Réponse :

(1) Choisissez le bon moteur de stockage

Prenons MySQL comme exemple, comprenant deux moteurs de stockage, MyISAM et InnoDB. Chaque moteur présente des avantages et des inconvénients.

MyISAM convient aux applications qui nécessitent un grand nombre de requêtes, mais il n'est pas très bon pour un grand nombre d'opérations d'écriture. 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 des lignes", 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

Rappelez-vous 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 seul champ. 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 le caractère générique *. Faire bon usage des définitions d'exclusion de champs intégrées peut apporter plus de commodité.

(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 conserver vos champs PAS NUL. 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 être considéré 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, car ces longueurs fixes facilitent le calcul du décalage des données suivantes, donc la lecture sera bien sûr très 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 trois (noyau + comportement + pilote) ?

Réponse : Core + Comportement + Pilote

Abréviation officielle TP : CBD

Core ( 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.

Comportement : Le comportement joue un rôle décisif dans l'architecture de la nouvelle version de ThinkPHP. Au cœur du système, de nombreux bits d'extension d'étiquette sont définis, et chaque position d'étiquette peut être définie. effectuer séquentiellement leurs propres actions indépendantes. 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.

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.

Cadre. En fait, il s'agit d'un produit semi-fini d'une certaine application, d'un ensemble de composants que vous pouvez choisir et utiliser pour compléter votre propre système. Pour faire simple, vous utilisez le décor préparé par les autres et vous jouez. De plus, les frameworks sont généralement des logiciels matures et continuellement mis à jour.

6. Quelle est la configuration conventionnelle ?

Réponse : Configuration de la convention Page précédente Page suivante Les conventions sont plus importantes que les configurations. Il s'agit d'une idée importante que le système suit. php situé sous le répertoire système) ), les paramètres communs sont configurés par défaut en fonction de la plupart des utilisations. Par conséquent, pour le fichier de configuration du projet d'application, il vous suffit souvent de configurer des paramètres de configuration différents ou nouveaux par rapport à la configuration conventionnelle. Si vous adoptez complètement la configuration par défaut, vous n'avez même pas besoin de définir de fichier de configuration.

Le fichier de configuration conventionnel sera automatiquement chargé par le système et n'a pas besoin d'être chargé dans le projet.

7. Qu'est-ce que l'injection SQL ? (Comprendre)

Réponse : L'attaque par injection SQL est l'un des moyens couramment utilisés 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. Le programme rassemblera les informations soumises pour générer une instruction SQL complète, et le serveur le sera. trompé. Exécutez 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)

Réponse : (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, utiliser le mécanisme de prétraitement ;

(3) Activez la vérification du type de champ de données et vous pouvez forcer la conversion des types de données numériques (cela est obligatoire ; depuis la version 3.1, la vérification du type de champ est effectuée)

(4) Utiliser les mécanismes de vérification automatique et de saisie semi-automatique pour le filtrage personnalisé spécifique à l'application

(5) Utiliser des mécanismes de vérification du type de champ, de validation 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 ?

Réponse : 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 :

.

//Activer le mode débogage

definition('APP_DEBUG', true);

//Charger le fichier d'entrée du framework

require './ThinkPHP/ThinkPHP.php';

Après avoir terminé la phase de développement et son déploiement dans l'environnement de production, supprimez simplement le code de définition du mode débogage pour passer en mode déploiement. Après avoir activé le mode débogage, le système chargera d'abord le fichier de configuration de débogage par défaut du système, puis chargera le fichier de configuration de débogage du projet. Les avantages du mode débogage sont :

<. 🎜>

Activez la journalisation, tous les messages d'erreur et informations de débogage seront enregistrés en détail pour faciliter le débogage ;

Désactivez la mise en cache des modèles, les modifications du modèle peuvent prendre effet immédiatement ;

Enregistrez les journaux SQL pour faciliter l'analyse SQL ;

Désactivez la mise en cache des champs et les modifications des champs de la table de données ne seront pas affectées par le cache ;

Vérifiez strictement la casse du fichier (même sur les plates-formes Windows) pour vous aider à détecter à l'avance les problèmes de déploiement Linux

peut être facilement utilisé dans différents étapes du processus de développement, y compris le développement, les tests et la démonstration, etc. Si nécessaire, des fichiers de configuration de projet distincts peuvent être configurés pour différents modes d'application.

10. Quels modes de configuration sont pris en charge dans TP ? Priorité?

Réponse : ThinkPHP a créé son propre modèle de configuration hiérarchique unique dans la configuration du projet. Son niveau de configuration se reflète dans :

Configuration conventionnelle ->. ;Configuration du projet->Configuration du débogage->Configuration du groupe->Configuration étendue->Configuration dynamique

Ce qui précède est l'ordre de chargement du fichier de configuration, car la configuration ultérieure will Écrase la configuration précédente du même nom (sans prendre effet), la priorité est donc de droite à gauche.

11. Quels sont les modèles d'URL dans TP ? Quelle est la valeur par défaut ?

Réponse : 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 ?

Réponse : La méthode d'obtention des variables système :

doit seulement être appelée en action La méthode suivante :

$this-> nom de la méthode ("nom de la variable", ["méthode de filtrage"], ["valeur par défaut"])

13. Quelle est la différence entre la fonction D et la fonction M dans le framework ThinkPHP ?

Réponse : La méthode M ne nécessite pas que l'utilisateur définisse une classe de modèle pour chaque table de données lors de l'instanciation du modèle. La méthode D peut détecter automatiquement la classe de modèle. classe de modèle personnalisée, elle sera instanciée automatiquement. Définissez la classe de modèle. Si 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).

Retour en haut

5.

1. 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. smarty La compilation est en fait le processus de mélange de php et html

Le cache de Smarty doit être activé manuellement. le compilé Une fois le fichier exécuté, une page html statique est générée en même temps Lorsque vous y accéderez à nouveau, vous accéderez au fichier html, donc en termes d'efficacité, il est supérieur

.

2. Qu'est-ce que smarty ? Quels sont les avantages de Smarty ?

Smarty est une application qui utilise Le moteur de template PHP écrit en PHP vise à séparer le programme PHP de l'artiste afin que le programmeur puisse modifier le contenu logique du programme sans affecter la conception de la page de l'artiste. La logique du programme ne sera pas affectée lorsque la page est re-modifiée, ce qui est particulièrement important dans les projets de coopération multi-personnes. (Il est également facile de développer des programmes multi-styles)

Avantages de Smarty

1.

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. : Il peut mettre en cache le fichier HTML que l'utilisateur voit finalement dans une page HTML statique

4. Technologie de plug-in : smarty peut personnaliser les plug-ins.

Là où smarty ne convient pas

1. Contenu qui doit être mis à jour en temps réel. Par exemple, comme l'affichage des stocks, cela nécessite des mises à jour fréquentes des données. 2. Petits projets. Des petits projets qui nécessitent à la fois artiste et programmeur du fait de leur simplicité

3. Utilisez {$smarty} pour conserver les variables dans les modèles

{$smarty.get.page } //Similaire à l'accès à $_GET[page]

{smarty.cookies.}

{smarty.post.} dans un script php

{smarty.session.}

{smarty.server.}

4. Accéder aux variables en php dans le modèle

Il y a un système dans le php script Il existe deux types de constantes et de constantes personnalisées. Ces deux constantes sont également accessibles dans les modèles Smarty et n'ont pas besoin d'être allouées depuis PHP. La valeur de la constante peut être directement sortie tant que la variable est conservée via {$. malin}. Exemple de sortie d'une constante dans un modèle :

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5. Variables Modérateur

{$var|modifier1|modifier2|.....}

<{$str}>

<{$str| majuscule}> <{*La première lettre est en majuscule*}>

<{$str|upper}><{*Toutes en majuscules*}> ;< br>

<{$str|inférieur}><{*tout en minuscules*}>
<{$str|lower|upper}><{*toutes en majuscules, ajustées de gauche à droite*}>

<{ $leg| truncate}><{*Interception de chaîne, 80 caractères par défaut*}>

<{$leg|truncate:10}> ;<{* Interception de chaînes, 10 premiers, dont...trois caractères*}>

6. php interroge la base de données mysql, des caractères tronqués apparaissent lors de l'interrogation des résultats chinois. Comment le résoudre ? ? ? ?

1. Propriétés du fichier (enregistrer sous)

2. Méta du fichier (lors de la configuration de l'analyse du navigateur)

3. Paramètres d'encodage lors de la connexion à la base de données

4. Utilisation de la fonction d'en-tête en PHP. fichiers Déterminer l'encodage

7. Mécanisme de mise en cache

Si la mise en cache est activée, smarty générera une page html statique en même temps s'il y en a. pas de page html statique à l'heure fixée, Après expiration, lorsque vous y accéderez à nouveau, vous accéderez au fichier html, ce qui réduit le besoin de lire la base de données, donc en termes d'efficacité, il est plus élevé.

8. affectation intelligente et modèles de chargement

$Smarty->assign(nom,valeur)

$Smarty->display('index.html')

9. À quoi sert la technologie des modèles Marty ?

Afin de séparer le php et le html, les artistes et les programmeurs effectuent leurs propres tâches sans interférer les uns avec les autres.

10. Quelles sont les principales configurations smarty ?

1. Introduisez smarty.class.php;

2. Instanciez l'objet smarty ; 🎜>3. Re-modifiez le chemin du modèle par défaut

4. Re-modifiez le chemin du fichier compilé par défaut

. 5. Re-modifiez le chemin du fichier de configuration par défaut ;

6. Re-modifiez le chemin du cache par défaut.

7. Vous pouvez définir s'il faut activer le cache.

8. Vous pouvez définir les délimiteurs gauche et droit.

11. À quels détails devez-vous faire attention lorsque vous utilisez smarty ?

Smarty est un moteur de modèles basé sur le concept MVC. Il divise un programme de page en deux parties pour la mise en œuvre : la couche de visualisation et la couche de contrôle, En d’autres termes, la technologie intelligente sépare l’interface utilisateur du code PHP.

De cette manière, les programmeurs et les artistes peuvent exercer leurs fonctions sans interférer les uns avec les autres.

12. Faites attention aux problèmes suivants lorsque vous utilisez smarty :

1. Configurez correctement Smarty. Il faut principalement instancier l'objet smarty et configurer le chemin du fichier modèle smarty Utiliser l'affectation et afficher la page d'affichage dans la page 2.php ; >

3. Les extraits de code PHP ne sont pas autorisés dans les fichiers de modèles intelligents. Tous les commentaires, variables et fonctions doivent être inclus dans les délimiteurs.

A.{}

B. pour chaque

C si autre

D. inclure

E Littéral

Retour en haut

6. Système de développement secondaire (DEDE, ecshop) :

1. Compréhension du développement secondaire

Le développement secondaire, en termes simples, consiste à personnaliser et à modifier les logiciels existants, à étendre les fonctions, puis à réaliser les fonctions souhaitées, d'une manière générale, le noyau de le système d'origine ne sera pas modifié.

2. MVC

Traitement des données du modèle.

Afficher l'affichage du modèle.

Le contrôleur contrôle le processus.

Quel est le concept de MVC ? Quelles sont les tâches principales de chaque niveau ?

MVC (model-view-controller) est un modèle de conception de logiciel ou une idée de programmation.

M fait référence à la couche Modèle, V est la couche Vue (couche d'affichage ou interface utilisateur) et C est la couche Contrôleur.

Le but de l'utilisation de mvc est de séparer M et V, afin qu'un programme puisse facilement utiliser différentes interfaces utilisateur.

Dans le développement de sites Web,

La couche modèle est généralement responsable de l'ajout, de la suppression, de la modification et de la vérification des informations sur les tables de base de données,

La couche vue est responsable de l'affichage du contenu de la page

La couche contrôleur joue un rôle régulateur entre M et V. La couche contrôleur décide quelle méthode de. quelle classe de modèle appeler,

Après l'exécution, la couche contrôleur décide à quelle couche de vue attribuer le résultat.

3. Certains avertissements et erreurs apparaissent lors de l'accès au programme de développement secondaire après l'installation

En fonction de l'erreur, modifiez les paramètres de configuration du serveur et Baidu

4. Fonction, remplacement de modèle, ajout et modification de fonctions

En fait, il s'agit d'une application orientée objet, et le remplacement des modèles est similaire à l'utilisation de smarty

5. Quel développement secondaire a été utilisé ?

Dedecms phpcms ecshop, en gros si vous avez de bonnes bases, cela ne posera aucun problème pour apprendre.

6. Est-il préférable de faire du développement primaire ou du développement secondaire comme PHP ?

Généralement, les petites et moyennes entreprises utilisent le système cms pour le développement secondaire, le tout dans un souci d'efficacité. Bien sûr, si vous souhaitez tout développer en même temps, ce n'est pas un problème, à condition que vous sachiez utiliser le framework et que vous disposiez de suffisamment de temps pour développer en équipe pour éviter les problèmes de droits d'auteur.

7. Dans le processus de développement secondaire, comment les accès aux méthodes entre plusieurs classes sont-ils transmis ?

Il ne s'agit pas d'un héritage de classe mais d'une combinaison d'objets. Passez l'objet instancié via global

8. Si dedecms modifie le répertoire, un certain élément en arrière-plan ne peut pas être saisi. Comment le résoudre ?

Modifiez les paramètres du noyau d'arrière-plan pour le nom du répertoire du projet actuel

9. Quelle est la compréhension des modèles personnalisés dans les dedecms ?

Dans le système DreamWeaver, il existe le concept de modèle de contenu. Différents modèles de contenu peuvent être utilisés pour créer des sites avec différentes formes de contenu. Le système est livré avec les modèles suivants : articles ordinaires, albums photo, logiciels et. produits. , informations classifiées, sujets spéciaux. Grâce aux modèles fournis avec le système, nous pouvons l'utiliser pour créer différents types de sites. Par exemple, vous pouvez utiliser un atlas pour créer un site d'images et vous pouvez utiliser des modèles de logiciels pour créer un site de téléchargement de logiciels.

Bien sûr, les modèles ci-dessus fournis avec le système sont appelés modèles de système. Les utilisateurs peuvent définir eux-mêmes certains modèles, tels que des livres, des albums de musique, etc. ., et personnalisez ces modèles. Ce n'est qu'alors que vous pourrez créer un site avec plus de contenu.

Cela équivaut à ajouter automatiquement une structure de table pour s'adapter à l'évolution des besoins actuels

10. Les concepts suivants doivent être compris lors de la conception et de l'utilisation de modèles dans dede

1. Modèle de section (couverture) :

fait référence au modèle utilisé par la page d'accueil du site Web ou le canal de couverture de colonne le plus important, généralement nommé avec "index_identification ID.htm". , Les pages individuelles ou les balises personnalisées définies par les utilisateurs peuvent également choisir de prendre en charge les balises de modèle de section. Si elles sont prises en charge, le système utilisera le moteur de balises de modèle de section pour analyser avant de sortir le contenu ou de générer un fichier spécifique.

2. Modèle de liste :

fait référence au modèle de liste de tous les articles dans une certaine colonne du site Web, en utilisant généralement " list_identification ID.htm ” Dénomination.

3. Modèle de fichier :

représente le modèle de la page de visualisation du document, tel qu'un modèle d'article, utilise généralement "article_identification ID.htm " nom.

4. Autres modèles :

Les modèles de système généraux incluent : le modèle de page d'accueil, le modèle de recherche, RSSS, le modèle de fonction de compilation JS, etc., De plus, les utilisateurs peuvent également personnaliser un modèle pour créer n'importe quel fichier.

11. Combien de balises sont utilisées dans dede ?

Les balises telles que le contenu de la liste ne peuvent être utilisées que dans leur propre portée, les balises de liste ne peuvent être utilisées que dans les listes et les balises de contenu ne peuvent être utilisées que dans les balises de contenu.

Les balises globales peuvent être utilisées dans toutes les pages

12. Familiarisé avec les bibliothèques de classes couramment utilisées

(par exemple : dedesql.class.php) familier avec les bibliothèques de fonctions système (common.func.php) ; (extend.func .php); Familier avec le fichier d'entrée front-end (common.inc.php)

Retour en haut

7. Développement de la plateforme publique WeChat

1. Mécanisme de fonctionnement de WeChat

Quelle langue est utilisée pour communiquer entre le compte officiel et php : 🎜> Comment recevoir les données du compte public dans Weixin.php :

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Recevoir des données XML

2. Types de messages

WeChat propose actuellement 7 messages de base. types, qui sont :

(1) Message texte (texte) (2) Message photo (image

)

(3) Voix (voix)

(4) vidéo (vidéo)

(5) emplacement;

(6) Message de lien (lien);

(7) Push d'événement (événement)

tapez. Maîtriser le format de transfert de données lors de l'envoi de différents types de messages

Fonction pour lire l'intégralité du fichier dans une chaîne Oui

File_get_contents

Fonctions couramment utilisées

La fonction qui analyse les données XML en objets est

simplexml_load_string()

La fonction pour convertir une chaîne en tableau est ___ exploser________ , la fonction qui convertit un tableau en chaîne est ____implode________ .

6 Le rôle de la fonction Sprintf

Vous pouvez consulter le manuel pour cela.

7. Raisons pour lesquelles le compte officiel WeChat ne peut pas fournir de services ?

1. Raison du réseau, raison de l'interface de données

2. Erreur de code, comment deviner la raison

Vérifiez où vous l'avez modifié, si le code est correct

Vous pouvez sortir les données et y jeter un œil. Utilisez php pour gérer les fichiers

$myfile = fopen("newfile.txt", "w");

$txt ="aaaaaaaaaa";

fwrite($myfile, $txt);

fclose($ monfichier);

8. Poussée d'événement du menu personnalisé

Cliquez sur le lien de saut

Cliquez sur le lien de saut

Scannez le code pour pousser l'événement

Scanner Le code est poussé et apparaît

L'événement selon lequel le système prend des photos et publie des messages apparaît

L'événement que l'affiche de l'album WeChat apparaisse

Événement qui fait apparaître le sélecteur de localisation géographique

Le rôle du jeton

Vérification du mécanisme de sécurité, utilisé pour la vérification de la sécurité entre le serveur WeChat et le serveur PHP

10 Le rôle d'Appid et secrect

Demander une interface API (telle que l'opération de menu) Vous devez transmettre les valeurs appid et secrect pour obtenir le code d'autorisation de l'application


Retour en haut

8. Description des technologies que vous maîtrisez : 1. . Prendre PHP + MYSQL comme direction, maîtriser le moteur de modèles intelligents, le framework ThinkPHP, le développement de plate-forme publique WeChat, DEDE, ecshop et d'autres systèmes de développement secondaires, avoir une certaine compréhension de la base de données orientée objet, maîtriser MYSQL, MSSQL et autres ; bases de données ; familier avec le développement PHP sous Linux

2. Technologie front-end : Maîtrise de la mise en page Web p+CSS, javascript, framework JQuery, technologie AJAX, traitement d'images Photoshop

3. Un an d'expérience en développement de projets, j'ai utilisé smarty pour développer « XXXXXXXXX », ThinkPHP pour développer « XXXXXXXXX », utilisé la plateforme publique WeChat pour développer le compte public de « Employment Service Network » et utilisé Dream Weaver. Système à développer Via des sites Web d'entreprise, etc.

Recommandations associées :

Résumé des dernières questions d'entretien PHP classiques 2017

Résumé des questions d'entretien PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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