ホームページ  >  記事  >  バックエンド開発  >  PHPのインタビューの質問と回答

PHPのインタビューの質問と回答

WBOY
WBOYオリジナル
2016-06-20 13:03:281640ブラウズ

1. フォームの get 送信メソッドと post 送信メソッドの違いは何ですか?

答え: get は HTTP プロトコル経由で送信され、url パラメーター経由で受信されるリクエストですが、post はエンティティ データであり、セッションはフォームを通じて大量の情報を送信します。

との違いは? (1) セッションはサーバーに保存され、クライアントは情報を取得できません。そしてサーバーは情報を取得できます。

(2) セッションはパスを区別できません。同じユーザーが Web サイトにアクセスしている間、すべてのセッションにどこからでもアクセスできます。 Cookie にパス パラメータが設定されている場合、同じ Web サイト上の異なるパスにある Cookie は相互にアクセスできません。

(3)。セッションが正しく動作するには Cookie が必要です。クライアントが Cookie を完全に無効にし、URL を通じて値を渡さない場合、セッションは無効になります。

(4) Cookie はあまり安全ではありません。ローカルに保存された COOKIE を他人が解析して COOKIE を偽装する可能性があります。

セキュリティを考慮すると、セッションを使用する必要があります。

2. データベースのトランザクションとは何ですか?

答え: トランザクションは、順序付けられたデータベース操作のセットです。グループ内のすべての操作が成功した場合、トランザクションは成功したとみなされます。1 つの操作だけが失敗した場合でも、トランザクションは成功とは言えません。すべての操作が完了すると、トランザクションはコミットされ、その変更は他のすべてのデータベース プロセスに適用されます。操作が失敗した場合、トランザクションはロールバックされ、トランザクション内のすべての操作の効果はキャンセルされます。

3. PHP を使用して、前日の時刻を 2006-5-10 22:21:21

Answer: echo date('Y-m-d H:i:) の形式で出力します。 s', strtotime(' -1 day'));

4. echo()、print()、print_r() の違い

答え: echo は PHP ステートメントです。 print と print_r は関数であり、ステートメントは値を返しません。関数は戻り値を持つことができます (役に立たない場合でも)

print() は単純型変数の値のみを出力できます ( int、string など)

print_r() は複合型を出力できます 変数の値 (配列、オブジェクトなど)

echo 1 つ以上の文字列を出力します

5. HTML と PHP を分離できるテンプレート

回答: Smarty 、Dwoo、TinyButStrong、Template Lite、Savant、phemplate、文字列反転の実装方法?

回答: echo strrev($ a);

8. MYSQL データベースを最適化する方法。

回答: 1. 最も適切なフィールド属性を選択し、定義されたフィールドの長さをできる限り短くし、フィールドを「都道府県、性別」などの NOT NULL に設定するのが最善です。 ENUM

2 に設定するには、サブクエリの代わりに接続 (JOIN) を使用します:

3. 手動で作成した一時テーブル

の代わりにユニオン (UNION) を使用します。処理:

5. テーブルをロックし、トランザクション処理を最適化します:

6. 外部キーを使用してロック テーブルを最適化します:

8. クエリ ステートメントを最適化します

9. 現在時刻を取得する MYSQL の関数は何ですか?、日付をフォーマットする関数は

です。 答え: now(), date( )

10. 中国語の文字列を文字化けせずにインターセプトする方法。

mb_substr()

