Maison >développement back-end >tutoriel php >Résumé des questions d'entretien php

Résumé des questions d'entretien php

不言
不言original
2018-04-21 10:27:358743parcourir

Le contenu présenté dans cet article est un résumé des questions d'entretien PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Recommandations associées : ". 2019 Résumé des questions d'entretien PHP (collection)

1. Qu'est-ce que l'orienté 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 ne peut pas distinguer si les utilisateurs proviennent du même site Web. 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 : est enregistré 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 : Transfert temporaire réussi, le contenu demandé a été déplacé vers un nouvel emplacement 403 : Accès interdit 500 : L'erreur interne du serveur 401 représente une autorisation non autorisée.

4. Commandes pour créer un package compressé et décompresser le package sous Linux

Tar.gz:

Package : tar czf file.tar.gz file.txt

Décompression:tar 🎜>Décompresser: bunzip2 [-k] Fichier

Gzip (uniquement les fichiers, ne conservez pas les fichiers originaux)

Package : gzip file1.txt

Décompresser : gunzip file1.gz

Zip : -r Répertoire Pack

: zip file1.zip file1.txt

Décompresser : décompresser file1.zip

5. Veuillez noter la signification du type de données (int char varchar datetime text) ; carboniser?

Int Integer char caractère de longueur fixe Varchar caractère de longueur variable Datetime date time type Type de texte texte

La différence entre Varchar et char

char est un type de caractère de longueur fixe, combien d'espace est alloué, combien d'espace cela prend-il. Varchar est un type de caractère de longueur variable. Il prend autant d'espace que le contenu, ce qui permet d'économiser efficacement 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, 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 dispose de capacités de récupération en cas de crash. Les vitesses de lecture et d'écriture sont plus lentes que celles de MyISAM.

Créer un index : alerttable tablename add index (`field name`)

Envoyer un cookie au client sans utiliser de cookies.

Comprendre : lorsque session_start() est activé, un SID constant est généré. 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, les

8 isset() et empty( ) existants. Différence

Isset détermine si la variable existe. Vous pouvez transmettre plusieurs variables. Si l'une des variables n'existe pas, elle renvoie false et détermine si la variable est vide uniquement. une variable peut être passée. If Renvoie vrai si vide ou faux.

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-./?%&=]*)?/i'

2 Veuillez noter les algorithmes de tri courants et utiliser les implémentations PHP. tri à bulles, triant le tableau $a = array() du petit au 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 de scanner plusieurs fois les mots-clés des enregistrements à trier de l'arrière vers l'avant (dans l'ordre inverse) lorsqu'il s'avère que l'ordre de deux mots-clés adjacents n'est pas conforme. avec les règles nécessaires au tri, ce seront deux enregistrements qui seront échangés. 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 sera également reflétée en dehors de la fonction. fonction Modifier

Avantages et inconvénients : Lors du passage par valeur, PHP doit copier la valeur. Surtout pour les chaînes et les objets volumineux, cela peut s'avérer une opération coûteuse. 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“电子邮件检测成功”;
         }
}

Écrire une fonction d'algorithme de tri de tableau bidimensionnel qui est polyvalente et peut 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;
}

Veuillez utiliser des espaces comme intervalles pour diviser 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 que l'utilisateur puisse saisir une chaîne $string, exigences $string ne peut contenir que des nombres supérieurs à 0 et des virgules anglaises. Veuillez utiliser des expressions régulières pour vérifier. Pour les $strings qui ne répondent 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 est utilisé par Apache est occupé. Si c'est le cas, pour occuper, 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 ?

A) Base de données SQLite

B) Base de données MySQL

C) Mémoire partagée

D) Système de fichiers

E ) Session Server

Si vous souhaitez charger automatiquement une classe, laquelle des déclarations de fonction suivantes est correcte ? ($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. B

bd1c6b0b2f54d445124c0e13b53c01b9

A) 9                                                                                                                                                           utf8)

Quelles fonctions liées aux tableaux PHP connaissez-vous ?

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

range() - ---Créer et renvoyer un tableau contenant des éléments dans la plage 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 selon les conditions

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

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

array_search()----Dans le tableau Rechercher une valeur donnée

array_splice()----Supprimer une partie du tableau et la remplacer

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()----Échanger les clés et les valeurs du tableau

array_reverse()--- -Inversez l'ordre des éléments dans le tableau d'origine, créez un nouveau tableau et retournez

array_unique()----Supprimez les valeurs en double dans le tableau

Plusieurs méthodes et fonctions pour lire le contenu d'un fichier en PHP ?

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 de $str est : 0, '0′, false, null,""

Quelles sont les technologies PHP que vous connaissez (intelligentes, etc.) ?

Smarty,jquery,ajax,memcache,p+css,js,mysqli,pdo,svn,thinkphp,brophp,yii

Vous Quels systèmes de forum PHP connaissez-vous ?

Discuz

 

你所熟悉的PHP商城系统 有哪些?

Ecshop

 

你所熟悉的PHP开发框架 有哪些?

Brophp,thinkphp

 

说说你对缓存技术的了解?

1、缓存技术是将动态内容缓存到文件中,在一定时间内访问动态页面直接调用缓存文件,而不必重新访问数据库。

2、使用memcache可以做缓存。

 

你所知道的设计模式有哪些?

工厂模式、策略模式、单元素模式、观察者模式、命令链模式

 

说说你对代码管理的了解?常使用那些代码版本控制软件?

通常一个项目是由一个团队去开发,每个人将自己写好的代码提交到版本服务器,由项目负责人按照版本进行管理,方便版本的控制,提高开发效率,保证需要时可以回到旧版本。

常用的版本控制器:SVN

 

说说你对SVN的了解?优缺点?

SVN是一种版本控制器,程序员开发的代码递交到版本服务器进行集中管理。

SVN的优点:代码进行集中管理,版本控制容易,操作比较简单,权限控制方便。

缺点:不能随意修改服务器项目文件夹。

 

怎么找到PHP.ini的路径?

一般都在php的安装目录下,或者window系统的windows目录下。

 

PHP加速模式/扩展? PHP调试模式/工具?

Zend Optimizer加速扩展

调试工具:xdebug

 

你常用到的mysql命令?

Show databases

Show tables

Insert into 表名()values()

Update 表名 set字段=值 where ...

Delete from 表名where ...

Select * from 表名where 条件 order by ... Desc/asc limit ... Group by ... Having ...

 

进入mysql管理命令行的命令?

Mysql -uroot -p回车密码

 

show databases; 这个命令的作用?

显示当前mysql服务器中有哪些数据库

 

show create database mysql; 这个命令的作用?

显示创建数据库的sql语句

 

show create table user; 这个命令的作用?

显示创建表的sql语句

 

desc user; 这个命令的作用?

查询user表的结构

 

explain select * from user; 这个命令的作用?

获取select相关信息

 

show processlist; 这个命令的作用?

显示哪些线程正在运行

 

SHOW VARIABLES; 这个命令的作用?

显示系统变量和值

 

SHOW VARIABLES like ’%conn%’; 这个命令的作用?

显示系统变量名包含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 经典面试题集 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