ホームページ > バックエンド開発 > PHPチュートリアル > PHP 面接の質問の概要の共有

PHP 面接の質問の概要の共有

小云云
リリース: 2023-03-22 09:48:02
オリジナル
1470 人が閲覧しました

この記事では主に PHP 面接の質問の概要を紹介します。お役に立てれば幸いです。

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

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

2. SESSION と COOKIE の違いは何ですか? プロトコルの理由と機能を説明してください。

1. HTTP ステートレス プロトコルでは、同じユーザーが異なるページから来たかどうかを区別できません。同じユーザーに属するものとして扱われます。

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

Decompress: tar xzf file.tar.gz

Bz2:

パッケージ: bzip2 [-k] ファイル

解凍: bunzip2 [-k] ファイル

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

パッケージ: gzip file1.txt

解凍: Gunzip file1.txt。

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 (`フィールド名`)

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

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

8. isset() と empty() の違いを判断します。変数が存在するかどうかに関係なく、複数の変数を渡すことができます。いずれかの変数が存在しない場合は false が返され、変数が空である場合は 1 つの変数のみを渡すことができます。空の場合は true を返します。

9. ページ間で変数を渡す方法 (少なくとも 2 つの方法)? GET、POST、COOKIE、SESSION、隠しフォーム

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 における値渡しと参照渡しの違いを説明してください。いつ値渡しするのか、いつ参照渡しするのか?
値渡し: 関数スコープ内の値への変更は関数外では無視されます

参照渡し: 関数スコープ内での値への変更は関数外にも反映されます

利点と欠点: 渡す値によって、php は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に役立ちます。


PHP の error_reporting の機能は何ですか?
using it を使用して現在のレベルにエラーを報告する 現在のレベルに to to ‐ to Set-set 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“电子邮件检测成功”;
         }
}
ログイン後にコピー

汎用性の高い 2 次元配列ソート アルゴリズム関数を作成します。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;
}
ログイン後にコピー

文字列「Apple Orange BananaStrawberry」を分割する間隔として使用してください。配列 $ フルーツ

* 配列内のすべての要素は小文字で、アルファベット順に並べ替えられています

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 のエラー メッセージが返されます

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";
}
ログイン後にコピー

Windows プラットフォーム、Apache Http サーバーの起動に失敗しました。トラブルシューティングのアイデアは何ですか?

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


PHP セッション拡張機能はデフォルトでセッション データをどこに保存しますか? D

A) SQLite データベース

B) MySQL データベース

C) 共有メモリ

D) ファイルシステム

E) セッションサーバー

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

A) function autoload($class_name)

B ) function __autoload($class_name, $file)

C) function __autoload($class_name)

D) function _autoload($class_name)

E) function autoload($class_name, $file)

PHP プログラムは utf を使用します-8エンコーディング。

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()を読み込んで完了

次のプログラムでは、変数strには何の値があるでしょうか?

if( ! $str ) { echo 111; と入力します。 $str value 対象: 0、'0'、false、null、""

いくつかの PHP テクノロジー (smarty など) について何を知っていますか?

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

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

Discuz

どの PHP モール システムに精通していますか?

Ecshop

どのような PHP 開発フレームワークに精通していますか?

Brophp、thinkphp

キャッシュテクノロジーについてのあなたの理解を教えてください。

1. キャッシュ技術は、動的コンテンツをファイルにキャッシュし、データベースに再度アクセスすることなく、一定期間内に動的ページにアクセスして、キャッシュされたファイルを直接呼び出すことです。

2. キャッシュには memcache を使用します。

どんなデザインパターンを知っていますか?

ファクトリー モード、ストラテジー モード、単一要素モード、オブザーバー モード、コマンド チェーン モード

コード管理について知っていることを教えてください。どのコードのバージョン管理ソフトウェアをよく使用しますか?

通常、プロジェクトはチームによって開発され、全員が自分のコードをバージョンサーバーに送信し、プロジェクトリーダーがバージョンに応じて管理することで、バージョン管理が容易になり、開発効率が向上し、古いコードが確実に返却されるようになります。必要に応じて古いバージョンに戻します。

一般的に使用されるバージョン コントローラー: SVN

SVN について知っていることを教えてください。長所と短所?

SVN は、プログラマが開発したコードをバージョン サーバーに送信して一元管理します。

SVN の利点: コードの一元管理、簡単なバージョン管理、比較的簡単な操作、便利な権限制御。

欠点: サーバープロジェクトフォルダーを自由に変更することはできません。

PHP.ini のパスを見つけるにはどうすればよいですか?

通常、phpのインストールディレクトリ、またはウィンドウシステムのwindowsディレクトリにあります。

PHP アクセラレーション モード/拡張機能? PHPのデバッグモード/ツール?

Zend Optimizer アクセラレーション拡張機能

デバッグ ツール: xdebug

よく使用する mysql コマンドは何ですか?

データベースを表示

テーブルを表示

テーブルname()values()に挿入

テーブル名を更新 set field=value where ...

テーブル名Whereから削除...

Select * from table name where条件の順序 ... 降順/昇順制限 ... グループ化 ... mysql 管理コマンド ラインに入る ...

Command がありますか?

Mysql -uroot -p パスワードを入力してください

show データベース; このコマンドは何をしますか?

現在の mysql サーバーにあるデータベースを表示します

show create database mysql; このコマンドは何をしますか?

データベースを作成する SQL ステートメントを表示します

show create table user; このコマンドは何をしますか?

テーブルを作成する SQL ステートメントを表示します

desc ユーザー; このコマンドは何をしますか?

ユーザーテーブルの構造をクエリします

explain select * from user; このコマンドは何をしますか?

選択関連情報を取得する

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面试题中面向对象的题目分析

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート