ホームページ  >  記事  >  バックエンド開発  >  PHP面接の質問のまとめ

PHP面接の質問のまとめ

不言
不言オリジナル
2018-04-21 10:27:358651ブラウズ

この記事で紹介した内容は、一定の参考価値のあるPHP面接の質問をまとめたものですので、困っている友達は参考にしてください

関連おすすめ:『2019年PHP面接の質問まとめ(集)』

1. オブジェクト指向とは何ですか?主な特徴は何ですか?

オブジェクト指向はプログラムの設計手法であり、プログラムの再利用性を高め、プログラムの構造を明確にします。主な機能: カプセル化、継承、ポリモーフィズム。

2. SESSION と COOKIE の違いは何ですか?

1. HTTP ステートレス プロトコルでは、ユーザーが同じ Web サイトから来たのか、同じ Web サイトから来たのかを区別できません。異なるページをリクエストすることは、同じユーザーとみなされません。

2. SESSIONはサーバー側に保存され、COOKIEはクライアント側に保存されます。セッションは比較的安全です。Cookie は特定の方法で変更される可能性があり、安全ではありません。セッションは配信のために Cookie に依存します。

Cookieを無効にすると、セッションが正常に使用できなくなります。 セッションの欠点: サーバー側に保存され、各読み取りはサーバーから読み取られるため、サーバー上のリソースが消費されます。セッションはサーバー側のファイルまたはデータベースに保存されます。ファイルのパスは、PHP 設定ファイルの session.save_path で指定されます。セッションファイルは公開されています。

3. HTTP ステータスの 302、403、および 500 コードは何を意味しますか?

1、2、3、4、および 5 つの原則: 1. メッセージ シリーズ 2. 成功シリーズ 3. リダイレクト シリーズ 4. リクエスト エラー シリーズ 5. サーバー側エラー シリーズ

302: 一時転送は成功しました。リクエストされたコンテンツは次のとおりです。新しい場所に転送されました 403 : アクセス禁止 500: サーバー内部エラー 401 は不正を意味します。

4. Linux で圧縮パッケージを作成し、そのパッケージを解凍するコマンド

Tar.gz:

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

Extract: tar xzf file.tar。 gz

Bz2:

Package: bzip2 [-k] File

Unzip: bunzip2 [-k] File

Gzip (ファイルのみ。元のファイルは保持しません)

Package: gzip file1.txt

Unzip :gunzip file1.txt.gz

Zip: -r ディレクトリを圧縮します

: zip file1.zip file1.txt

解凍: unzip file1.zip

5. データ型(int char varchar)を記述してください。 datetime text ) の意味; varchar と char の違いは何ですか?

Int Integer char 固定長文字 Varchar 可変長文字 Datetime 日時型 Text テキスト型 Varchar と char の違いChar は固定長文字型であり、割り当てられた分だけ多くのスペースを消費します。 Varchar は可変長の文字型であり、内容と同じだけのスペースを占有するため、スペースを効果的に節約できます。 varchar型は可変であるため、データ長が変わるとサーバー側で追加の操作が必要となり、char型に比べて効率が悪くなります。

6. MyISAM と InnoDB の基本的な違いは何ですか?インデックス構造はどのように実装されていますか?

MyISAM タイプはトランザクションとテーブル ロックをサポートしておらず、断片化が起こりやすいため、頻繁に最適化する必要があり、読み取りと書き込みの速度が速くなりますが、InnoDB タイプはトランザクション、行ロックをサポートし、クラッシュ回復機能を備えています。読み取りおよび書き込み速度は MyISAM よりも遅くなります。

インデックスの作成:alerttable tablename addindex (`field name`)

7. Cookie を使用せずに Cookie をクライアントに送信します

理解: session_start() がオンになると、定数 SID が生成されます。 COOKIE がオンの場合、この定数は空になります。COOKIE がオフの場合、この定数には PHPSESSID の値が格納されます。 URL の後に SID パラメータを追加して SESSIONID の値を渡すことで、クライアント ページは SESSIONID の値を使用できます。クライアントが COOKIE を開き、サーバーが SESSION を開くとき。ブラウザが最初のリクエストを行うと、サーバーはブラウザに COOKIE を送信し、ブラウザが 2 番目のリクエストを行うと、既存の

8.変数が存在するかどうかを判断するには、複数の変数を渡すことができます。変数の 1 つが存在しない場合は、変数が空かどうかを判断する場合は false を返します。空の場合は true を返します。

9. ページ間で変数を渡す方法 (少なくとも 2 つの方法)

