PHP面接問題型まとめ【一】(回答付)

4321 ワード

1、泡立ちランキング、面接前に覚えておきましょう!
function maopao($arr)
{
    $len = count($arr);
    $n = count($arr) - 1;
    for ($i = 0; $i  $arr[$j + 1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $tmp;
            }
        }
    }
    return $arr;
}

 
2、クイックソート、面接前に覚えておきましょう!
function quick_sort($array) {
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i=1; $i

 
3、PHPの中の伝値と伝引用の違いを説明してください.いつ伝値していつ伝引用しますか.
≪値による伝達|Transfer By Value|oraolap≫:関数の範囲内の値に対する変更は、関数の外部では無視されます.
参照による転送:関数の範囲内の値の変更は、関数の外部にも反映されます.
メリットとデメリット:phpは値で渡す場合に値をコピーする必要があります.特に、大きな文字列やオブジェクトにとっては、大きなコストがかかります.リファレンスで渡すと値をコピーする必要がなく、パフォーマンスの向上に役立ちます.(長所と短所は試験に合格する)
 
4、MySQLデータベースのフィールドタイプvarcharとcharの主な違いは何ですか?
Varcharは長くなり、記憶スペースを節約し、charは固定長になります.検索効率はchar型が速いです.varcharは非定長なので、まず長さを検索してからデータの抽出を行う必要があります.char定長タイプよりも1つのステップが多いので、効率は低いです.
 
5、MySQLデータベースの常用ストレージエンジンとその違いは?
MyISAM:トランザクション、テーブルロックをサポートせず、断片化が発生しやすく、常に最適化し、読み書き速度が速く、全文インデックスをサポートします.
InnoDB:トランザクション、ロー・ロック、クラッシュ・リカバリ機能をサポートします.読み書き速度はMyISAMより遅く、5.6以降は全文インデックスをサポートします.
ストレージ・エンジンは、データベースではなくテーブル・ベースです.
(この問題はもっと詳しくなればもっと詳しくなる)
 
6、大流量のウェブサイトに対して、どのような方法でアクセス量の問題を解決しますか?
まず、サーバハードウェアが現在のトラフィックをサポートするのに十分であるかどうかを確認します.
次に、データベース・アクセスを最適化します.
第三に、外部の鎖を盗むことを禁止する.
第四に、大きなファイルのダウンロードを制御します.
第五に、異なるホストを使用して主要なトラフィックを分流する
第六に、流量分析統計ソフトウェアを使用する
第七に、できるだけ静的ページ、キャッシュを使用する
 
7、対象とは何ですか.主な特徴は何ですか.
オブジェクト向けはプログラムの設計方式であり、プログラムの再利用性を高め、プログラム構造をより明確にするのに役立つ.主な特徴:パッケージ、継承、マルチステート.
 
8、SESSIONとCOOKIEの違いは何ですか?これがポイント
SESSIONはサーバ側に格納され、COOKIEはクライアント側に保存される.Sessionは比較的安全で、クッキーはいくつかの手段で修正することができて、安全ではありません.セッションはクッキーに依存して伝達される.クッキーを無効にした後、sessionはまた使用することができ、sessionを格納するファイルでsessionIDを生成し、getパラメータを介してsessionIDをsession共有を実現するページに転送し、sessionIDを読み出し、sessionからデータを取得する.
sessionとcookieのこの方面の詳しいチュートリアルを探すことを提案します
 
9、キャッシュ技術について知っていますか.redisは試験点です
1、キャッシュ技術は動的コンテンツをファイルにキャッシュし、データベースに再アクセスする必要がなく、一定時間内に動的ページにアクセスしてキャッシュファイルを直接呼び出すことである.
2、memcacheでキャッシュできます.
 
10、フォームにおけるgetとpostの提出方式の違い
getは明示的で、urlからデータが表示され、伝送されるデータ量が小さく、安全性が低い.
postは暗黙的で、伝送されるデータ量が大きく、安全性が高い.
 
11、データベースの最適化方法
最も適切なフィールド属性を選択し、できるだけ定義フィールド幅を減らし、できるだけフィールドをNOTNULLに設定する
サブクエリの代わりにジョインを使用
手動で作成したテンポラリ・テーブルの代わりにユニオンを適用
取引
テーブルのロック、トランザクションの最適化
外部キーを使用したロック・テーブルの最適化
索引の使用
クエリ文の最適化
 
12、文includeとrequireの違いは何ですか.文includeとrequireの違いは何ですか?
requireは無条件に含まれています.つまり、プロセスにrequireが追加されると、条件が成立するかどうかにかかわらず先にrequireが実行され、ファイルが存在しないか開かない場合、エラーが表示され、プログラムの実行が終了します.
includeには戻り値があり、requireには(このようにrequireの速度がincludeより速い可能性があるため)、含まれるファイルが存在しない場合はエラーが表示されますが、プログラムは実行され続けます.
 
13、redisとmemcacahe、mongodyの違いは?
いずれも非リレーショナル・データベースであり、パフォーマンスは非常に高いが、mongodbとmemcache、redisは異なる2つのタイプである.後者は主にデータのキャッシュに用いられ,前者は主にビッグデータのクエリーと格納に用いられ,データベースに最も近いドキュメント型の非関係データベースである.
 
データ格納位置からmemcacheのデータはメモリに存在するが、redisはメモリに格納してもよいし、ディスクに格納してもよいし、永続化ストレージの機能を達成することができる.memcacheが電源を切ると、データはすべて失われ、redisはスナップショットとAOFを利用してデータをディスクに格納し、回復時にディスクからメモリに読み出すことができる.物理メモリの使用が完了すると、ディスクにデータを書き込むことができます.
 
データを格納するタイプから、memcacheとredisの格納方法はいずれもキー値ペアであるが、redis値のタイプはstring(文字列)、hash(ハッシュ)、list(リスト)、set(集合)zset(秩序集合)が豊富であり、memcacheは主に文字列を格納する.
 
14、PHPの基本変数タイプ
4つのスカラータイプ:boolean(ブール型)、integer(整数型)、float(浮動小数点型、doubleとも呼ばれる)、string(文字列)
2つの複合タイプ:array(配列)、object(オブジェクト)
最後に、resource(リソース)、NULL(NULL)の2つの特殊なタイプがあります.
 
15、静態化はどのように実現したのか.擬似静的はどのように実現しますか?
1、静態化とは、ページの静態化、すなわち実質的な静態ファイルの生成、すなわちデータベースを照会する必要がなく、直接ファイルからデータを取得することができ、真の静態を指す.
実装方法は主に2つあります.
1つは,情報をライブラリに追加する際に生成される静的ファイルであり,テンプレート置換技術とも呼ばれる.
1つは,ユーザが我々のページにアクセスする際にまず対応するキャッシュファイルが存在するか否かを判断し,読み取りキャッシュが存在する場合,読み取りデータベースが存在しないと同時にキャッシュファイルを生成することである.
 
2、擬似静的は本当の意味での静的化ではなく、擬似静的を使用するのは、主にSEOの普及のためであり、検索エンジンは動的なファイルの取得が難しく、ウェブサイトの普及に不利である.実習の原理はApacheあるいはNginxのrewrite機知に基づいて
主に2つの方法があります.
1つは、仮想マシンを構成する場所に直接擬似静的を構成することであり、この変更が完了するたびにwebサーバを再起動する必要がある.
もう1つは、Webサイトのルートディレクトリに作成できる分散型である.htaccessのファイルは、対応する書き換えルールを構成して擬似静的を実現し、書き換えるたびにwebサーバを再起動する必要がなく、構造的に明確である.