Maison >développement back-end >tutoriel php >Partage du résumé des questions d'entrevue PHP

Partage du résumé des questions d'entrevue PHP

小云云
小云云original
2018-03-26 10:37:051468parcourir

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[&#39;action&#39;]) && $_POST[&#39;action&#39;]==’submitted’){
         $email=$_POST[&#39;email&#39;];
         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=&#39;Apple Orange Banana Strawberry&#39;;
$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";
}
Plateforme Windows, le serveur Apache Http n'a pas pu démarrer, quelles sont les idées de dépannage ?

Vérifiez si le port 80 utilisé par Apache est occupé. S'il est occupé, arrêtez d'abord le service. occupant le port 80, puis démarrez le serveur Apache

Où l'extension de session PHP stocke-t-elle les données de session par défaut D

A) Base de données SQLite

B) Base de données MySQL

C) Mémoire partagée

D) Système de fichiers

E) Serveur de session

Si vous souhaitez charger automatiquement une classe, laquelle des les déclarations de fonction suivantes sont correctes C

A) fonction autoload( $class_name)

B) fonction __autoload($class_name, $file)

C) fonction __autoload($class_name )

D) fonction _autoload($class_name)

E) fonction autoload($class_name, $file)

Le programme PHP utilise l'encodage utf-8. résultat de sortie du programme suivant ? B


<?php$str = ’hello你好世界’;
echo strlen($str);
?>
A ) 9                                                                                                                                                                                               

array()----Créer un tableau

array_combine()----Créer un nouveau tableau en fusionnant deux tableaux

range()--- - Créer et renvoyer un tableau contenant la plage d'éléments spécifiée

compact()----Créer un tableau

array_chunk()----Diviser un tableau en plusieurs

array_merge()----Fusionner deux tableaux ou plus en un seul tableau

array_slice()----Supprimer une valeur du tableau en fonction des conditions

array_diff ()--- -Renvoyer le tableau de différence de deux tableaux

array_intersect()----Calculer l'intersection des tableaux

array_search()----Rechercher ce qui est donné dans le tableau La valeur de

array_splice()----supprime une partie du tableau et le remplace

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=&#39;aa&#39;]“).val();
$(“input[name=&#39;aa&#39;]“).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{ ... }

相关推荐:

PHP面试题之算法题

php面试题中面向对象的题目分析

最让人容易出错的10道php面试题

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!

Déclaration:
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