function GBsubstr($string, $start, $length) { if(strlen($string)>$length){ $str=null; start+$length; for($i=$start;$i0xa0){ $str.=substr($string) , $i,2); }else{ $str.=substr($i,1); } }else{ return $string; 🎜>

11. バージョン管理ソフトウェアを使用したことがありますか?

TortoiseSVN;

12.トラフィック問題を解決するにはどのような方法が使用されますか?

回答: キャッシュ/ミラーを使用し、サーバー ハードウェアが現在のトラフィックをサポートするのに十分であるかどうかを確認し、データベースの読み取りと書き込みを分離し、データ テーブルを最適化し、プログラムを実行します。関数ルール、外部ホットリンクの禁止、大きなファイルのダウンロードの制御、メイントラフィックを迂回するための別のホストの使用

13. SESSION の生存時間を変更する方法

答え:

方法 1: php.ini の Session.gc_maxlifetime を 9999 に設定し、Apache を再起動します

方法 2:

$savePath = "./session_save_dir/" >

session_save_path( $savePath);

session_set_cookie_params($lifeTime);

18. PHP Development Resource Network のホームページのような Web ページのアドレスがあります: http://www.scutephp.com/index.html、そのコンテンツを取得するにはどうすればよいですか?

: 方法 1 (PHP5 以降):

$readcontents = fopen("http://www.scutephp.com/index.html", "rb"); = stream_get_contents($ readcontents);

fclose($readcontents);

方法 2:

echo file_get_contents("http://www.scutephp. com/index.html");

14. MVC についての理解について話してください

答え: モデル、ビュー、コントローラーによって完成されたアプリケーションは、モデルからのリクエストを発行します。関数はコントローラーに渡され、コントローラーは組織関数を受け取り、それをビューに渡します。16. PHP で値を渡すことと参照を渡すことの違いを説明してください。いつ値渡しをするのか、またいつ参照渡しをするのか?

答え:

値渡し: 関数のスコープ内での値の変更は関数の外では無視されます

参照渡し : 関数のスコープ内で値を変更すると、関数の外側でもこれらの変更が反映されます。

長所と短所: 値渡しの場合、PHP は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。

参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に非常に役立ちます。

17. PHP の error_reporting の関数は何ですか?

答え: エラー レベルとエラー メッセージを報告する関数を作成してください。

18.メールは正しいですか?

答え: function checkEmail($email) { $pregEmail = "/([a-z0-9]*[-_.]?[a-z0-9]+) *@([ a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/ i"; return preg_match($pregEmail,$email); }

19. 取得したパラメータを含め、現在の実行スクリプトのパスを取得する方法を簡単に説明します。

答え: $script_name = basename(__file__); print_r($script_name);

21. JS フォームのポップアップ ダイアログ ボックス関数とは何ですか? focus?

答え: ポップアップダイアログボックス:alert()、prompt()、confirm() 入力フォーカスの取得 focus()

22. JS のリダイレクト機能とは何ですか?外部 JS ファイルを導入しますか?

答え: window.location.href,fb558daa7ed135f0fcd07df3585f78852cacc6d41bbb37262a98f745aa00fbf0 🎜>23. foo() と @foo() の違いは何ですか?

答え: @foo() はエラー出力を無視します

24. 「myclass」という名前のクラスを宣言する方法

答え: class myclass{ }

25. 「myclass」という名前のオブジェクトをインスタンス化する方法?

答え: new myclass()

26. クラスの属性にアクセスして設定するにはどうすればよいですか?

答え: $object = new myclass(); $newstr = $object->test; info";

27. mysql_fetch_row() と mysql_fetch_array の違いは何ですか?

答え: mysql_fetch_row は結果セットから行配列を列挙型として取り出すもので、mysql_fetch_array は結果セットから行配列を連想配列または数値配列として取り出します。両方の長所を取得します。

28. GD ライブラリは何に使用されますか?

答え: gdライブラリは、画像を処理するための一連の API を提供します。GD ライブラリを使用して画像を処理したり、画像を生成したりできます。

Web サイトでは、通常、GD ライブラリはサムネイルの生成や画像への透かしの追加、Web サイト データに関するレポートの生成に使用されます。

36. データ型の意味を書き留めてください (int char varchar datetime text)。varchar と char の違いは何ですか?

答え: int は数値型で、char は数値型です。固定長文字列、varchar 実際の長さの文字列、日時日時型、テキスト文字列 charのフィールドは作成したテーブルで設定された長さに固定され、varcharは可変長文字です

39. 変数が設定されているかどうかを検出する関数はありますか? 空かどうかを判断する関数は次のとおりです。

答え: isset($str),empty($str); 40. クエリ結果セットの総数を取得する関数は?

答え: mysql_num_rows($result);

45. PHP5 の権限制御修飾子

答え: public(パブリック)、プライベート(プライベート)、保護(継承)

46. php5 のコンストラクターとデストラクターをメモしてください

答え: __construct 、 __destruct

47. 次のフィールドを持つ message という名前のテーブルを作成します。

id 記事 ID タイトル 記事タイトル コンテンツ 記事コンテンツ category_id 記事カテゴリ ID ヒット数 クリック数 答え: CREATE TABLE 'message'( 'id' int(10) NOT NULL auto_increment、'title' varchar(200) デフォルト NULL、'content' text、'category_id' int(10) NOT NULL、'hits' int(20)、PRIMARY KEY('id') )ENGINE=InnoDB DEFAULT; CHARSET=utf8;

1. 標準 URL からファイル拡張子をできるだけ効率的に抽出する関数を作成します (例: http://www.sina.com.cn/abc/de/fg)。 php?id=1 は php または .php

Answer 1:end(explode(',',basename($url)));

2. を取り出す必要があります。 ?php echo 8%(-2) ?>__0__ が出力されます。

PEAR のデータベース接続文字列の形式は ____ です。

$dsn = "mysql://root:123@192.168.0.1/testdb";

6. Web ページ上のすべての JS/VBS スクリプトをフィルタリングするための正規表現を記述します (つまり、script タグとそのコンテンツを削除します):

preg_replace("/4bb16145477c7c68e128600db2a4279d].*?>.*?2cacc6d41bbb37262a98f745aa00fbf0/si", "newinfo", $script);

7. ファイル http.conf で、最初にステートメント ____ を使用して PHP モジュールを動的にロードし、次にステートメント ____ を使用して php という名前の Apache ファイルを作成します。 PHP スクリプトとして処理されます。

LoadModule php5_module "c:/php/php5apache2.dll" 、

AddType application/x-httpd-php .php、

3. SQL インジェクションの脆弱性を防ぐには、どの機能が使えるの?

addslashes()

mysql_escape_string()

4. PHP を使用して、クライアント IP とサーバー IP を表示するコードを記述します

echo $_SERVER[ ' REMOTE_ADDR'];

echo $_SERVER['SERVER_ADDR'];

6. フォルダー

<p>function dir_recurse($dir) </p><p>{</p><p>    $i = 1;</p><p>    if($handle = opendir($dir)) {</p><p>        while(false !== ($file = readdir($handle))) {</p><p>            if($file != "." && $file != ".." ) {</p><p>                if(is_dir($dir."/".$file) == true) {</p><p>                    $fullpath = $dir."/".$file;</p><p>                    dir_recurse($fullpath);</p><p>                    echo "$fullpathn";</p><p>                    $i++;</p><p>                }else {</p><p>                    $fullpath = $dir."/".$file;</p><p>                    echo "$fullpathn";</p><p>                    $i++;</p><p>                }</p><p>            }</p><p>        }</p><p>        closedir($handle);</p><p>    }</p><p>} </p>

7. ファイル exer1 を作成し、アクセス権限を rw-r--r-- に設定します。次に、すべてのユーザーの実行権限と書き込み権限を増やす必要があります。同じグループ内の複数のユーザーに対して、操作プロセスのコマンド

touch exer1

chmod 644 exer1

権限の追加

chmod a+x exer1

chmod g+w exer1 または chmod 775 exer1

8. 文字列「大文字に変換」はそれぞれ php、shell、js を使用して文字列内のすべての文字を大文字に変換して出力します。

Php 実装: echo strtoupper('大文字に')

シェル実装: echo "大文字に" | tr 'a-z' 'A-Z'

Js実装: 1a24b17f85e15c83fc29b7760e40bfcb

var stmp1 = " to upper case ";

alert(stmp1.toLocaleUpperCase());//大文字に変換
alert(stmp1.toUpperCase( ))//大文字に変換します

2cacc6d41bbb37262a98f745aa00fbf0

9. mydb が存在しない場合は、mysql にデータベース mydb を作成し、次のように指定します。これを root ユーザーに割り当てます。192.168.1.1 ip から mysdb データベースにアクセスするためのすべての権限を割り当てます。 (root ユーザーのパスワードは空です)

CREATE DATABASE IF NOT EXISTS mydb;

mydb.* にすべてを付与します (

11. PHP では、現在のスクリプトの名前 (パスとクエリ文字列を除く) が事前定義された変数 (1) に記録され、現在のページにリンクする URL が事前定義された変数 (2) に記録されます。

答え: echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];



3. HTTP 1.0 では、ステータス コード401 の意味は (4) で、「ファイルが見つかりません」というプロンプトが返された場合は、ヘッダー関数を使用でき、そのステートメントは (5) です。

答え: (4) 不正 (5) header("HTTP/1.0 404 Not Found");


4. 配列関数arsort の関数は (6)、ステートメント error_reporting(2047) の関数は (7) です。

答え: (6) 配列を逆ソートし、インデックス関係を維持します (7) すべてのエラーと警告

7. include ステートメントと require ステートメントは両方とも別のステートメントを配置できます。現在のファイルに含まれるファイル間の違いは (12) です。同じファイルを複数回インクルードすることを避けるために、それらをステートメント (13) に置き換えることができます。

答え: (12) 例外が発生すると、include は警告を生成し、require は致命的なエラーを生成します (13) require_once()/include_once()

8 クラス属性はシリアル化できます。後でクラス全体を復元できるように、セッションに保存されます。使用する関数は (14) です。

答え: Serialize() /unserialize()

9.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.

答:allow_call_time_pass_reference


10.SQL 中LEFT JOIN的含义是(16)。

如果 tbl_user记录了学生的姓名(name)和学号(ID),

tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),

要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。


答:(16) 自然左外连接

     (17) select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID  group by tbl_user.ID
11..在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。
答:结束标识符所在的行不能包含任何其它字符除";"

14.如何实现字符串翻转?
答:.用strrev函数呗,不准用PHP内置的就自己写:

strrev($str)<br />{<br />    $len=strlen($str);<br />    $newstr = '';<br />    for($i=$len;$i>=0;$i--)<br />    {<br />        $newstr .= $str{$i};<br />    }<br />    return $newstr;<br />}


18.使用五种以上方式获取一个文件的扩展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
答:使用五种以上方式获取一个文件的扩展名

1)<br />get_ext1($file_name)<br />{<br />    return strrchr($file_name, '.');<br />}<br /><br />2)<br />get_ext2($file_name)<br />{<br />    return substr($file_name, strrpos($file_name, '.'));<br />}<br /><br />3)<br />get_ext3($file_name)<br />{<br />    return array_pop(explode('.', $file_name));<br />}<br /><br />4)<br />get_ext4($file_name)<br />{<br />    $p = pathinfo($file_name);<br />    return $p['extension'];<br />}<br /><br />5)<br />get_ext5($file_name)<br />{<br />    return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));<br /><p>}</p>


30.请举例说明在你的开发过程中用什么方法来加快页面的加载速度


A.生成静态HTML

B.生成xml

C.可不用数据库的尽量不用数据库把变量参数存于文本.

D.用ZEND加速

21. 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?

答:$_SERVSR[‘REQUEST_URI’]

$_SERVER[‘REMOTE_ADDR’]

25.mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?

mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如我的数据库查询送回“first_name”、“last_name”、 “email”三个栏位,阵列的索引便是“first_name”、“last_name”和“email”。mysql_fetch_array() 可以同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

29.防止SQL注射漏洞一般用__addslashes___函数。

30.PHP中传值和传引用、传地址的区别是什么?

答:传值是把实参的值赋值给行参 那么对行参的修改,不会影响实参的值 

传地址 是传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都指向同一个对象

31。如何通过javascript判断一个窗口是否已经被屏蔽

答:获取open()的返回值,如果是null,就是屏蔽了

33.对于大流量的网站,您采用什么样的方法来解决访问量问题

答:首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件


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