Maison >développement back-end >tutoriel php >Résumé des dernières questions d'entretien PHP classiques (Partie 2)

Résumé des dernières questions d'entretien PHP classiques (Partie 2)

黄舟
黄舟original
2017-03-18 09:17:34975parcourir

Résumé des questions d'entretien PHP junior classic (Partie 1)

17. La différence entre isset, vide et is_null

isset détermine si la variable est définie ou vide

  变量存在返回ture,否则返回false
  变量定义不赋值返回false
  unset一个变量,返回false
  变量赋值为null,返回false

Vide : Déterminez si la valeur de la variable est vide. Tout ce qui peut être converti en faux est vide. S'il est vide, il renvoie vrai, sinon il renvoie faux.

    "",0,"0",NULL,FALSE都认为为空,返回true
    没有任何属性的对象都认为是空

is_null : Vérifiez si la valeur entrante (valeur, variable, expression) est nulle

    定义了,但是赋值为Null
    定义了,但是没有赋值
    unset一个变量

Outils de débogage front-end

  • Firefox Firebug

  • Outils de développement Chrome

  • Emmet

  • Outil de vérification du format JSON

19. Décrivez brièvement les différences entre l'index, la clé primaire, l'index unique et l'index conjoint dans

mysql et les performances de la base de données. Quel impact cela a-t-il (à la fois en termes de lecture et d'écriture) (Département technologique de Sina)

Les index sont un type particulier de fichiers (les index de la table de données InnoDB font partie intégrante de l'espace table). Ils contiennent les pointeurs de référence vers tous les enregistrements de la table.

La seule tâche d'un index normal (un index défini par le mot-clé KEY ou INDEX) est d'accélérer l'accès aux données.
Les index normaux permettent aux colonnes de données indexées de contenir des valeurs en double. Si vous pouvez déterminer qu'une certaine colonne de données ne contiendra que des valeurs différentes les unes des autres, vous devez utiliser le mot-clé UNIQUE pour la définir comme index unique lors de la création d'un index pour cette colonne de données. En d’autres termes, un index unique peut garantir l’unicité des enregistrements de données.
La clé primaire est un index unique spécial. Un seul index de clé primaire peut être défini dans une table. La clé primaire est utilisée pour identifier de manière unique un enregistrement et est créée à l'aide du mot-clé PRIMARY KEY.
Un index peut couvrir plusieurs colonnes de données, comme un index INDEX(columnA, columnB), qui est un index conjoint.
Les index peuvent considérablement améliorer la vitesse d'interrogation des données, mais ralentiront la vitesse d'insertion, de suppression et de mise à jour des tables, car lors de l'exécution de ces opérations d'écriture, le fichier d'index doit être exploité.

20. Qu'est-ce qu'une transaction dans une base de données

Une transaction est un ensemble ordonné d'opérations de base de données en tant qu'unité ? Une transaction est considérée comme réussie si toutes les opérations du groupe réussissent, même si une seule opération échoue, la transaction échoue. Si toutes les opérations sont terminées, la transaction est validée et ses modifications sont appliquées à tous les autres processus de base de données. Si une opération échoue, la transaction est annulée et les effets de toutes les opérations de la transaction sont annulés. Les quatre principales caractéristiques de l’ACID sont l’atomicité, l’isolement, la cohérence et la durabilité.

21. Comprenez-vous les attaques XSS ? Comment l’empêcher ?

XSS est une attaque de script intersite. Premièrement, la vulnérabilité de script intersite est utilisée pour exécuter un script construit par l'attaquant en mode privilégié, puis le contrôle Activex non sécurisé est utilisé pour exécuter des comportements malveillants. .

Utilisez la fonction htmlspecialchars() pour filtrer le contenu soumis et matérialiser les symboles spéciaux dans la chaîne.

22. Quelles sont les causes des vulnérabilités d'injection SQL ? Comment l’empêcher ?

Cause de l'injection SQL : pendant le processus de développement du programme, vous n'avez pas prêté attention à l'écriture standard des instructions SQL et au filtrage des

caractères spéciaux, ce qui a permis au client de soumettre des Les instructions SQL via les variables globales POST et GET sont normalement implémentées.

Moyens d'empêcher l'injection SQL :
  1. Activer les paramètres magic_quotes_gpc et magic_quotes_runtime dans le fichier de configuration

  2. Utiliser lors de l'exécution d'instructions SQL

    addslashesConvertir les instructions SQL

  3. Essayez de ne pas omettre les guillemets doubles et simples lors de l'écriture d'instructions SQL.

  4. Filtrez certains mots-clés dans l'instruction SQL : update, insert, delete, select, *.

  5. Améliorez vos compétences de dénomination des tables et des champs de base de données, et nommez certains champs importants en fonction des caractéristiques du programme, afin qu'ils soient difficiles à deviner.

  6. Définissez register_globals sur off dans le fichier de configuration Php, désactivez l'enregistrement des variables globales

  7. Contrôlez

    message d'erreur, faites ne parcourez pas les informations d'erreur de sortie sur le serveur et n'écrivez pas les informations d'erreur dans le fichier journal.

23. Quelles sont les principales méthodes d'attaque sur les sites Web PHP ?

  1. Injection de commandes

  2. Injection d'évaluation

  3. Insertion de script client

  4. Cross Site Scripting (XSS)

  5. Injection SQL

  6. Requête Cross Site

    Forgeries, CSRF)

  7. Détournement de session

  8. Fixation de session

  9. Partage de réponse HTTP

  10. Vulnérabilité de téléchargement de fichiers (attaque de téléchargement de fichiers)

  11. Traversée de répertoire (traversée de répertoire)

  12. Attaque d'inclusion à distance (inclusion à distance)

  13. Variable dynamique

    Évaluation)

  14. Attaque d'URL (attaque d'URL)

  15. Formulaire falsifié de soumission de formulaire

    Soumissions

  16. Attaque d'usurpation de requête HTTP (requêtes HTTP usurpées)

