Cet article partage principalement avec vous un résumé des questions d'entretien PHP, en espérant aider tout le monde.
1. Qu'est-ce que l'orientation objet ? Quelles sont les principales caractéristiques ?
L'orientation objet est une méthode de conception de programmes, qui contribue à améliorer la réutilisabilité des programmes et rend la structure du programme plus claire. Principales caractéristiques : encapsulation, héritage, polymorphisme.
2. Quelle est la différence entre SESSION et COOKIE ? Veuillez expliquer les raisons et les fonctions du protocole ?
1. Le protocole http stateless ne peut pas distinguer si l'utilisateur provient du même site Web. Oui, le même utilisateur demandant des pages différentes ne peut pas être considéré comme le même utilisateur.
2. SESSION est stocké côté serveur et COOKIE est stocké côté client. La session est relativement sécurisée. Les cookies peuvent être modifiés par certains moyens et ne sont pas sécurisés. La session s'appuie sur des cookies pour la livraison.
Après avoir désactivé les cookies, la session ne peut pas être utilisée normalement. Inconvénients de la session : elle est enregistrée côté serveur, et chaque lecture est lue depuis le serveur, ce qui consomme des ressources sur le serveur. La session est enregistrée dans un fichier ou une base de données côté serveur. Elle est enregistrée dans un fichier par défaut. Le chemin du fichier est spécifié par session.save_path dans le fichier de configuration PHP. Les fichiers de session sont publics.
3. Que signifient les codes 302, 403 et 500 dans le statut HTTP ?
Principes un, deux, trois, quatre et cinq : 1. Série de messages 2. Série de succès 3. Série de redirection 4. Série d'erreurs de demande 5. Série d'erreurs côté serveur
302 : Temporaire transfert réussi, le contenu demandé a été déplacé vers un nouvel emplacement 403 : accès interdit 500 : erreur interne du serveur 401 signifie non autorisé.
4. Commandes pour créer des packages compressés et décompresser des packages sous Linux
Tar.gz:
Packaging: tar czf file.tar.gz file.txt
Extrait : tar xzf file.tar.gz
Bz2 :
Package : fichier bzip2 [-k]
Extrait : fichier bunzip2 [-k]
Gzip (uniquement les fichiers, pas les fichiers originaux)
Package : gzip file1.txt
Décompressez : gunzip file1.txt.gz
Zip : - r Emballez le répertoire
: zip file1.zip file1.txt
Décompresser : décompresser file1.zip
5. Veuillez écrire le type de données (int char varchar datetime text) ce que signifie ; est la différence entre varchar et char ?
Integer char Caractère de longueur fixe Varchar Caractère de longueur variable Datetime Type datetime Texte Type de texte La différence entre Varchar et char char est un type de caractère de longueur fixe. La quantité d'espace allouée occupera autant d'espace. Varchar est un type de caractère de longueur variable. Il prend autant d'espace que le contenu, ce qui peut effectivement économiser de l'espace. Étant donné que le type varchar est variable, le serveur doit effectuer des opérations supplémentaires lorsque la longueur des données change, l'efficacité est donc inférieure à celle du type char.
6. Quelles sont les différences fondamentales entre MyISAM et InnoDB ? Comment la structure de l’index est-elle mise en œuvre ?
Le type MyISAM ne prend pas en charge les transactions et les verrous de table, et est sujet à la fragmentation. Il doit être optimisé fréquemment et a des vitesses de lecture et d'écriture plus rapides, tandis que le type InnoDB prend en charge les transactions, les verrous de ligne et présente des plantages. capacités de récupération. Les vitesses de lecture et d'écriture sont plus lentes que celles de MyISAM.
Créer un index : alerttable tablename add index (`field name`)
7. Envoyer un cookie au client sans utiliser de cookies.
Comprendre : lorsque session_start() est activé, génère un SID constant Lorsque COOKIE est activé, cette constante est vide. Lorsque COOKIE est désactivé, la valeur de PHPSESSID est stockée dans cette constante. En ajoutant un paramètre SID après l'URL pour transmettre la valeur de SESSIONID, la page client peut utiliser la valeur dans SESSION. Lorsque le client ouvre COOKIE et que le serveur ouvre SESSION. Lorsque le navigateur fait la première demande, le serveur enverra un COOKIE au navigateur pour stocker le SESSIONID. Lorsque le navigateur fera la deuxième demande, il stockera le SESSIONID existant
8. et vide()
Isset détermine si la variable existe. Plusieurs variables peuvent être transmises. Si l'une des variables n'existe pas, elle retournera false et déterminera si la variable est vide et fausse. La variable peut être passée. Si elle est vide, elle retournera false.
9. Comment passer des variables entre les pages (au moins de deux manières) ? GET, POST, COOKIE, SESSION, formulaire caché
1. Écrivez une expression régulière qui correspond à l'URL.
'/^(https?|ftps?)://(www).([^./]+).(com|cn|org)(/[w-./?%&=] * )?/je'2. Veuillez écrire un algorithme de tri commun, utiliser PHP pour implémenter le tri à bulles et trier le tableau $a = array() de petit à grand.
Algorithmes de tri courants : tri à bulles, tri rapide, tri par sélection simple, tri par tas, tri par insertion directe, tri Hill, tri par fusion.
L'idée de base de la méthode de tri à bulles est la suivante : effectuer plusieurs analyses de l'arrière vers l'avant (ordre inverse) sur les mots-clés des enregistrements à trier lorsqu'il s'avère que l'ordre de deux mots-clés adjacents fait défaut. ne correspond pas aux règles requises pour le tri, échangez simplement ces deux enregistrements. De cette façon, les enregistrements contenant des mots-clés plus petits se déplaceront progressivement de l'arrière vers l'avant, tout comme des bulles flottant vers le haut dans l'eau, c'est pourquoi cet algorithme est également appelé méthode de tri des bulles.
// 冒泡排序法 Function mysort($arr){ For($i=0;$i<count($arr); $i++){ For($j=0; $j<count($arr)-1-$i; $j++){ If($arr[$j]> $arr[$j+1]){ $tmp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$tmp; } } } Return$arr; } $arr=array(3,2,1); print_r(mysort($arr));
3. Veuillez expliquer la différence entre le passage par valeur et le passage par référence en PHP. Quand passer par valeur et quand passer par référence ?
Passage par valeur : toute modification apportée à la valeur dans la portée de la fonction sera ignorée en dehors de la fonction
Passage par référence : toute modification apportée à la valeur dans la portée de la fonction reflétera également ces modifications en dehors de la fonction
Avantages et inconvénients : Lors du passage par valeur, PHP doit copier la valeur. Cette opération peut s'avérer coûteuse, notamment pour les chaînes et les objets de grande taille. Le passage par référence ne nécessite pas de copier la valeur, ce qui permet d'améliorer les performances.
Quelle est la fonction de error_reporting en PHP ?
Définissez le niveau d'erreur de PHP et renvoyez le niveau actuel.
Veuillez écrire une fonction utilisant une expression régulière (Regular Expression) pour vérifier si le format de l'e-mail est correct.
if(isset($_POST['action']) && $_POST['action']==’submitted’){ $email=$_POST['email']; if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){ echo“电子邮件检测失败”; }else{ echo“电子邮件检测成功”; } }
Écrivez une fonction d'algorithme de tri de tableau bidimensionnel qui peut être universelle. Vous pouvez appeler la fonction intégrée PHP (array_multisort())
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 function array_sort($arr, $keys, $order=0) { if(!is_array($arr)) { return false; } $keysvalue =array(); foreach($arr as$key => $val) { $keysvalue[$key] = $val[$keys]; } if($order == 0){ asort($keysvalue); }else { arsort($keysvalue); } reset($keysvalue); foreach($keysvalueas $key => $vals) { $keysort[$key] = $key; } $new_array =array(); foreach($keysortas $key => $val) { $new_array[$key] = $arr[$val]; } return $new_array; }
S'il vous plaît. utilisez des espaces comme intervalles, divisez la chaîne 'Apple Orange BananaStrawberry' pour former un tableau $fruit,
* Tous les éléments du tableau sont en lettres minuscules et triés par ordre alphabétique
class sort { private $str; public function__construct($str) { $this->str=strtolower($str); } private functionexplodes() { if(empty($this->str)) returnarray(); $arr=explode("",$this->str); return is_array($arr)?$arr:array($arr); } public functionsort() { $explode=$this->explodes(); sort($explode); return $explode; } } $str='Apple Orange Banana Strawberry'; $sortob=new sort($str); var_dump($sortob->sort());
pour la saisie utilisateur Une chaîne de chaînes $string. Il est obligatoire que $string ne puisse contenir que des nombres supérieurs à 0 et des virgules anglaises. Veuillez utiliser des expressions régulières pour vérifier. Si $string ne répond pas aux exigences, un message d'erreur sera renvoyé. 🎜>
class regx { public staticfunction check($str) { if(preg_match("/^([1-9,])+$/",$str)){ return true; } return false; } } $str="12345,6"; if(regx::check($str)) { echo "suc"; } else { echo "fail"; }
Où l'extension de session PHP stocke-t-elle les données de session par défaut D
<?php$str = ’hello你好世界’; echo strlen($str); ?>
array_key_exists()----Déterminer si la clé spécifiée existe dans un tableau
shuffle()----Réorganiser les éléments du tableau dans un ordre aléatoire
array_flip () ----Échangez les clés et les valeurs dans le tableau
array_reverse()----Inversez l'ordre des éléments dans le tableau d'origine, créez un nouveau tableau et revenez
array_unique () ----Supprimer les valeurs en double dans le tableau
Plusieurs méthodes et fonctions permettant à PHP de lire le contenu du fichier ?
Ouvrez le fichier et lisez-le. Fopen()fread()
Ouvrez et lisez une fois et complétez file_get_contents()
Dans le programme suivant, quelle est la valeur de la variable str ? Entrez 111 ?
if( ! $str ) { echo 111; }
La valeur dans $str est : 0, '0', false, null,""
Connaissez-vous certaines technologies PHP (smarty , etc.)?
Smarty, jquery, ajax, memcache, p+css, js, mysqli, pdo, svn, thinkphp, brophp, yii
Quels systèmes de forum PHP connaissez-vous ?
Discuz
Quels systèmes de centre commercial PHP connaissez-vous ?
Ecshop
Quels frameworks de développement PHP connaissez-vous ?
Brophp, thinkphp
Dites-moi ce que vous savez sur la technologie de mise en cache ?
1. La technologie de mise en cache consiste à mettre en cache le contenu dynamique dans des fichiers et à accéder aux pages dynamiques dans un certain laps de temps pour appeler directement les fichiers mis en cache sans avoir à revisiter la base de données.
2. Utilisez Memcache pour la mise en cache.
Quels modèles de conception connaissez-vous ?
Mode usine, mode stratégie, mode élément unique, mode observateur, mode chaîne de commandes
Dites-moi ce que vous savez sur la gestion de code ? Quel logiciel de contrôle de version de code utilisez-vous souvent ?
Habituellement, un projet est développé par une équipe. Chacun soumet son propre code au serveur de versions, et le chef de projet le gère en fonction de la version, ce qui facilite le contrôle des versions, améliore l'efficacité du développement et s'en assure en cas de besoin. Peut revenir à l'ancienne version.
Contrôleur de version couramment utilisé : SVN
Dites-moi ce que vous savez sur SVN ? Avantages et inconvénients ?
SVN est un contrôleur de version. Le code développé par les programmeurs est soumis au serveur de versions pour une gestion centralisée.
Avantages de SVN : gestion centralisée du code, contrôle de version facile, fonctionnement relativement simple et contrôle des autorisations pratique.
Inconvénients : Vous ne pouvez pas modifier à volonté le dossier du projet du serveur.
Comment trouver le chemin vers PHP.ini ?
Il se trouve généralement dans le répertoire d'installation de php, ou dans le répertoire Windows du système Windows.
Mode/extension d'accélération PHP ? Mode/outil de débogage PHP ?
Extension d'accélération Zend Optimizer
Outil de débogage : xdebug
Quelle commande mysql utilisez-vous couramment ?
Afficher les bases de données
Afficher les tables
Insérer dans le nom de la table()valeurs()
Mettre à jour le nom de la table définir field=value où ...
Supprimer du nom de la table où...
Sélectionner * du nom de la table où condition ordonner par... Limite Desc/asc... Regrouper par... Ayant...
Quelle est la commande pour entrer dans la ligne de commande de gestion mysql ?
Mysql -uroot -p Entrez le mot de passe
show databases ; Que fait cette commande ?
Afficher quelles bases de données se trouvent dans le serveur mysql actuel
show create database mysql ; À quoi sert cette commande ?
Afficher l'instruction sql pour créer la base de données
show create table user ; Quel est le but de cette commande ?
Afficher l'instruction sql qui crée la table
desc user Quel est le rôle de cette commande ?
Interroger la structure de la table utilisateur
explain select * from user; Que fait cette commande ?
Obtenir certaines informations associées
show processlist ; Que fait cette commande ?
Afficher quels threads sont en cours d'exécution
AFFICHER LES VARIABLES ; Que fait cette commande ?
Afficher les variables et les valeurs du système
AFFICHER LES VARIABLES comme '%conn%' ; Que fait cette commande ?
显示系统变量名包含conn的值
LEFT JOIN 写一个SQL语句?
SELECTA.id,A.class FROM A LEFT JOIN B ON A.cid=B.id
in, not ni, exist, not exist的作用和区别?
in在什么中
Not in 不在什么中
Exists 存在
Not exists 不存在
怎么找到数据库的配置文件路径?
在数据库安装目录下,my.ini
简述Linux下安装PHP的过程?
安装软件之前先安装编译工具gcc、gcc-c++
拷贝源码包,解包解压缩
Cd /lamp/php进入php目录 ./configure–prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安装目录和配置文件目录 Make 编译 Make install安装 简述Linux下安装Mysql的过程? Groupadd mysql 添加一个用户组mysql Useradd -gmysql mysql 添加一个mysql用户指定分组为mysql Cd /lamp/mysql 进入mysql目录 ./configure–prefix=/usr/local/mysql/ –with-extra-charsets=all Make Make all 简述Linux下安装apache的过程? Cd /lamp/httpd 进去apache软件目录 ./configure–prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr Make Make all HTML/CSS/p/Javascritp: 1. 设计一个页面(4个 p 第一个p 宽960px 居中;第2-4个p 3等分960px;) <style> Body{Text-align:center; Margin:0; Padding:0; } #box{Width:960px; Margin:0 auto; } .small{Width:320px; Float:left; } </style> <pid=’box’> <pclass=’small’></p> <pclass=’small’></p> <pclass=’small’></p> </p> 用javascript取得一个input的值?取得一个input的属性? document.getElementById(‘name’).value; document.getElementById(‘name’).type; 用Jquery取得一个input的值?取得一个input的属性? $(“input[name='aa']“).val(); $(“input[name='aa']“).attr(‘type’); 请您写一段ajax提交的js代码,或者写出ajax提交的过程逻辑。 var xmlhttp; if(window.XMLHttpRquest){ xmlhttp=newXMLHttpRequest(); }elseif(window.ActiveXObject){ xmlhttp=newActiveXObject(‘Microsoft.XMLHTTP’); } xmlhttp.open(‘GET’,’1.php?aa=name’,true); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4){ if(xmlhttp.status==200){ var text=xmlhttp.responseText; } } } xmlhttp.send(null);
简述Cookie的设置及获取过程
设置COOKIE的值:
Setcookie(名称,值,保存时间,有效域);
获取值:$_COOKIE['名称'];
面向对象中接口和抽象类的区别及应用场景?
1、有抽象方法的类叫做抽象类,抽象类中不一定只有抽象方法,抽象方法必须使用abstract关键字定义。
2、接口中全部是抽象方法,方法不用使用abstract定义。
3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。
用面向对象来实现A对象继承B和C对象
Interface B{... }
Interface C{... }
Class Aimplements B,C{ ... }
相关推荐:
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!