ホームページ  >  記事  >  バックエンド開発  >  PHPの面接の質問4

PHPの面接の質問4

WBOY
WBOYオリジナル
2016-06-23 14:30:141004ブラウズ

1. COOKIE と SESSION の関係と違い 複数の Web サーバーはどのように SESSION を共有しますか?
2. HTTP プロトコルの POST と GET の違いは何ですか?
3. php コードから出力結果を記述するのは難しくありませんが、小さな罠があります。
4. include と request の両方にファイルを含めることができます。この 2 つの違いは何ですか?
(ここまではかなりうまくいきましたが、将来的には悲惨なことになるでしょう)
5. php でファイルを WEB アップロードする原理と、アップロードされるファイルのサイズを制限する方法は何ですか?
6. フォルダーの下にあるすべてのファイルとフォルダーを走査できる関数を作成します。
7. 8. 真ん中に unix シェルに関する質問がいくつかあります (2 つあるようです) 理解できないので覚えていません
9. mail.log のドキュメントがあります。複数の電子メール アドレスが含まれており、「n」個の個別の電子メール アドレスが含まれています。 xxx.com の電子メール アドレスの選択を要求します (ファイルからの読み取り、フィルタリングから印刷までを含む)。

1) 各部門の各職種で支払われる最高給与を示すステートメントはどれですか?_______
A. select dept_id, job_cat,max(salary) from members where給与 > max(salary);
B. select dept_id, job_cat dept_id,job_cat による従業員グループからの ,max(salary);
C. 従業員からの dept_id、job_cat,max(salary) の選択;
D. dept_id による従業員グループからの dept_id、job_cat,max(salary) の選択;
E. select dept_id,job_cat,salary による従業員グループからの dept_id,job_cat,max(salary);

2)students テーブルの説明:
sid_id 番号
start_date date
end_date date
start_date 列で有効な 2 つの関数はどれですか?_________。
A.sum(start_date)
B.avg(start_date)
C.count(start_date)
D.avg(start_date,end_date)
E.min(start_date)
F.maximum(start_date)
3)そのうちの 2 つ制約 Oracle サーバーは暗黙的に一意のインデックスを作成しますか?______。
A. not null
B. プライマリ
C. 外部キー
D. check
E. unique
4) where 句を含む select ステートメントでは、select ステートメント内の group by 句はどこに配置されますか?______。
A. select 句の直後
B. where 句の前
C. from 句の前
D. order by 句の後
E. where 句の後
5) where 句を含む select ステートメント内、 order by 句は select ステートメントのどこに配置されますか?______.
A. select 句の直後
B. where 句の前
C. after all 句
D. where 句の後
E. from 句の前
6)そこにある 2 つの SQL ステートメントを評価します______。
従業員の給与順から姓、給与を選択します。
従業員の順序から 2 昇順で姓、給与を選択します。
A. 同じ結果 B. 異なる結果 C. 2 番目のステートメントは構文エラーを返します
7) システム日付を「20051110 14:44:17」の形式で表示したいとします。どの選択ステートメントを使用する必要がありますか?______。
A. select to_date(sydate,'yearmmdd hh:mm:ss')from Dual;
B. select to_char(sydate,'yearmonthday hh:mi:ss')from Dual;
C. select to_date(sydate,'yyyymmdd hh24:mi:ss')from Dual;
D. select to_char(sydate,'yyyymmdd hh24:mi:ss')from Dual;
E. select to_char(sydate,'yy-mm-dd hh24:mi:ss' )from Dual;
8) 文字列「Hello world」からの結果「ello world」はどの select ステートメントになりますか?______.
A. select substr('Hello World',1)from Dual;
B. select substr(trim) ('Hello World',1,1))from Dual;
C. select lower(substr('Hello World',1))from Dual;
D. select lower(trim('H'from'Hello World') )from Dual;
9) DML ステートメントです (該当するものをすべて選択してください)______.
A.commit B.merge C.update D.delete E.creat F.drop
10)文字列の接続に使用される Select ステートメント______.
DA. “+” B. “&” C. “||”
質問と回答: クラスター化インデックスとは何ですか、主キーとは何ですか?

1. PHP 環境変数を使用して Web ページのアドレスのコンテンツを取得するにはどうすればよいですか? IPアドレスを取得するにはどうすればよいですか?
[php]
echo $_SERVER ['PHP_SELF'];
echo $_SERVER ['SERVER_ADDR'];
[/php]