24. Que sont l'entrée unique et les entrées multiples dans le cadre ? Quels sont les avantages et les inconvénients de l'entrée unique ?

  1. Duokou répond aux demandes des utilisateurs en accédant à différents fichiers. Un programme Web à entrée unique dirige toutes les requêtes vers un fichier de script.

  2. Une entrée unique facilite le contrôle des autorisations et facilite les contrôles de sécurité sur les requêtes http.
    Inconvénients : L'URL n'est pas si belle, et surtout peu conviviale pour les moteurs de recherche.

25. Pour la base de données relationnelle, l'indexation est un concept très important. Veuillez répondre à quelques questions sur l'indexation :

a ), qu'est-ce que c'est. le but de l’indexation ?
  1. Accédez rapidement à des informations spécifiques dans la table de données et améliorez la vitesse de récupération

  2. Créez un index unique pour garantir l'unicité de chaque ligne de données dans le sexe de la table de base de données.

  3. Accélérez les tables et les jointures entre les tables

  4. Lorsque vous utilisez des clauses de regroupement et de tri pour la récupération de données, vous pouvez réduire considérablement le regroupement dans les requêtes et le temps de tri

b) Quel est l'impact négatif des index sur le système de base de données ?

Impact négatif :
La création et la maintenance d'index prennent du temps, et ce temps augmente à mesure que la quantité de données augmente. Les index doivent occuper de l'espace physique, et non seulement les tables doivent occuper des données ; Espace, chaque index doit également occuper de l'espace physique ; lorsque la table est ajoutée, supprimée, modifiée, l'index doit être maintenu dynamiquement, ce qui réduit la vitesse de maintenance des données.

c). Quels sont les principes d’indexation des tableaux de données ?
  1. Créez un index sur les champs les plus fréquemment utilisés pour affiner la portée de la requête.

  2. Créer des index sur les champs fréquemment utilisés qui doivent être triés

d). Dans quelles circonstances est-il inapproprié de créer un index ?
  1. Il n'est pas approprié de créer un index pour les colonnes rarement impliquées dans des requêtes ou des colonnes avec de nombreuses valeurs en double.

  2. Pour certains types de données spéciaux, il n'est pas approprié de créer des index, tels que des champs de texte (texte), etc.

26. Décrivez brièvement la différence entre MyISAM et InnoDB dans la Base de données MySQL

La caractéristique la plus importante qui le distingue des autres bases de données est son plug. -moteur de stockage de table de type in. N'oubliez pas : le moteur de stockage est basé sur des tables et non sur des bases de données.

La différence entre InnoDB et MyISAM :

