Maison > titres > Questions d'entretien PHP pour le recrutement du printemps 2019 (avec réponses)

Questions d'entretien PHP pour le recrutement du printemps 2019 (avec réponses)

幸せな気
Libérer: 2019-09-17 16:56:24
avant
12600 Les gens l'ont consulté

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 code

2, tri à bulles

Tant 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 introduits

Si 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)

J'ai répondu non, je viens de l'apprendre

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

Combiné avec des modèles et des vues de description de projet. , la relation entre les contrôleurs et la composition de base

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 minute

Alors 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

1. La page H5 initie une demande de paiement et demandes de génération d'un ordre de paiement

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

Chaque framework considère différents aspects, il suffit donc d'écrire le code correspondant selon votre propre compréhension

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

    SELECT Customer,SUM(OrderPrice) FROM 

Orders

    GROUP BY Customer

    HAVING SUM(OrderPrice)<2000
Copier après la connexion

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

    SELECT a.SNO ,a.SNAME  

    FROM student a  

    WHERE a.`SNO` NOT IN  

        ( SELECT b.`SNO` FROM SC b  

        GROUP BY b.`SNO` HAVING COUNT(*) =  

            ( SELECT COUNT(*)  FROM course)

        );
Copier après la connexion

2 . Optimisation

1, "sélectionnez * de l'élève où nom='red'","sélectionnez *. from student which name='blue'", optimisez l'instruction

    select name from student where 

name=&#39;red&#39;
    union
    select 

name from student where name=&#39;blue&#39;
Copier après la connexion

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

Quelle 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'encodage


3. NginX

Comment 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


4. Redis

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 affairesL'argent c'est moins, plus de travail est loin

2. 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 serveurblabla

Questions 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

Questions dentretien PHP pour le recrutement du printemps 2019 (avec réponses)

Étiquettes associées:
source:超全栈
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