PHP 面接の質問の一部
人生は常に前を向いていなければなりません。1 日待ってもアリからの面接通知が来ず、とても憂鬱な気持ちになりました。しかし、それでも人生は前を向き、PHP の面接の質問に答えなければなりません。結局のところ、私の本業は開発言語かPHPです
1. 中国語と英語を含む文字列の自然な長さを取得する方法
漢字の文字エンコーディングを考慮する必要があります。UTF-8 では 1 つの漢字が 3 バイトを占めることに注意してください。
<?php /** * 获取中英文混排的字符串的长度 */ $str = "还没等到阿里的面试通知123456"; $nor_len = mb_strlen($str, "utf8"); echo $nor_len."<br>"; $len = strlen($str); echo $len."<br>";
2. ORM とは何かを尋ねる。この単語の英語の正式名は何かと尋ねたり、ORM についての個人的な見解を尋ねたりすることがあります。
オブジェクト リレーショナル マッピング (ORM) は、オブジェクト指向データベースとリレーショナル データベース間の不一致を解決するために設計されたテクノロジです。簡単に言うと、ORM は、オブジェクトとデータベース間のマッピングを記述するメタデータを使用して、プログラム内のオブジェクトをリレーショナル データベースに自動的に永続化します。基本的に、データをあるフォームから別のフォームに変換する
3. 自分でフレームワークを実装したい場合、どのように設計するかを尋ねます
ここでは、ネイティブ PHP を使用して開発しており、フレームワークを使用したことがない私の MVC についての理解を直接話します。
つまり、フレームワークを使用しなくても、独自のコードで mvc 階層化を実現できます
4. フレームワーク設計における URL ディスパッチャーについて何を考慮するかを尋ねます
これはまだ MVC の問題ですが、URL: http://example.com/
5. セッション変数 (セッション) にアクセスするにはどうすればよいですか?
A. $_GET
経由
B. $_POST
経由
C. $_REQUEST
経由
D.グローバル変数
経由
E.上記はどれも正しくありません
E、説明: セッション変数は $_SESSION 配列を通じてのみ取得できます
6. サーバーが次のヘッダーを出力できるのはどの関数ですか?
set-Cookie: foo=bar;
答え: setcookie('foo', 'bar', time() + 3600);
7. 通常の状況では、ブラウザのバグを無視して、以前に設定したドメイン名とは異なる新しいドメイン名を使用して Cookie にアクセスするにはどうすればよいですか?
A. HTTP_REMOTE_COOKIE
経由でアクセス
B.無理
C. setcookie()
を呼び出すときに別のドメイン名を設定します
D.追加のリクエストをブラウザに送信します
E. Javascript を使用して URL に Cookie を含めて送信します
B、説明: Cookie はドメインを越えてアクセスできません
8. HTTPS では、URL とクエリ文字列はブラウザから Web サーバーにどのように送信されますか?
A.この2つは平文で送信され、その後の情報は暗号化されて送信されます
B.暗号化通信
C. URL平文送信、クエリ文字列暗号化送信
D. URL暗号化送信、クエリ文字列平文送信
E.暗号化を確実にするために、クエリ文字列はヘッダーに変換され、POST メッセージで送信されます
B、説明: ssl 暗号化
9. 同じ名前の 2 つの要素を含むフォームが PHP スクリプトに送信されるとどうなりますか?
A.これらは配列を形成し、スーパー グローバル変数配列
に保存されます。
B. 2 番目の要素の値が最初の要素の値に加算され、スーパー グローバル変数配列
に格納されます。
C. 2 番目の要素は最初の要素
を上書きします。
D. 2 番目の要素の名前は自動的に変更されます
E. PHP は警告を出力します
C
10. Cookie に配列を保存するには?
A. Cookie 名に角括弧 []
を追加します。
B.爆縮機能を使用する
C.容量制限があるため不可
D.シリアライズ関数を使用する
E. ARRAY キーワードを Cookie 名に追加します
D、説明: シリアル化、シリアライズは配列をシリアル化できますが、implode を使用すると、関連付けられた配列のキー値が失われます
11. 次のスクリプトは何を出力しますか? (E)
ob_start();
for ($i = 0; $i <10; $i++) {
echo $i;
}
$output = ob_get_contents();
ob_end_clean();
echo $output;
?>
A. 12345678910
B. 1234567890
C. 0123456789
D.何もありません
E.ヒント
C、説明: ob_start は出力キャッシュを開き、出力文字をバッファーに保存します。 ob_get_contents()
を通じて出力文字列を取得します。
12. デフォルトでは、PHP はセッション データを ______ に保存します。
A.ファイルシステム
B.データベース
C.仮想コンテンツ
D.共有メモリ
E.上記のどれでもない
A. 説明: デフォルトでは、配布用に、nginx+fastcgi+php5_fpm の php.ini を変更します。 //redisip:redisport?auth=redispasswd
14. ブラウザが再起動されないと仮定すると、最後のアクセスからセッションが期限切れになり、リサイクルされるまでにどれくらい時間がかかりますか?
A. 1440秒後
B. session.gc_maxlifetime で設定された時間が経過した後
C.手動で削除しない限り有効期限はありません
D.ブラウザを再起動しない限り有効期限は切れません
E.上記はどれも正しくありません
B または E、説明: セッションには有効期限メカニズムがありますが、デフォルトの session.gc_maxlifetime は 1440 秒ですが、gc メカニズムは確率で開始される必要があります。セッションは session.gc_probability と session を使用します。 .gc_divisor それぞれ、セッションの gc 確率を決定します
15. 改行を HTML タグに変換できる関数はどれですか?
nl2br
16.index.php スクリプトはフォーム要素の値にどのようにアクセスしますか? (二者択一)
BD、説明: 送信メソッドは POST であるため、値は 2 つのスーパー グローバル変数配列 $_POST と $_REQUEST からのみ取得できます
17. Cookie の有効期限を設定しないとどうなりますか?
A.すぐに期限切れになります
B.有効期限はありません
C. Cookieを設定できません
D.ブラウザセッションの終了時に期限切れになります
E.スクリプトがサーバー側セッションを生成しない場合にのみ期限切れになります
D、説明: Cookie はセッションとは何の関係もありません。唯一の機能は、セッションのセッション ID を保存するために Cookie を使用することです。
18. 次のスクリプトは $s 文字列にどのような影響を与えますか? (二者択一)
$s = '
こんにちは
';
BD、説明: htmlspecialchars は $s をエスケープして $ss に割り当て、出力は $ss