Enregistrez les points clés des entretiens PHP intermédiaires à seniors pendant l'épidémie

藏色散人
Libérer: 2023-04-10 14:32:01
avant
8687 Les gens l'ont consulté

En raison de l'épidémie, il s'agit d'un entretien vidéo. La composition de la partie A comprend un superviseur RH et un chef de produit. La personne directement responsable de cet entretien est le directeur technique A. Les deux autres semblent être des chefs de départements différents (B et C). ) dans la même position (enfin, tous âgés de 35 ans et plus).

Allons droit au sujet sans trop en dire. (Certaines personnes veulent utiliser des deux-points pour les séparer, mais la touche deux-points et l'onglet du clavier semblent cassés)

Au début, HR a présenté les membres et les postes impliqués dans l'entretien, puis a compris ses questions. Le manager a interrogé Ben sur sa démission. Raisons et questions que vous souhaitez connaître.

Puis le véritable drame commence.

Directeur A : Voyant que vous maîtrisez très bien MySQL, parlez-moi du niveau d'isolement de MySQL. .

Moi : Les niveaux d'isolement des transactions MySQL du plus élevé au plus élevé sont les lectures non validées, les lectures validées, les lectures répétables et les sérialisées. Le niveau d'isolement par défaut de MySQL est la lecture répétable. Le problème qui peut être causé par la concurrence des transactions est la lecture sale. , lecture non répétable, lecture fantôme, puis développe respectivement les opérations et les solutions qui provoquent ces situations.

Directeur A : Quelle est votre stratégie pour modifier le niveau d'isolement dans des scénarios réels.

Moi : .... (Les points de suspension ici signifient que j'ai inventé des bêtises. En fait, je suis un peu confus, car je n'ai traité que des dizaines de millions de données de visite, mais ce n'est pas une concurrence élevée, donc n'implique pas de modifier le secteur d'isolation, ou je n'y réfléchis généralement pas assez profondément)

Directeur A : Quels sont les index d'innodb et comment sont-ils implémentés.

Moi : la clé primaire est un index commun commun unique, qui peut être implémenté par B-tree, B+ tree et hash.

Directeur A : Quelles sont les différences entre ces implémentations ? Quelles stratégies utilisez-vous pour les choisir lors de la conception des index ?

Moi : B-tree et B+ tree sont différents dans les données sur les nœuds feuilles et la profondeur de l'arbre. Pour la même récupération, B-tree nécessite une IO de plus que B+-tree. Choisissez différents algorithmes d'indexation en fonction du scénario commercial réel. S'il s'agit de plus de lecture et moins d'écriture, je choisirai B + tree (en fait, je ne sais pas, car j'ai oublié)

Directeur A : La classification et la fonction des verrous MySQL. , que faites-vous ? Scénarios d'utilisation réels.

