PHPの面接の質問3

WBOY
リリース: 2016-06-23 14:30:14
オリジナル
898 人が閲覧しました

1. 基本的な質問 1. 次のプログラムの出力結果を書きます
$str1 = null;
$str2 = false;
echo $str1==$str2 ? ;

$str3 = ”;
$str4 = 0;
echo $str3==$str4 ? '等しい' : '等しくない';

$str5 = 0;
$str6 = '0';
echo $ str5 ===$str6 ? 'Equal' : '等しくない';
?>
2. 以下のプログラムの出力結果を書き込みます
$a1 = null;
$a2 = false;
$a3 = 0 ;
$a4 = ”;
$a5 = '0';
$a6 = 'null';
$a7 = array();
$a8 = array(array());

echo empty($ a1) ? 'true' : 'false';
echo empty($a2) ? 'true' : 'false';
echo empty($a4) ? ' true' : 'false';
echo empty($a5) ? 'true' : 'false';
echo empty($a7) ' true' : 'false';
echo empty($a8) ? 'true' : 'false';
?>

3. 次のプログラムの出力を書き込みます

$test = 'aaaaaa';
$ abc = & $test;
unset($test);

echo $abc;

?>


4. 次のプログラムの出力を書き込みます

function get_count() {
static $count = 0;
return $count++;
}

echo $count;

++$count;

echo get_count();
echo get_count();
?>

5. 次のように記述します。プログラム 出力結果 $GLOBALS['var1'] = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value ( );

echo $var1;

echo $var2;

?>

6. 次のプログラムの出力を書き込みます function get_arr($arr){
unset($arr[0]) ;
}
$arr1 = 配列(1, 2);
$arr2 = 配列(1, 2);

get_arr(&$arr1);

get_arr($arr2);


エコーカウント($arr1);

echo count($arr2);

?>
7. ファイルの拡張子を取得するには 5 つ以上の方法を使用します

要件: dir/upload.image.jpg、.jpg または jpg を検索、 PHP を使用する必要があります処理関数は処理されます。メソッドは明らかに繰り返すことができず、get_ext1($file_name)、get_ext2($file_name) などの関数にカプセル化できます

2. アルゴリズムの質問
1. PHP を使用してバブル ソートとクイック ソートを記述します。アルゴリズム。オブジェクトは配列

2. PHP を使用して、逐次検索およびバイナリ検索 (バイナリ検索とも呼ばれます) アルゴリズムを記述します。オブジェクトは順序付き配列にすることができます
3.次元配列の並べ替えアルゴリズム関数は汎用的であり、PHP の組み込み関数を呼び出すことができます

[答えは添付されています] (以下の答えが必ずしも最良であるとは限りません。単なる参考資料です)

1. 等しい 等しい 1.等しくない

2. true true true true true false true false
3. aaaaaaa

4. 5 0 1

5. 5 2

6. 1 2

7. ファイルの拡張子を取得するには 5 つ以上の方法を使用します

function get_ext1($file_name){
return strrchr($file_name, '.');
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, '.'));

}

function get_ext3($file_name){
return array_pop(explode('.', $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension' ];
}
function get_ext5($ file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));
}

2. アルゴリズムの質問

1. PHP を使用してバブル ソートとクイック ソート アルゴリズムを記述します。オブジェクトは配列にすることができます

//バブル ソート (配列ソート)

function bubble_sort($array)

{

$count = count($array);

if ($count

for($i=0; $i for($j=$count-1; $j>$i; $j ?){
if ($array[ $j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1] ];

$array[$j- 1] = $tmp;

}
}
}
return $array;
}

//クイックソート (配列ソート)
function Quick_sort($array) {
if (count ($array) <= 1) return $array;

$key = $array[0];

$left_arr = array();

$right_arr = array();

for ($i=1; $ i if ($array[$i] <= $key)

$left_arr[] = $array[$i];
else
$right_arr[] = $array [$i];

}


$left_arr = Quick_sort($left_arr);
$right_arr = Quick_sort($right_arr);

return array_merge($left_arr, array($key), $right_arr);
}

2 PHP を使用して逐次検索と二分探索 (半探索とも呼ばれる) アルゴリズムを記述します。逐次検索は効率を考慮する必要があり、オブジェクトは順序付けされた配列にすることができます

//二分探索 (配列内の要素の検索)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(( $ low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($ array , $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}

/ /逐次検索 (配列内の要素の検索)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$ n; $i++){
if($array[$i]==$k){
Break;
}
}
if ($i<$n){
return $i;
}else{
return - 1;
}
}
3. 汎用的な 2 次元配列ソート アルゴリズム関数を作成します。PHP 組み込み関数