Moteur de stockage InnoDB : Principalement pour les applications OLTP (Online Transaction Processing, traitement des transactions en ligne), c'est le premier support complet ACID moteur de stockage de transactions (le premier moteur de stockage de BDB à prendre en charge les transactions, a arrêté son développement).

Caractéristiques :

  • Conception de verrouillage de rangée, prise en charge des clés étrangères

  • Support similaire à Oracle ; Lecture non verrouillable cohérente avec le style (c'est-à-dire : les opérations de lecture ne généreront pas de verrous par défaut

  • InnoDB place les données dans un espace table logique, effectué par InnoDB lui-même) ; À partir de la version MySQL 4.1, chaque table du moteur de stockage InnoDB peut être stockée dans un fichier ibd indépendant

  • InnoDB utilise MVCC (Multi-version Concurrency Control : la lecture bloquera l'écriture et l'écriture ; ne bloquera pas la lecture) pour obtenir une simultanéité élevée, et implémente les 4 niveaux d'isolement du standard SQL (la valeur par défaut est le niveau REPEATABLE)

  • InnoDB fournit également des performances élevées et une haute disponibilité ; des fonctions telles que l'insertion de tampon, la double écriture, l'index de hachage adaptatif et la lecture anticipée

  • InnoDB utilise une méthode clusterisée pour stocker les données dans la table. clé primaire (si la clé primaire n'est pas explicitement spécifiée lors de la création de la table, InnoDB générera un 6 pour chaque ligne. octet ROWID, et l'utilisera comme clé primaire

  • La clé primaire) ; La table InnoDB aura trois champs cachés : En plus du DB_ROW_ID de 6 octets mentionné ci-dessus, il existe également un DB_TX_ID (ID de transaction) de 6 octets et un DB_ROLL_PTR de 7 octets (pointant vers l'adresse du segment d'annulation correspondant). Cela peut être vu via Innodb Monitor ;

Moteur de stockage MyISAM : est le moteur de stockage officiellement fourni par MySQL, principalement pour OLAP (Online Analytical Processing, analyse en ligne et traitement) des demandes.
Caractéristiques :

  • Ne prend pas en charge les transactions, mais prend en charge les tables et les index de texte intégral. La vitesse de fonctionnement est rapide ;

  • La table du moteur de stockage MyISAM se compose de MYD et MYI, MYD est utilisé pour stocker les fichiers de données et MYI est utilisé pour stocker les fichiers d'index. La base de données MySQL met uniquement en cache ses fichiers d'index, et la mise en cache des fichiers de données est laissée au système d'exploitation lui-même
    À partir de la version MySQL 5.0, MyISAM prend en charge 256 T de données de table unique par défaut ;

27. Expliquez les différences entre les jointures externes, les jointures internes et les auto-jointures MySQL

Tout d'abord, qu'est-ce que la jointure croisée : jointure croisée Également appelé produit cartésien, il fait référence à la mise en correspondance directe de tous les enregistrements d'une table avec tous les enregistrements d'une autre table sans utiliser aucune condition.

Jointure interne est une connexion croisée avec uniquement des conditions. Les enregistrements qui remplissent les conditions sont filtrés en fonction d'une certaine condition. Les enregistrements qui ne remplissent pas les conditions n'apparaîtront pas dans le résultat. set, c'est-à-dire que les jointures internes connectent uniquement les lignes correspondantes.
Jointure externe L'ensemble de résultats contient non seulement des lignes qui répondent aux conditions de jointure, mais inclut également toutes les lignes de données
dans la table de gauche, la table de droite ou les deux. Ces trois situations sont appelées. Il s’agit d’une jointure externe gauche, d’une jointure externe droite et d’une jointure externe complète.

Jointure externe gauche, également appelée jointure gauche, la table de gauche est la table principale, tous les enregistrements de la table de gauche apparaîtront dans l'ensemble de résultats, et les enregistrements qui ne correspondent pas dans la table de droite doivent toujours être affiché, à droite Les valeurs des champs correspondants sont remplies de NULL. Jointure externe droite, également appelée jointure droite, la table de droite est la table principale et tous les enregistrements de la table de droite apparaîtront dans le jeu de résultats. Les jointures gauche et droite sont interchangeables et MySQL ne prend actuellement pas en charge les jointures externes complètes.

28. Notez les noms de plus de trois moteurs de stockage de bases de données MySQL (astuce : ne respecte pas la casse)

MyISAM, InnoDB, BDB (BerkeleyDB), Merge, Memory (Heap), Exemple , Federated,
Archive, CSV, Blackhole, MaxDB et plus d'une douzaine de moteurs

29. Qu'est-ce que orienté objet ? Quelles sont les principales caractéristiques ? Quels sont les grands principes ?

Orienté objet est un modèle de conception d'un programme, qui contribue à améliorer la réutilisabilité du programme et rend la structure du programme plus claire. Les principales fonctionnalités sont : l'encapsulation, l'héritage et le polymorphisme.
Cinq Principes de base : Principe de responsabilité unique ; Principe de remplacement ; Principe de séparation des interfaces ;

30. Qu'est-ce que le routage statique et quelles sont ses caractéristiques ? Qu'est-ce que le routage dynamique et quelles sont ses caractéristiques

Réponse de référence :
Les routes statiques sont des routes spécifiées par des tables de routage conçues et construites par les administrateurs système. Il convient aux réseaux où le nombre de passerelles est limité et où la topologie du réseau ne change pas fréquemment. Son inconvénient est qu'il ne peut pas s'adapter dynamiquement aux changements des conditions du réseau. Lorsque les conditions du réseau changent, la table de routage doit être modifiée par l'administrateur réseau.
Le routage dynamique est construit dynamiquement par les protocoles de routage. Les protocoles de routage mettent à jour le contenu des tables de routage en temps réel en échangeant les informations de routage qu'ils possèdent. Le routage dynamique peut apprendre automatiquement la topologie du réseau et mettre à jour la table de routage. L’inconvénient est que le routage des informations de mise à jour diffusées occupera une grande quantité de bande passante réseau.

31. Avez-vous déjà utilisé le cache Memcache ? Si oui, pouvez-vous décrire brièvement son fonctionnement ?

Memcahce stocke toutes les données en mémoire à l'aide d'une table de hachage. Chaque donnée est composée d'une clé et d'une valeur. Chaque clé est unique. Lorsque vous souhaitez accéder à une certaine valeur, suivez d'abord les étapes pour la trouver. valeur et renvoie le résultat.
Memcahce utilise l'algorithme LRU pour effacer progressivement les données expirées.

32. Listez les frameworks Ajax populaires ? Expliquez quel est le principe de mise en œuvre d'Ajax et quel rôle joue json dans Ajax ?

Les frameworks Ajax populaires incluent jQuery, Prototype, Dojo et MooTools.

Le principe de fonctionnement d'Ajax est que l'emplacement spécifié d'une page peut charger tout le contenu de sortie d'une autre page de cette manière, une page statique peut également obtenir les informations de données renvoyées par la base de données. Par conséquent, la technologie Ajax permet à une page Web statique de communiquer avec le serveur sans actualiser la page entière, réduisant ainsi le temps d'attente des utilisateurs, réduisant ainsi le trafic réseau et améliorant la convivialité de l'expérience client.
Lors de l'utilisation d'Ajax, cela implique la transmission de données, c'est-à-dire le renvoi des données du serveur au client. Le serveur et le client utilisent des langages de script différents pour traiter les données, ce qui nécessite un format de données commun, XML<.> et json sont les deux plus couramment utilisés, et json est plus simple que XML.

33. Présentation du mécanisme d'annulation de transaction dans Myql

Une transaction est une séquence d'opérations de base de données définie par l'utilisateur. Ces opérations sont soit effectuées en totalité, soit aucune. travail. L'annulation de transaction fait référence à l'annulation des opérations de mise à jour de la base de données qui ont été effectuées par la transaction.

Lorsque vous souhaitez modifier deux tables différentes dans la base de données en même temps, s'il ne s'agit pas d'une transaction, lorsque la première table est modifiée, une exception peut survenir lors du processus de modification de la deuxième table et elle ne peut pas être modifiée . A ce stade, seule la deuxième table peut être modifiée. Les deux tables sont toujours dans leur état non modifié, tandis que la première table a été modifiée. Et lorsque vous les définissez comme transaction, lorsque la première table est modifiée et que la deuxième table est modifiée anormalement et ne peut pas être modifiée, la première table et la deuxième table reviendront à l'état non modifié. C'est ce qu'on appelle l'annulation de la transaction.

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