Maison >développement back-end >tutoriel php >Analyse de quelques réponses aux 'Questions d'entretien de recrutement de stagiaires PHP à Xiaomi Spring Shanghai 2019'
Recommandations associées : "Résumé des questions d'entretien PHP en 2019 (collection) "
1 Comment Nginx parvient-il à équilibrer la charge
C'est relativement simple
1 Sondage
C'est la stratégie par défaut, qui alloue chaque requête à un serveur différent une par une dans l'ordre, si le serveur raccroche, il peut être automatiquement éliminé.
upstream fengzp.com { server 192.168.99.100:42000; server 192.168.99.100:42001; }
2. Connexions minimales
Attribuer les requêtes au serveur avec le moins de connexions
upstream fengzp.com { least_conn; server 192.168.99.100:42000; server 192.168.99.100:42001; }
3.
Utilisez le poids pour spécifier le taux d'accès au serveur. Le poids par défaut est 1. La configuration suivante rendra le taux d'accès du serveur 2 deux fois supérieur à celui du serveur 1.upstream fengzp.com { server 192.168.99.100:42000 weight=1; server 192.168.99.100:42001 weight=2; }
4.ip_hash
Chaque requête sera distribuée en fonction de la valeur de hachage de l'adresse IP d'accès, de sorte que les requêtes Web consécutives du même client seront distribuées à le même serveur pour le traitement, ce qui peut résoudre le problème de session. Si le serveur raccroche, il peut être automatiquement éliminé.upstream fengzp.com { ip_hash; server 192.168.99.100:42000; server 192.168.99.100:42001; }ip_hash peut être utilisé en combinaison avec le poids.
2 丶Commandes Linux couramment utilisées
Article de référence :https://www.php.cn/linux-415502.html
3 composants couramment utilisés dans les mini-programmes WeChat
vue 丶texte 丶bouton 丶navigateur 丶vue par défilement... etc.4丶Comment configurer l'hôte virtuel dans Nginx
Article de référence :https://www.php.cn/php-weizijiaocheng-387454.html
5 Différences entre TP5 et le framework Laravel
Article de référence :https://www.php.cn/phpkj/thinkphp/422769.html
6 丶Migration de données dans le framework TP5 et Laravel
Article de référence :https://www.php.cn/js-tutorial-386843 .html
https://www.php.cn/phpkj/laravel/414216.html
7 丶Explication du modèle RBAC
Qu'est-ce que RBACRBAC (Role-Based Access Control) : nom anglais Rose base Access Controller. Ce blog présente la conception du système d'autorisation de ce modèle. L'association directe entre les utilisateurs et les autorisations a été annulée et les autorisations des utilisateurs ont été accordées indirectement via des rôles associés à l'utilisateur et des autorisations associées à des rôles. Cela réalise le découplage. RBAC est divisé en versions suivantes au cours de son processus de développement. RBAC0, RBAC1, RBAC2, RBAC3.8 丶Processus du module de commande
9 丶Opérations après paiement réussi de la commande
10 丶Paramètres Activation par e-mail délai d'expiration de la connexion
Écrire l'horodatage + l'heure d'expiration lors de l'écriture du code d'activation dans la base de données11 La différence entre Redis et Mongodb
1. Les performances
sont relativement élevées et les performances ne devraient pas être un goulot d'étranglement pour nous. De manière générale, Redis et Memcache sont similaires en termes de TPS.2. Commodité de fonctionnement
Redis a ajouté ses propres fonctionnalités de VM après la version 2.0, dépassant les limitations de la mémoire physique pouvant être définie pour la clé ; valeur (semblable à memcache). mongoDB est adapté au stockage de grandes quantités de données. Il s'appuie sur la VM du système d'exploitation pour la gestion de la mémoire et consomme beaucoup de mémoire. Le service ne doit pas être combiné avec d'autres services.4. Disponibilité (problème à point unique)
Pour un problème à point unique : redis, s'appuie sur le client pour implémenter la lecture et l'écriture distribuées ; main Lors de la réplication à partir d'un esclave, chaque fois que le nœud esclave se reconnecte au nœud maître, il doit s'appuyer sur l'intégralité de l'instantané. Il n'y a pas de réplication incrémentielle. En raison de problèmes de performances et d'efficacité, le problème du partitionnement automatique est plus compliqué. n'est pas pris en charge et un mécanisme de hachage cohérent doit être défini par le programme. Une alternative consiste à utiliser le propre mécanisme de réplication de Redis et à utiliser la réplication active (stockage multiple), ou à passer à la réplication incrémentielle (qui doit être implémentée par vous-même). Problèmes de cohérence et problèmes de performances. mongoDB prend en charge maître-esclave, réplicaset (en interne utilisant l'algorithme d'élection paxos, récupération automatique en cas de panne), mécanisme de partitionnement automatique, protégeant le client des mécanismes de basculement et de partitionnement.5. Fiabilité (persistance)
Pour la persistance et la récupération des données, redis prend en charge (snapshot, AOF) : s'appuie sur des instantanés pour la persistance, aof amélioration tout en améliorant la fiabilité , cela a également un impact sur les performances. MongoDB a adopté la méthode binlog depuis la version 1.8 pour prendre en charge la fiabilité de la persistance.6. Cohérence des données (prise en charge des transactions)
La prise en charge des transactions redis est relativement faible et ne peut garantir que chaque opération de la transaction n'est pas exécutée en continu. transactions.7. Scénarios d'application
redis : des opérations et des calculs plus performants avec des volumes de données plus petitsMongoDB : résout principalement le problème de l'efficacité d'accès aux données massives
12 La différence entre redis et memcached
Article de référence : https:// www.php.cn/mysql-tutorials-410551.html
13 丶File d'attente dans redis
Il existe deux façons d'implémenter Redis. file d'attente :
1. Modèle producteur-consommateur.
Version normale :
Par exemple, dans une file d'attente, le producteur A y insère une donnée et le consommateur B affiche les données, mais la file d'attente est toujours vide. C'est donc un à un.
En ce qui concerne le premier entré, premier sorti ou premier entré-dernier sorti, etc., vous pouvez suivre la fonction lpush (pousser une donnée du côté gauche de la file d'attente, c'est-à-dire la tête de la file d'attente) rpush (pousse une donnée du côté droit de la file d'attente, c'est-à-dire la queue de la file d'attente) lpop (identique à la gestion) rpop etc. pour contrôler.
Version bloquante :
Mais la commande ci-dessus revient immédiatement, qu'il y ait des données ou non. Il existe une version améliorée de lpop pour récupérer des données, la version bloquante blpop (block left pop). ,
Utilisation : blpop key1 key2 ... keyn 10
Pré-obtenez les valeurs de plusieurs clés en même temps, et réglez le délai d'attente sur 10s si toutes les clés ou certaines. les clés ont des valeurs, elles seront renvoyées immédiatement. Si Si toutes les clés n'ont aucune valeur, bloquez pendant 10 secondes et retournez
2. Mode éditeur-abonné.
Concept :
Trois utilisateurs A, B et C s'abonnent à une chaîne nommée msg en même temps, puis l'éditeur publie une donnée sur la chaîne de msg, puis A, trois utilisateurs B et C recevront les données.
Remarque :
Évidemment, trois utilisateurs ABC doivent être bloqués. La façon de recevoir les données souscrites doit s'appuyer sur la fonction de rappel enregistrée dans Redis.
Les données publiées ne seront pas reproduites dans Redis, ce qui signifie qu'après leur publication, A, B et C ne les ont pas reçues pour diverses raisons.
14 丶Types de données dans redis
Redis prend en charge cinq types de données : string (string), hash (hash), list (list), set (set) et zset (ensemble trié : ensemble ordonné).
15 丶Événements dans le framework TP
16 丶Injection de dépendances du framework TP
Pas différent de Laravel
17 Opération de séparation lecture-écriture MySQL
Article de référence : https://www.php.cn/mysql-tutorials-360278.html
18 丶La différence entre la base de données varchar et char
varchar récupérera l'espace inutilisé
19 丶La différence entre MyIsam et InnoDB
1. MyISAM : le type de table par défaut, basé sur le type ISAM traditionnel, est l'abréviation de Indexed Sequential Access Method, qui est la méthode standard de stockage des enregistrements et des fichiers. Il n'est pas sécurisé pour les transactions et ne prend pas en charge les clés étrangères. Si vous exécutez un grand nombre de sélections, l'insertion MyISAM est plus appropriée.
2. InnoDB : un moteur qui prend en charge la sécurité des transactions. La prise en charge des clés étrangères, des verrous de ligne et des transactions est sa plus grande fonctionnalité. S'il y a un grand nombre de mises à jour et d'insertions, il est recommandé d'utiliser InnoDB, en particulier pour les situations de simultanéité multiple et de QPS élevé.
1. Différences de verrouillage de table
MyISAM :
myisam ne prend en charge les verrous au niveau de la table que lorsque les utilisateurs utilisent des tables myisam. Les instructions , select, update, delete et insert verrouilleront automatiquement la table. Si la table verrouillée répond à la concurrence d'insertion, de nouvelles données peuvent être insérées à la fin de la table. Vous pouvez également verrouiller la table via la commande lock table. Cette opération permet principalement de simuler des transactions, mais elle est très coûteuse et n'est généralement utilisée que dans des démonstrations expérimentales.
InnoDB :
Innodb prend en charge les transactions et les verrous au niveau des lignes, ce qui est la plus grande fonctionnalité d'Innodb.
Propriétés ACIDES des transactions : atomicité, cohérence, isolation, durable.
Plusieurs problèmes causés par des transactions simultanées : mises à jour perdues, lectures sales, lectures non répétables et lectures fantômes.
2. Différences entre les fichiers de base de données
MyISAM :
myisam appartient à la table du tas
myisam est sur le disque Il y a trois fichiers sur le stockage, chaque nom de fichier commence par le nom de la table et l'extension indique le type de fichier.
.frm est utilisé pour stocker les définitions de table
.MYD est utilisé pour stocker des données
.MYI est utilisé pour stocker les index de table
les tables myisam également prend en charge trois formats de stockage différents :
Tableau statique (par défaut, mais veuillez noter qu'il ne peut pas y avoir d'espaces à la fin des données, elles seront supprimées), table dynamique, table compressée.
InnoDB :
innodb est une table organisée en index
innodb a deux méthodes de stockage, le stockage d'espace de table partagé et le stockage d'espace multi-table
La structure de table des deux méthodes de stockage est la même que celle de myisam, en commençant par le nom de la table et l'extension est .frm.
Si vous utilisez un espace table partagé, les fichiers de données et les fichiers d'index de toutes les tables sont stockés dans un seul espace table. Un espace table peut avoir plusieurs fichiers. Définissez l'emplacement et l'emplacement de l'espace table partagé. les paramètres innodb_data_file_path et innodb_data_home_dir Name, généralement le nom de l'espace table partagé est ibdata1-n.
Si plusieurs espaces table sont utilisés, chaque table dispose d'un fichier d'espace table pour stocker les données et les index de chaque table. Le nom du fichier commence par le nom de la table et a une extension .ibd.
3. Différences d'index
1. À propos de la croissance automatique
La colonne de croissance automatique du moteur myisam doit être un index. , s'il s'agit d'un index combiné, la croissance automatique n'a pas besoin d'être la première colonne. Elle peut être triée puis incrémentée en fonction des colonnes précédentes.
La croissance automatique du moteur innodb doit être un index S'il s'agit d'un index composite, il doit également s'agir de la première colonne de l'index composite.
2. À propos des clés primaires
myisam permet aux tables sans index ni clés primaires d'exister
Les index de Myisam sont toutes des adresses de lignes enregistrées.
Si le moteur innodb ne définit pas de clé primaire ou d'index unique non vide, il générera automatiquement une clé primaire de 6 octets (invisible pour l'utilisateur)
Les données d'innodb fait partie de l'index principal, supplémentaire L'index contient la valeur de l'index principal.
3. À propos de la fonction count ()
myisam enregistre le nombre total de lignes dans le tableau Si count(*) from table est sélectionné; sera retiré directement
Innodb ne sauvegarde pas le nombre total de lignes dans la table. Si vous utilisez select count(*) from table, il parcourra toute la table, ce qui consomme beaucoup d'argent. , après avoir ajouté la condition Where, myisam et innodb la gèrent de la même manière.
4. Index de texte intégral
myisam prend en charge l'index de texte intégral de type FULLTEXT
innodb ne prend pas en charge l'index de texte intégral de type FULLTEXT (pris en charge depuis la version 5.6), mais innodb peut utiliser le plug-in sphinx pour prendre en charge l'indexation en texte intégral, et l'effet est meilleur. (sphinx est un logiciel open source qui fournit des interfaces API dans plusieurs langues et peut optimiser diverses requêtes MySQL).
5.delete from table
Lors de l'utilisation de cette commande, innodb ne recréera pas la table, mais supprimera les données une par une si vous souhaitez effacer. it on innodb Il est préférable de ne pas utiliser cette commande lors de la sauvegarde de tables contenant de grandes quantités de données. (Il est recommandé d'utiliser la table tronquée, mais l'utilisateur doit avoir l'autorisation de supprimer cette table).
6. Emplacement de sauvegarde de l'index
L'index de myisam est enregistré séparément dans le nom de la table + le fichier .MYI.
Les index et les données Innodb sont stockés ensemble dans l'espace table.
20 丶Il existe plusieurs types d'index dans MySQL
1 Index ordinaire
L'index le plus basique est simplement. pour accélérer, améliorer la vitesse des requêtes.
2. L'index unique
est similaire à un index normal, sauf que la valeur de colonne de l'index doit être unique, mais les valeurs nulles sont autorisées, cela est nul, si Index de combinaison, la combinaison des valeurs de colonne doit être unique.
3. L'index de clé primaire
est notre identifiant de clé primaire couramment utilisé. Il s'agit d'un index unique spécial qui n'autorise pas les valeurs nulles. une table. Créez un index de clé primaire.
Caractéristiques :
1) Une table n'a qu'un seul index de clé primaire
2) La clé primaire nécessite une incrémentation automatique
4. Index combiné
C'est-à-dire un index établi par plusieurs champs
Indice de texte intégral
fulltext
. Prise en charge du moteur myisam
6. Clés étrangères
Choses à noter lors de l'établissement de clés étrangères :
1) Les moteurs de table doivent être les mêmes
2) Les types de champs doivent être les mêmes
3) La longueur doit être la même
4) La plage de stockage doit être la même
5) Le champ contrainte doit apparaître dans le champ référencé
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!