を呼び出すことができます。

//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);
}
リセット($keysvalue);
foreach($keysvalue as $key => $vals) {
$ keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}

PHP 面接の質問 1 部 (回答付き)

2007-06-25 10:36

テストは非常に基本的なものですが、基礎がしっかりしていないため、できない人もいます。やれ。 HTTP 1.0 と同様、ステータス コード 401 と error_reporting(2047) の意味は不明です。しかし、2047 を使用するのは少し異常で、読むのが難しすぎるように思えます。

マニュアルを参照していただければ~~~~

* 1. PHP では、現在のスクリプトの名前 (パスとクエリ文字列を除く) が事前定義された変数 (1) に記録され、その URL にリンクされます。現在のページは事前定義された変数 (2) に記録されます。
2. プログラムセグメント を実行すると、(3) が出力されます。
3. HTTP 1.0 では、ステータス コード 401 の意味は (4) です。「ファイルが見つかりません」プロンプトが返された場合、ヘッダー関数を使用でき、そのステートメントは (5) です。
4. 配列関数 arsort の関数は (6)、ステートメント error_reporting(2047) の関数は (7) です。
5.PEAR のデータベース接続文字列の形式は (8) です。
6. Web ページ上のすべての JS/VBS スクリプトをフィルタリングするための正規表現を記述します (つまり、script タグとそのコンテンツを削除します): (9)。
7. ファイル http.conf に PHP を Apache モジュールとしてインストールします。まずステートメント (10) を使用して PHP モジュールを動的にロードします。次にステートメント (11) を使用して、Apache が拡張子 php を持つすべてのファイルを PHP スクリプトとして処理します。処理。
8. include ステートメントと require ステートメントは両方とも、現在のファイルに別のファイルをインクルードできます。これらの違いは (12) です。同じファイルを複数回インクルードすることを避けるために、ステートメント (13) を使用してそれらを置き換えることができます。
9. クラスの属性をシリアル化してセッションに保存できるため、後でクラス全体を復元できます。使用する関数は (14) です。
10. php.ini で (15) が on に設定されていない限り、関数のパラメーターは変数への参照にすることはできません。
11. SQL における LEFT JOIN の意味は (16) です。
tbl_user が学生の名前 (名前) と学生番号 (ID) を記録する場合、
tbl_score は学生 (一部の学生は試験後に退学になり、その記録はありません) の学生番号 (ID) とテストのスコア (スコア) を記録します。および試験科目 (件名)、
各学生の名前と、対応する各科目の合計スコアを出力したい場合は、SQL ステートメント (17) を使用できます。

12. PHP では、ヒアドキュメントは特別な文字列であり、その終了フラグは (18) でなければなりません。

13. フォルダー内のすべてのファイルとサブフォルダーを走査できる関数を作成します。

14. フォーラムでの無限分類の実装原理を簡単に説明します。
15. Web ページを開くと、テキスト ボックスとボタンのある全画面ウィンドウがポップアップ表示されるようにデザインします。ユーザーがテキスト ボックスに情報を入力してボタンをクリックすると、入力した情報がメイン Web ページに表示されている間、ウィンドウを閉じることができます。

//答え (空白を埋めてください):

1. echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];

2. 0
3. (4) 不正 (5) ヘッダー( "HTTP /1.0 404 Not Found");
4. (6) 配列を逆ソートし、インデックス関係を維持します (7) すべてのエラーと警告
5. 理解できませんでした
6. / ].* ?>.*?/si
7.(10) LoadModule php5_module “D:/xampp/apache/bin/php5apache2.dll”

(11) AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml
8.(12) 例外が発生した場合、include で警告が生成されますそして、 require は致命的なエラーを生成します (13) require_once()/include_once()
9.serialize() /unserialize()
10.allow_call_time_pass_reference
11. (16) Natural left external join
(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
12. 終了識別子が配置されている行には、「;」

13.

/** 以外の文字を含めることはできません
* ディレクトリを走査し、結果を配列に保存します。 php4以降をサポートします。 php5 以降では、scandir() 関数を使用して while ループを置き換えることができます。
* @param string $dir
* @return array
*/
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) != = false ) {
if ( $file != “..” && $file != “.” ) {
if ( is_dir($dir . “/” . $file) ) {
$files[$file] = rec_scandir($dir . “/ ” . $file);
}else {
$files[] = $file;
}
}
}
Closedir($handle);
return $files;
}
}

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