1. URL に一致する正規表現を記述します。 '/^(https?|ftps?)://(www).([^./]+).(com|cn|org)(/[w-./?%&=]*)?/ i '

2. 一般的なソートアルゴリズムを書き留めて、PHP を使用してバブルソートを実装し、配列 $a = array() を小さいものから大きいものへソートしてください。

一般的なソートアルゴリズム: バブルソート、クイックソート、単純選択ソート、ヒープソート、直接挿入ソート、ヒルソート、マージソート。

バブルソート方法の基本的な考え方は、2 つの隣接するキーワードの順序が一致していないことが判明した場合、ソート対象のレコードのキーワードを後ろから前へ (逆順に) 複数回スキャンすることです。ソートに必要なルールに従って、これら 2 つのレコードが交換されます。このように、水中で泡が上に上がっていくように、キーワードの小さいレコードが後ろから前に徐々に移動するため、このアルゴリズムはバブルソート法とも呼ばれます。

// 冒泡排序法
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. PHP における値渡しと参照渡しの違いを説明してください。いつ値渡しするのか、いつ参照渡しするのか?
通過する スルー スルー スルー スルースルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルースルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルーbe-be-nival---提案: 渡されると、php は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に役立ちます。

PHPのerror_reportingの機能は何ですか?

PHP のエラー報告レベルを設定し、現在のレベルを返します。

メールの形式が正しいかどうかを検証する関数を正規表現(正規表現)を使って記述してください。


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“电子邮件检测成功”;
         }
}

汎用性が高く、PHP 組み込み関数 (array_multisort()) を呼び出すことができる 2 次元配列ソート アルゴリズム関数を作成します

//二维数组排序, $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;
}

文字列を分割する間隔としてスペースを使用してください「Apple Orange BananaStrawberry」、配列 $fruit を形成します、

* 配列内のすべての要素は小文字であり、アルファベット順にソートされています

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());

ユーザーが文字列 $string、$string を入力する場合0 より大きい数字と英語のカンマのみを含めることが必要です。$string が要件を満たしていない場合は、エラー メッセージが返されます。

ポート 80 が使用されているかどうかを確認してください。 Apache が占有している場合は、まずポート 80 を占有しているサービスを停止してから、Apache サーバーを起動します

PHP セッション拡張機能はデフォルトでセッション データをどこに保存しますか? B) MySQL データベース C) 共有メモリ

D) ファイルシステム

E) セッションサーバー

クラスを自動的にロードする場合、次の関数宣言のうち正しいものはどれですか C


A) 関数autoload($class_name)

B) 関数 __autoload($class_name, $file)

C) 関数 __autoload($class_name)

D) 関数 _autoload($class_name)

E ) 関数 autoload($class_name, $file) )

PHP プログラムは utf-8 エンコーディングを使用しています。次のプログラムの出力結果は何ですか? B

$str = 'hello hello world';

Echo Strlen ($ Str);

? & GT; 9 B) 13 (GBK) C) 18 D) 17 (UTF8)

e e pHP 配列関連の関数知る?

array()----配列を作成します

array_combine()----2つの配列を結合して新しい配列を作成します

range()----指定された範囲内の要素を含む配列を作成して返します配列

compact()----配列を作成します

array_chunk()----配列を複数に分割します
array_merge()----2つ以上の配列を1つの配列にマージします

array_slice()- ---条件に基づいて配列内の値のセグメントを取得

array_diff()----2つの配列の差分配列を返す

array_intersect()----配列の交差を計算

array_search() ----配列内の指定された値を検索

array_splice()----配列の一部を削除して置き換えます

array_key_exists()----指定されたキーが配列に存在するかどうかを判断します

shuffle ()----配列内の要素をランダムな順序で並べ替えます

array_flip()----配列内のキーと値を交換します

array_reverse()----元の配列内の要素を並べ替えます反転して、新しい配列を作成して

array_unique() を返します----配列内の重複する値を削除します

PHP がファイルの内容を読み取るためのいくつかのメソッドと関数?

ファイルを開いて読んでください。 Fopen()fread()

開いて一度読み込んで完了 file_get_contents()

次のプログラムで、111を入力したときの変数strの値は何ですか?

if( ! $str ) { echo 111; }

$str の値は: 0、'0'、false、null、""

PHP テクノロジー (smarty など) をご存知ですか?

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

どの PHP フォーラム システムに精通していますか?

ディスカッション

 

你所熟悉的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 经典面试题集

以上がPHP面接の質問のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。