Cette interview espère non seulement commencer un nouveau voyage et comprendre le monde, mais est aussi un processus de découverte de ses propres lacunes et une opportunité de déterminer l'orientation du développement futur (apprentissage). (Ci-joint : Carte mentale des points de connaissance de l'entretien)
Recommandations associées : "Résumé des questions d'entretien PHP en 2019 (collection)"
PHP
php est le meilleur langage au monde ! Aucune réfutation acceptée !
1. Notions de base
1. La différence entre session et cookie
La session est une structure de données enregistrée côté serveur, utilisée pour suivre les utilisateurs.
statut, ces données peuvent être enregistrées dans des clusters, des bases de données et des fichiers.
Le cookie est un mécanisme permettant au client de sauvegarder les informations utilisateur. Il est utilisé pour enregistrer certaines informations utilisateur et est également utilisé pour implémenter la session. Sens Unique.
2. Avez-vous utilisé PHP7 ? Découvrez les nouvelles fonctionnalités
PHP7 a réalisé des améliorations révolutionnaires en termes de performances, de nouveaux opérateurs, de syntaxe de variable unifiée, etc.
3, Magic variable
interrogée sur la signification de __dir__, c'est le répertoire où se trouve le fichier de réponses
4, Méthode magique
C'est une question qui est souvent posée je me souviens ceux couramment utilisés, mais j'étais confus quand j'ai soudainement posé des questions sur __invoke()
__construct(), __destruct(), __call(), __callStatic()
, __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(),
__toString(), __invoke(), __set_state(), __clone() et __debugInfo()
2 Structures de données et algorithmes
1, structure de données de pile
Tant que la structure des données pop peut être implémentée dans le code2, tri à bullesTant que le tri à bulles peut être implémenté dans le code 3. La différence entre un arbre binaire complet et un arbre binaire complet Seuls les degrés de nœuds des deux couches inférieures peuvent être inférieurs à 2, et les nœuds de la couche inférieure sont concentrés à l'extrême gauche de la couche Un arbre binaire à certaines positions est un arbre binaire complet et un arbre binaire de profondeur h et 2 ^ h-1 nœuds est
Arbre binaire complet
3. Lié à l'architecture
1 Quelle est la différence entre Laravel et ThinkPHP ? Que dois-je me plaindre de Laravel ? commencé avec le routage, différents niveaux du middleware aux contrôleurs, en passant par l'accès aux données, les vues, etc. sont introduitsSi vous voulez vous plaindre, laravel peut être un peu "lourd" par rapport à certains projets
2. avez-vous déjà publié votre propre package avec composer ? (développement modulaire PHP basé sur Composer)
L'intervieweur a dit que son framework est le sien Un cadre de développement secondaire basé sur Discuz Sur la base de son excellente base, la gestion des dépendances du compositeur est également introduite dans blabla
3 Parlez de la compréhension de MVC
IV. Protection
1, attaque de script intersite XSS 2, attaque de trafic DDOS
3. , CSRF Attaque de falsification de requêtes intersites 4, injection SQL
Contrôler ou limiter les entrées de l'utilisateur dans le formulaire front-end
Filtrer lorsque des paramètres et des données sont transmis dans le back-end, etc.
5. Projet
1. Comment résoudre le problème de concurrence dans le projet
Ma solution est de contrôler d'abord les requêtes valides sur le front-end. , par exemple, une seule requête normale par minuteAlors Le backend filtre également les demandes invalides, puis met les opérations dans la file d'attente à mettre en œuvre
Un intervieweur a demandé : votre file d'attente est-elle bloquée ? Si deux utilisateurs achètent réellement en même temps, deux utilisateurs attendront.
Terminé, ils utilisent toujours le même fil pour terminer, avez-vous envisagé d'utiliser d'autres moyens pour y parvenir
J'ai dit non, il a dit oui
Grâce au mécanisme de verrouillage, le second attend que le premier se termine, l'un après l'autre
2. Le processus spécifique de mise en œuvre du paiement WeChat
2. Appelez l'API de commande unifiée pour générer une commande prépayée
3. Générez les paramètres de paiement appelés par la page JSAPI et signez 4. Le navigateur WeChat active automatiquement le paiement
Paiement de l'interface JSAPI
5. Confirmer le paiement
6. Communication asynchrone
Informez le commerçant du résultat du paiement, et le commerçant recevra la notification et renverra le message de confirmation
7. Renvoyez le résultat du paiement et affichez
Afficher les informations de paiement à l'utilisateur
3, implémentez simplement la fonction de connexion et d'enregistrement
4, Comment pour concevoir un centre commercial
Je me suis d'abord limité à un centre commercial B2C, puis j'ai commencé avec le tableau de données, et ensuite simplement
Présentation de la logique de mise en œuvre front-end et back-end
MYSQL
L'optimisation MySQL est fondamentalement une priorité absolue, en particulier la technologie de test
1 Bases
1 Quelle est la différence entre InnoDB et MyISAM
Fourni par. Traitement des transactions InnoDB, verrous au niveau des lignes, prend en charge les clés étrangères, prend en charge plusieurs formats de lignes
MyISAM ne prend en charge que les verrous au niveau des tables, les index de texte intégral, les tables de tas
2, quelles sont les caractéristiques des transactions
Atomicité, cohérence, isolation, durabilité
3, niveau d'isolement des transactions
Lecture non validée, lecture validée, lecture répétable, sérialisable
4, il existe un champ de table de O_Id, OrderDate, OrderPrice et Customer Nous voulons connaître le total de la commande. Les clients dont le montant est inférieur à 2000
1 2 3 4 5 6 7 |
|
5, interrogent les données dans la table des étudiants, ceux qui sont supérieurs à 60 sont réussis, sinon ils échouent
select score,category=Case
QUAND score
>=60 PUIS 'réussi'
AUTRE 'échoué'
'
FIN
à partir du tableau de scores
6, interrogez le numéro d'étudiant et le nom des étudiants qui n'ont pas terminé tous les cours
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
2 . Optimisation
1, "sélectionnez * de l'élève où nom='red'","sélectionnez *. from student which name='blue'", optimisez l'instruction
1 2 3 4 5 6 7 |
|
Si vous utilisez la condition or, la table myisam peut utiliser l'index, mais innodb ne le peut pas.
innodb remplace OR par UNION (applicable aux colonnes d'index)
2, comment optimisez-vous généralement la base de données
Cache de requêtes, EXPLAIN, index (joint), utilisation fixe longueur Table statique
Serveur
1. 🎜 >Comment protéger le serveur
N'ouvrir que des ports limités, restreindre les adresses IP de connexion, restreindre les comptes de connexion
C'est aussi une question qui peut être commandée dans un livre, et qui peut être répondu selon le projet
2. ProtocoleQuelle est la différence entre Get et Post
Les paramètres de Get sont inclus dans l'URL. La requête GET sera activement mise en cache par le navigateur et est codée en URL. Il existe une limite de caractères pour que les paramètres soient des caractères ASCII
Post transmet les paramètres via le corps de la requête, et Il existe plusieurs méthodes d'encodageComment traiter les requêtes de script php lors de la configuration de nginx
La configuration par défaut est de transmettre à FastCGI pour le traitement
1 Quelles données utilisez-vous Redis pour mettre en cache
Selon le projet, certaines d'entre elles ? les données que vous mettez en cache doivent souvent être mises en cache. Données utilisées
2. Comment Redis persiste-t-il et quelle fréquence de rafraîchissement est configurée
Configurez la persistance aof et actualisez le fichier aof toutes les secondes par défaut ? 🎜>
3. Redis est-il multi-thread Mono-thread (j'ai en fait répondu multi-thread, 233) 4. Comment configurer Redis avec un maître et plusieurs esclaves, et combien de temps cela prend Vous pouvez utiliser Redis Le plan officiel du cluster n'a pas été mis en œuvre dans la pratique. La mise en œuvre peut prendre plusieurs semaines. Terminé5. Gestion du code
Avez-vous déjà utilisé git ? Lorsque deux personnes soumettent le mauvais code, comment le résoudre ?
J'ai utilisé git pour soumettre le code. Si cela se produit, vous pouvez d'abord extraire le code distant vers le code local. , puis modifiez correctement le code en conflit ou le contenu de la balise Git, puis soumettez à nouveau le code 🎜>1. 🎜> Répondez avec humour, mentionner un peu l'entreprise ou vos propres affaires2. Votre équipe idéale Passionné par la technologie, résolvez activement les problèmes et travaillez ensemble
3. Planification de carrière
Front-end approfondi, back-end approfondi, analyse et collecte d'optimisation des données, pénétration du serveurblablaQuestions que je souhaite poser
4. 🎜>Ils demandent généralement quels sont les projets de l'entreprise, sa structure technique, si elle est rentable, etc.Différentes entreprises ont des piles de technologies différentes et ont des préoccupations différentes. Certaines d'entre elles poseront des questions sur des solutions spécifiques au problème du blocage. , certains accordent plus d'attention à l'efficacité du projet, et certains prêtent également attention à la construction de serveurs, s'ils ont construit leurs propres frameworks et leur compréhension des frameworks populaires. , vous pourrez peut-être trouver l'orientation de développement que vous souhaitez dans le processus
Postscript
J'ai reçu 7 offres de 9 entreprises en 5 jours, ce qui est plutôt bien. Lors de l'entretien, la plupart des entreprises poseront des questions détaillées en fonction des éléments du CV. En même temps, vous pouvez voir l'étendue de la technologie (combien de projets ou de compétences vous avez expérimentés) et la profondeur de la technologie (optimisation des données, compréhension et production du cadre, service Attaque de serveur et pénétration de la défense), j'espère que tout le monde pourra continuer à pratiquer et à apprendre la technologie au fur et à mesure que le projet se développe. (•ㅂ•)/♥ Encourageons-nous les uns les autres ~
Ci-joint : Carte mentale des points de connaissance de l'entretien