Moi : (J'étais un peu nerveux à ce moment-là, car les entretiens précédents allaient du superficiel au profond)... Ensuite, j'ai brièvement exprimé ma compréhension, mais en fait la réponse n'était pas satisfaisante. Parce que B et C insèrent également d’autres questions.

Directeur B : Connaissez-vous la distribution, comment implémenter des verrous distribués et avez-vous entendu parler d'etcd ?

Moi : Vous pouvez utiliser redis' setnx combiné avec le délai d'expiration pour implémenter cela, car j'ai déjà implémenté cela dans mon entreprise, etcd, mais je n'ai jamais compris cela (je n'ai pas ce concept en tête), et, (interrompu)

Directeur C : Le temps est limité, continuons avec d'autres questions. Voyons si vous avez fait de l'optimisation PHP et comment utiliser opcahche.

Moi : (J'ai réfléchi un instant), Optimisation de l'analyse du code d'opération.

Directeur C : Où est l'opcode ?

Moi : Je n'ai aucune impression de cela, (je n'en ai vraiment aucune impression, car basé sur le scénario commercial avant, je suis parti du front-end, du cdn, du proxy inverse du serveur, du cache de base de données et de l'optimisation du code logique du programme, le projet a été qualitativement amélioré, mais c'est la seule chose qui n'a pas de contact avec opchache et opcode. Quelle erreur)

Directeur C : Décrivez brièvement le processus d'obtention de l'URL, concentrez-vous simplement dessus

Mon navigateur saisit l'URL et l'analyse dans une adresse IP, puis envoie la demande au serveur Web si c'est le cas. nginx, il sera envoyé à PHP-FPM via cgi, puis attendra que le script PHP analyse, traite la logique et réponde aux données.

Directeur C : Qu'est-ce que cgi et à quoi sert-il ? Moi : cgi est un protocole, qui est un protocole permettant aux langages comme PHP de communiquer avec les serveurs web.

Directeur B : Quel est le modèle architectural de PHP-FPM et comment l'avez-vous optimisé ?

Moi : Il s'agit d'un modèle d'architecture maître (principal)-travailleur (processus de travail). C'est le processus de travail qui traite réellement les demandes. Le maître gère et recycle principalement les processus enfants. S'il est optimisé, le nombre de ses processus a été modifié. . Permettez-moi de donner un bref résumé de la configuration : en raison du mode statique configuré auparavant, le nombre de processus par défaut était de 200. Plus tard, lorsqu'il y avait une certaine concurrence, je devrais le changer en mode de configuration "troisième" et configurer le nombre spécifié de processus. Il y a une valeur minimale et maximale (la valeur maximale est en fait oubliée ici, je pense juste qu'il ne doit pas y avoir de limite, après tout, les ressources matérielles sont le plafond), puis augmenter dynamiquement le nombre de processus en fonction de le nombre réel de demandes.

Directeur B : Y a-t-il d'autres optimisations ?

Moi : (Je suis resté silencieux un moment. En fait, j'ai fait d'autres modifications lors de la révision, mais j'ai oublié. J'avais l'impression que l'entretien était étiré), et Je l'ai fait à ce moment-là. Cela provenait d'autres optimisations, mais je ne m'en souviens pas.

Directeur B : Parlez-moi du RabbitMQ que vous utilisez et de votre compréhension de celui-ci.

Moi : (décrivant brièvement l'architecture de RabbitMQ) et mes scénarios d'utilisation et mon activité.

Directeur B : Parlez-moi du mode sujet que vous utilisez

Moi : (J'ai brièvement décrit le processus d'utilisation du sujet, qui est considéré comme une réussite).

Directeur A : Parlons du sharding Redis.

Moi : Le Sharding est le processus de division des clés en plusieurs instances Redis. Il utilise la mémoire et la puissance de traitement du processeur de plusieurs ordinateurs pour améliorer,,,,

Directeur A : Comment implémenter les classements

Moi : Vous pouvez utiliser le j'ai commandé un ensemble de redis car il a un score ,,,

Directeur A : Utilisez cette fonction pour obtenir la valeur

Moi : (En m'en souvenant, je ne m'en souviens vraiment pas) J'ai oublié ça, quel genre de fonction membre.

Directeur A : Parlons d'AOP, l'avez-vous utilisé ?

Moi : L'aspect programmation d'AOP consiste à utiliser un proxy dynamique et d'autres technologies pour réaliser une maintenance unifiée des modules fonctionnels, un peu à la manière de la façade de Laravel (je ne suis pas sûr, J'y pense, échoue).

Directeur A : Parlons des caractéristiques d'hyperf

Me : Basé sur swoole, un framework de coroutine de plug-in hautes performances et très flexible, il est conteneurisé avec injection de dépendances, mode aop, mode annotation, mode événement. ,

Directeur A : Parlons du pool de coroutines et de la gestion de l'état de la coroutine

Moi : (Je n'y ai pas vraiment répondu ici. En fait, après y avoir réfléchi, j'ai pu répondre à une partie. Au moins l'état de la coroutine on peut répondre)

Directeur A : Si vous connaissez Go, cette question est très simple

Directeur A : Parlons de laravel

Moi : (C'est ma force, donc je ne la décrirai pas brièvement une par une )

Directeur B : Parlons de Linux et du script shell

me : (une brève introduction à Linux et aux commandes courantes et vi), les expressions shell et les définitions et utilisations de variables sont toutes différentes du langage PHP.

Directeur C : Je vois que vous utilisez map réduire pour le traitement par lots de données, parlez-moi de ça

J'ai utilisé map redcue de monogo pour le traitement des données,,, (interrompu)

Directeur C : Je pensais avoir utilisé map réduire de hadoop

Réalisateur A : Parlez-moi de vos projets pour l'avenir

Moi : …

Ce qui précède est une restauration à 100 % de mon entretien vidéo. Plus tard, après y avoir réfléchi attentivement, j'ai découvert qu'il existe en fait des solutions pour beaucoup d'entre eux. , mais pourquoi ? L'effet de cette interview est si impressionnant, le rythme, oui, le rythme. C'est l'intervieweur qui m'a donné des trucs « profonds », qui ont perturbé mon rythme.

Recommandations associées : "Tutoriel vidéo PHP" "Collection de questions d'entretien PHP (Collection)"

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!

Étiquettes associées:
php
source:learnku.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal