Les entretiens Baidu, en particulier le premier entretien, ne sont globalement pas difficiles. Les deux premières séries d'entretiens techniques nécessitent du code manuscrit et les principales catégories impliquées incluent les fondements du langage, les modèles de conception, les fondements des algorithmes et les bases de données. La chose la plus importante est la fondation, la fondation, la fondation. Il couvre un large éventail de sujets, mais ce sont autant de choses qu'un programmeur devrait et devrait savoir. Les réponses sont à titre indicatif seulement. (L'article est tiré d'Internet)
Maintenant, nous avons compilé 10 questions comme suit :
1 Quel est le problème de débordement d'entier en PHP ?
2. pour comprendre la POO
3. Votre compréhension des modèles de conception et de MVC
4 La différence entre le protocole HTTP 1.0 et 1.1, et parler brièvement du protocole HTTP
5. Parlez brièvement du mécanisme de réécriture dans Apache et du mécanisme de routage URI dans le framework PHP
6, des principes d'utilisation des index composites
7. InnoDB
8. Parlez brièvement de l'algorithme de tri rapide
9 Utilisation de base de awk, sed, sort (examiné avec des exemples)
Utilisation et compréhension de Memcached. et redis
= ========================================= ======
【1】Quel est le problème de débordement d'entier en PHP ?
La longueur des mots des nombres entiers de PHP est liée à la plateforme. le type entier le plus grand est supérieur à deux milliards, en fait, il est 2 à la puissance 31, et le minimum est -2 à la puissance 31. PHP ne prend pas en charge les entiers non signés. Si un nombre dépasse la plage des nombres entiers, il sera automatiquement interprété comme un flottant. Si le résultat de l'opération effectuée dépasse la plage d'entiers, float sera également renvoyé. (Qu'en est-il du débordement d'entiers en Java et C)
[2] Comment comprendre la POO
La POO, la programmation orientée objet, comprend trois aspects, l'héritage et l'encapsulation, le polymorphisme, la chose la plus fondamentale est une abstraction.
L'héritage, c'est-à-dire l'extensibilité, étend les fonctions d'une classe parent existante via des sous-classes.
L'encapsulation nécessite que l'extérieur ne puisse pas accéder à volonté aux données internes de l'objet, c'est-à-dire que l'implémentation spécifique dans la classe est encapsulée. Les utilisateurs n'ont pas besoin de connaître l'implémentation interne spécifique, tant qu'ils la connaissent. ce qu'il fait et comment l'utiliser.
Le polymorphisme est l'abstraction et l'interface d'une classe, ainsi que la capacité de la même classe à gérer plusieurs types d'objets.
En réalité, tout ce que nous voyons peut être considéré comme un objet, puis grâce à une abstraction plus poussée en classes, les classes peuvent évoluer en de nombreux objets similaires. Pour donner un exemple simple, résumez une maison que nous voyons dans une classe ROOM, comprenant les portes, fenêtres, tables et autres objets de base, ainsi que des fonctions telles que l'entrée et la sortie des personnes. Nous héritons désormais de la classe ROOM en tant que Classroom, qui comprend des portes, de grandes fenêtres, des tables et des chaises, ainsi qu'un noir et blanc et un podium où les enseignants et les camarades de classe peuvent assister aux cours. Nous instancions maintenant cette classe Classroom en tant qu'objet Classroom_621, comprenant deux portes, quatre grandes fenêtres, 30 ensembles de tables et de chaises, et certains étudiants suivent des cours de Mao Zedong.
【3】Votre compréhension des modèles de conception et de MVC
Modèle-Vue-Contrôleur, modèle, vue, contrôleur Quand vous pensez à MVC, vous penserez à JAVA, car JAVA est un. complètement orienté Langage objet, MVC est apparu pour la première fois dans Smalltalk. Son objectif est de séparer la vue du modèle de données, afin que différents programmes puissent avoir des affichages différents.
Le modèle fait référence aux fonctions, algorithmes et modèles de données écrits par les programmeurs, ce que nous appelons la couche de logique métier du système.
Vue, c'est-à-dire interface graphique frontale. Affiché aux utilisateurs.
Contrôleur, principalement responsable du traitement des demandes, du transfert et du chargement des vues.
Les modèles de conception, pour parler franchement, sont le résumé et la classification de l'expérience de conception de code. Les modèles de conception ont été utilisés pour la première fois dans l'industrie de la construction. Les modèles de conception de programmation sont décrits dans le premier GoF, comprenant 23 modèles de conception, principalement. utilisé pour la programmation procédurale orientée objet. Suivez plusieurs principes de conception : principe d'ouverture et de fermeture, principe de responsabilité unique, principe de substitution de Liskov, injection de dépendances, séparation d'interface, principe Dimit, préférence à la composition plutôt qu'à l'héritage, etc. Il comprend trois catégories : le modèle créationnel, le modèle structurel et le modèle comportemental.
【4】La différence entre le protocole HTTP 1.0 et 1.1, et parlons brièvement du protocole HTTP
HTTP, Hypertext Transfer Protocol. Il définit les règles de communication entre le navigateur et le serveur. Le protocole HTTP est basé sur le protocole TCP de TCP/IP. Le World Wide Web utilise désormais la version HTTP1.1. Ses fonctionnalités incluent le mode C/S, des requêtes simples (GET/POST/HEAD) et la flexibilité (peut transmettre n'importe quoi). type de données HTML, XML, JSON, personnalisé, etc.), pas de connexion (une seule requête est traitée par connexion, et la connexion est déconnectée à partir du moment où la requête est émise jusqu'à la réception du statut 200), apatride.
L'enquête sur le protocole HTTP comprend principalement des points de connaissance tels que le format du message de réponse, le format du message de demande, le code d'état, etc.
Généralement, un protocole HTTP comprend trois parties : la ligne de départ, l'en-tête et le corps.
[Format du message de réponse]
HTTP/1.1 200 0K
Connexion : fermer
Date : jeu. 13 octobre 2005 03:17:33 GMT
Serveur : Apache/2.0.54 (Unix)
Dernier—Nodifié : lundi, 22 juin 1998 09;23;24 GMT
Contenu—Longueur : 682l
Contenu—Type : text/html
Ce message de réponse est divisé en 3 parties : une ligne d'état initiale (ligne d'état), un en-tête et une dépendance contenant l'objet demandé lui-même. La ligne d'état comporte trois champs : le champ de version du protocole, le champ de code d'état et le champ d'expression de motif.
[Format du message de demande]
GET /somedir/page.html HTTP/1.1
Hôte :www.chinaitlab.com
Connexion : fermer
User-agent:Mozilla/4.0
Accept-langue:zh-cn
(caractères de retour chariot et de saut de ligne supplémentaires)
Le message de demande Une ligne est appelée ligne de requête, et les lignes suivantes sont appelées en-têtes. La ligne de requête comporte 3 champs : le champ méthode, le champ URL et le champ version HTTP.
[Code de statut] Voir http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html
1xx Message
2xx Succès
Redirection 3xx
Erreur de demande 4xx
Erreur de serveur 5xx
[Codes d'état communs]
200 OK. La demande a abouti et les en-têtes de réponse ou le corps de données attendus par la demande seront renvoyés avec cette réponse.
300 choix multiples. Il existe plusieurs options pour demander des ressources, comme demander du texte en français, en anglais, etc.
301 déplacé définitivement. Indique que la page Web demandée a été définitivement déplacée vers un nouvel emplacement
302 Trouvé. Indique l'état dans lequel la page revient lors d'un saut temporaire.
304 Non modifié. Les ressources mises en cache du client sont les plus récentes, ce qui oblige le client à utiliser le cache.
400 mauvaise demande. mauvaise demande.
403 Interdit. La demande a été rejetée par le serveur.
404 introuvable. Cela signifie que le serveur ne trouve pas la page Web demandée. Une page Web qui n'existe pas sur le serveur renvoie souvent un code d'état HTTP.
500 Erreur de serveur interne.
Service 503 indisponible. Le serveur n'est actuellement pas en mesure de répondre aux demandes, mais le service sera rétabli en temps voulu.
504 Délai d'expiration de la passerelle. Semblable au statut 408, mais la réponse provient d'une passerelle ou d'un proxy qui a expiré en attendant une réponse d'un autre serveur.
Version HTTP 505 non prise en charge. La version du protocole HTTP n'est pas prise en charge.
[5] Parlons brièvement du mécanisme de réécriture dans Apache et du mécanisme de routage URI dans le framework PHP
1) La réécriture d'URL consiste en fait à transférer l'URL demandée par l'utilisateur via le navigateur en arrière-plan, Apache fait pointer la requête vers le chemin réel de la ressource selon les règles de réécriture préconfigurées. Pour le dire franchement, c'est une astuce bâclée, remodeler le chemin réel et permettre aux utilisateurs d'y accéder. l'utilité de le faire.
1.Référencement. Rendre les URL dynamiques statiques pour satisfaire l'appétit des moteurs de recherche.
2. Contrôle d'accès. Par exemple, après avoir réécrit les règles, il est difficile pour le client de déterminer le type de programme en arrière-plan.
3. Redirection d'URL. Lorsqu'un site Web modifie son nom de domaine ou ajoute une URL d'alias, il peut facilement pointer vers l'URL accessible via des règles.
mod_rewrite utilise des expressions régulières pour modifier dynamiquement l'URL des requêtes entrantes. Il peut mapper des URL aux chemins du système de fichiers ou une URL à une autre. Il utilise un nombre illimité de règles pour manipuler les URL, et chaque règle peut inclure un nombre illimité de conditions supplémentaires. Vous pouvez le détecter de plusieurs manières, telles que les variables de serveur, les variables d'environnement, les en-têtes HTTP, les horodatages, etc.
mod_rewrite exploite l'intégralité du chemin de l'URL, y compris la partie informations sur le chemin. Une règle de réécriture peut être définie dans http.conf ou .htaccess. Le chemin généré par une règle de réécriture peut inclure une chaîne de requête, ou un traitement de sous-programme interne, une redirection de requêtes externes ou une pénétration de proxys internes.
2) Le mécanisme de routage URI dans le framework PHP est similaire à la réécriture Apache, incluant généralement des caractères génériques et des règles régulières. Permet aux utilisateurs de rediriger (remapper) les gestionnaires d'URI. Définir vos propres règles de routage.
[6] Le mécanisme d'indexation de MySQL, principes d'utilisation des index composites
(Le livre MySQL d'une manière simple explique plus en détail l'utilisation des index)
Généralement, les livres sont utilisés. La table des matières du livre introduit le mécanisme d'indexation, notamment le fait que certains livres auront des annexes de recherche rapide spéciales, qui sont très similaires à l'index d'une base de données.
Les index MySQL comprennent 4 catégories : index de clé primaire (clé primaire), index unique (unique), index régulier (index) et index de texte intégral (fullindex).
Afficher l'index de table_name ; - Afficher l'index dans la table
Afficher le statut comme 'Handler_read%' - Afficher l'utilisation de l'index
Index composite, suivez généralement le Principe du préfixe le plus à gauche, tel que les trois colonnes a b c de table_a créent un index composite
créer un index ind_table_a sur table_a(a,b,c);
Ensuite, seuls a, ou a, b sont utilisés dans la condition , ou dans des cas tels que a, b, c, l'index composite nouvellement créé sera utilisé.
【7】Les types de tables MySQL et la différence entre MyISAM et InnoDB
Les types de tables MySQL courants (c'est-à-dire les moteurs de stockage)
afficher les moteurs pour afficher les configurations de types de tables prises en charge. Les plus courants incluent : MyISAM/Innodb/Memory/Merge/NDB
Parmi eux, MyISAM et Innodb sont les deux types de tables les plus couramment utilisés, chacun avec ses propres avantages. Nous pouvons choisir le type de table qui nous convient en fonction. à nos besoins.
[MyISAM]
1) Chaque stockage de base de données comprend 3 fichiers : .frm (définition de table), MYD (fichier de données), MYI (fichier d'index)
2) Les fichiers de données ou les fichiers d'index peuvent pointer vers plusieurs disques
3) Le moteur par défaut de Linux, win par défaut est InnoDB
4) Pour les types non transactionnels, évitez la surcharge supplémentaire des types transactionnels
5) Convient aux tables de sélection et d'insertion intensives
6) Le mécanisme de planification de verrouillage par défaut de MyISAM est la priorité d'écriture, qui peut être définie via LOW_PRIORITY_UPDATES
7) Type MyISAM les fichiers de données peuvent être COPIES dans différents systèmes d'exploitation est très important et sera plus pratique lors du déploiement.
[Innodb]
1) Pour les applications transactionnelles
2) Convient aux opérations intensives de mise à jour et de suppression. Lors de l'exécution de select count(*) from table, InnoDB doit analyser la table entière pour calculer le nombre de lignes, mais MyISAM n'a besoin que de lire simplement le nombre de lignes enregistrées. Notez que lorsque l'instruction count(*) contient une condition Where, les opérations des deux tables sont les mêmes. Lorsque DELETE FROM table, InnoDB ne recréera pas la table, mais la supprimera ligne par ligne.
3) Introduction des verrous au niveau des lignes et des contraintes de clé étrangère
4) InnoDB ne prend pas en charge les index de type FULLTEXT
[8] Expliquez brièvement l'algorithme de tri rapide
Idée de base : divisez la séquence à trier en deux parties en une seule passe de tri, dont une partie contient des enregistrements plus petits que l'autre, puis continuez à trier rapidement les deux parties séparément pour obtenir l'ordre.
Implémentation de l'algorithme : il y a deux pointeurs low et high, les valeurs initiales sont low=1, high=n et la valeur de base est la clé (généralement la première est sélectionnée), puis commencez par la position haute et avancez, trouvez le premier enregistrement plus petit que la clé et échangez-le avec la clé, puis recherchez en arrière à partir de la position basse, trouvez le premier enregistrement plus grand que la clé et échangez-le avec la valeur de base, répétez jusqu'à ce que bas = haut. .
Dans le premier résultat du tri, la valeur d'enregistrement avant la clé est inférieure à la valeur d'enregistrement après la clé.
11 25 9 3 16 2 //Sélectionnez 11 comme clé
2 25 9 3 16 11
2 11 9 3 16 25
2 3 9 11 16 25
【9】Utilisation de base de awk, sed, sort (examiné avec des exemples)
[Exemple] : Il existe le test de fichier suivant, veuillez compter le nombre d'occurrences de chaque URL, utilisez un shell pour y parvenir.
a www.baidu.com 20h00
b www.qq.com 19h30
c www.baidu.com 14h00
d www.baidu.com 23h00
e www.qq.com 20h30
f www.360.com 20h30
test de chat| -F' ' '{print $2}' |sort | uniq -c | sort -rn
【10】L'utilisation et la compréhension de Memcached et redis
Memcached et redis sont tous deux identiques Le système de stockage en mémoire de key-Value stocke les résultats de recherche via des tables de hachage pour obtenir un mécanisme de mise en cache puissant. Les sites à fort trafic tels que Weibo et Taobao de Sina doivent utiliser ces éléments.
Ce qui suit est une introduction extraite de l'encyclopédie. La pratique et l’utilisation spécifiques seront présentées en détail ultérieurement.
Memcache est un système de mise en cache d'objets à mémoire distribuée hautes performances. En conservant une énorme table de hachage unifiée dans la mémoire, il peut être utilisé pour stocker des données dans différents formats, notamment des images, des vidéos, des fichiers et des bases de données. résultats de recherche, etc. En termes simples, les données sont appelées dans la mémoire puis lues depuis la mémoire, améliorant ainsi considérablement la vitesse de lecture.
Redis est un système de stockage clé-valeur. Semblable à Memcached, il prend en charge relativement plus de types de valeurs stockées, notamment string (string), list (liste chaînée), set (set) et zset (ensemble ordonné).
Hors sujet :
L'ensemble du processus d'entretien a été très agréable et j'ai senti que les intervieweurs étaient assez décontractés. Pas aussi arrogant que d'autres l'ont dit. Les entretiens de Baidu sont ouverts et des personnes à proximité discutent des problèmes et des plans tout au long du processus d'entretien.