2. 2007-2-5 ~ 2007 などの 2 つの日付の差を見つけます。 -3-6 日付の違い
[php]
$begin=strtotime('2007-2-5');
$end=strtotime('2007-3-6');
echo ($end-$begin )/ (24*3600);
[/php]


3. 以下の機能を実現する関数を作成してください:
文字列「open_door」は「OpenDoor」に変換され、「make_by_id」は「MakeById」に変換されます。
[php]
function changeStyle(& $str) {

/*$str = str_replace ( "_", " ", $str );
$str = ucwords ( $str );
$str = str_replace ( " ", "", $str );
return $str;*/

$arrStr=explode('_',$str);
foreach($arrStr as $key=>$value){
$arrStr[ $key]=strtoupper(substr($value,0,1)).substr($value,1);
}
return implode('',$arrStr);
}
$s = "open_door";
echo changeStyle ( $s );
[/php]

4. 次の配列 $arr1 を配列 $arr2 に変換するプログラムを作成する必要があります:
[php]$arr1 = array (
'0' => array ( ' fid' => 1, 'tid' => 'name' =>'Name1' ),
'1' => array ('fid' => 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
' 3' => 配列 ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
'4' => 配列 ('fid' => 3 , 'tid' => 9, 'name' =>'Name5' )
);
$arr2 = array (
'0' => array ( 'tid' = > 1, '名前' => '名前1'),
'1' => 2, '名前' => '名前2'),
'2' => ; 配列 ( 'tid' => 5, 'name' => 'Name3'),
'3' => 配列 ('tid' => 7, 'name' => 'Name4')
) ,
'1' => array (
'0' => array ( 'tid' => 9, 'name' => 'Name5' )
)
);
$ arr1 = array (
'0' => array ('fid' => 1, 'tid' => 1, 'name' =>'Name1' ),
'1' => array (' fid ' => 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => 配列 ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => array ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
' 4 ' => array ('fid' => 3, 'tid' => 9, 'name' =>'Name5' )
);
function changeArrayStyle($arr){
foreach($arr as $ key=>$value){
$result[$value['fid']][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo "

";
var_dump($arr2);
[/php]

5. データベース設計のパラダイムとアプリケーションについて簡単に説明してください。
一般に、テーブル構造の最適化には第 3 正規形で十分です。これにより、アプリケーションが複雑になりすぎることを回避できるだけでなく、SQL ステートメントが大きすぎることによるシステムの非効率性も回避できます。
答え:
第一正規形: 関係パターン R の各属性が分解できない場合、それは第一正規形に属します。
第 2 正規形: R が第 1 正規形に属し、すべての非コード属性がコード属性に機能的に完全に依存している場合、R は第 2 正規形になります。
第 3 正規形: R が第 2 正規形に属し、非コード属性のいずれも候補コードに依存する伝達関数ではない場合、R は第 3 正規形に属します。
6. テーブル内に ID のレコードが複数あります。この ID のすべてのレコードを検索し、SQL ステートメント、ビュー、ストアド プロシージャを使用してこれを実装します。
ストアド プロシージャ:
[php]
DELIMITER //
createproc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId
end
call proc_countNum(1, @no);
select @no;

[/php]
View:
create view v_countNum as select member_id,count(*) as countNum from member_id by member group
select countNum from v_countNum where member_id=1
7 table There 3 つの列 A、B、および C で、SQL ステートメントを使用して実装されます。列 A が列 B より大きい場合、列 A を選択し、それ以外の場合は列 B を選択し、列 B が列 C より大きい場合、列 B を選択し、それ以外の場合は選択します。 C列。
[php]select
case
when first_name>middle_name then
case when first_name>last_name then first_name
else last_name end
else
case when middle_name>last_name then middle_name else last_name
end
end
name
from member
[/php] ]
8 プロジェクト内の SQL ステートメントの実行効率を最適化する方法を簡単に説明してください。どのような観点から SQL ステートメントのパフォーマンスを分析するのですか?
答え: SQL の最適化は役に立たないので、インデックスを直接追加する方が良いでしょう。
9 テンプレートが Smarty テンプレートの場合。セクションステートメントを使用して $data という名前の配列を表示する方法。例:
[php]$data = array(
[0] => array( [id]=8 [name]='name1')
[1] => array( [id]=10 [name] ] ='name2')
[2] => array( [id]=15 [name]='name3')
……
)[/php]
テンプレートページにコードを書きますか? foreach文を使用する場合、どのように表示すればよいでしょうか?
答えはありません。
10 フォルダー内のすべてのファイルとサブフォルダーを走査できる関数を作成します。 (ディレクトリ操作)
[php] $d = dir(dirname(__file__));
//echo "ハンドル: " . $d->handle . "n";
//echo "パス: " . $d->path . "n";
while ( false !== ($entry = $d->read ()) ) {
echo $entry . "
";
}
$d->close ();
[/php]

11 2 つのテーブル、市テーブルと州テーブル。それぞれ都市と県の関係表です。
都市:
id 省ID
1 広州 1
2 深セン 1
3 恵州 1
4 長沙 2
5 武漢 3
………. 広州
省:
id 省
1 広東省
2 湖南省
3 湖北
… ……
(1) 2 つのテーブルを関連付ける SQL ステートメントを記述して、都市の基本情報を表示します。 ?
(2) 表示フィールド: 都市ID、都市名、都道府県。
例:
ID (都市 ID) Cityname (都市名) Privence (州)
。 。 。 。 。 。 。 。 。
。 。 。 。 。 。 。 。 。
(2) 各州にある都市の数を数えたい場合は、group by を使用してクエリしてください。 ?
表示フィールド: 州ID、州名、含まれる都市の数。
答え:
1. A.provinceid=B.id である都市 A、州 B から A.id、A.Cityname、B.Province を選択します
2. B.id、B.Province、count(*) を num として選択しますfrom city A,province B where A.provinceid=B.id group by B.id
12. あなたの経験に基づいて、ソフトウェアエンジニアリングにおけるソフトウェア開発の手順を簡単に説明してください。 Rational Rose、PowerDesigner、Project、VSS または CVS、TestDirector のどれを使用しましたか? 欠点は何ですか?
同社は dbdesigner と cvs を使用しており、テスト管理ツールは Mantis を使用しています
13. オペレーティング システムのスレッドとプロセスの違いについて簡単に説明してください。 LINUX で使用したソフトウェアをリストしてください。
14. 次のデータセット 10 2 36 14 10 25 23 85 99 45 をソートするには、データ構造バブル ソート方法と組み合わせた疑似言語を使用してください。
[php]function bubble_sort(& $arr){
$number=count($arr);
for($i=0;$i for($j=0; $j if($arr[$j]>$arr[$j+1]){
$tmp=$arr[$j];
$arr [$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
}
$str="10 2 36 14 10 25 23 85 99 45 ";
$arr=explode(" ",$str);
bubble_sort($arr);
echo "
";
var_dump($arr);
[/php]

6. 3 つ書き出します複数の MySQL データベース ストレージ エンジンの名前 (ヒント: 大文字と小文字は区別されません)
MyISAM、InnoDB、BDB (Berkeley DB)、Merge、Memory (Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB などdozen Engine

7. あなたが知っているオープンソース データベースの名前を 3 つ以上挙げてください (ヒント: 海外で人気のあるオープン ソース データベースについて考えてください)
MySQL、SQLite、BDB (Berkeley DB)、PostgreSQL、Firebird

8. MySQL データベースとはフィールドタイプ varchar と char の主な違いは何ですか? char が固定長であるのに対し、Varchar は可変長であり、記憶域を節約できるのはどちらのフィールドの方が効率的ですか? varchar は非固定長のため、char 型よりも検索効率が高く、まず長さを検索してからデータを抽出する必要があり、char 固定長型よりも 1 ステップ多く、効率が低くなります

9. MySQL 4.0 と MySQL 4.1 のバージョンに名前を付けます。最も重要な 2 つの違いです。 MySQL 5 を使用したことがある場合は、MySQL 5 と MySQL 4 の主な違いについて話してください。 (質問後半の抜粋)

MySQL 4.1 には主に、サブクエリと文字エンコーディングのサポートなど、MySQL 4.0 よりも 2 つの機能が追加されています。
MySQL5 は、ストアド プロシージャ、ビュー、トランザクションなどを含む、MySQL4 よりも多くの機能を追加します。

10. ハードウェアと帯域幅の増加以外に、MySQL データベースの 3 つの基本的な最適化ルールは何ですか? (ヒント: サービス構成、アプリケーション、開発の観点から検討してください)
(1) システム サービスを最適化し、MySQL の key_buffer、cache_buffer、query_cache などの容量を増やします。
(2) 頻繁にクエリされるすべてのフィールドに適切なインデックスを追加します。
(3) SQL ステートメントを最適化し、Ditinct、Group、Join などのステートメントの操作を削減します

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