2020年の最新のPHPインタビュー100の質問(追加記事)

1、解析エラー:構文エラー、18行目の/website/index.phpに予期しないT_STRINGがあります

18行目の構文エラー文法を確認してください

2、警告:fopen(welcome.txt)[function.fopen]:ストリームを開くことができませんでした:2行目の/website/index.phpにそのようなファイルまたはディレクトリがありません

welcome.txtファイルが見つかりません。ファイルが存在するかどうかを確認してください

クリックして私のペンギングループに参加してください

3. PHPを使用して前日の時刻を印刷します。印刷形式は、2007年5月10日22:21:21です。

Echo date(‘Y-m-d H:i:s’,strtotime(-1 day’));

4. JavaScriptは2次元配列を定義できますか?定義できない場合、どのように解決できますか?

JavaScriptは2次元配列定義をサポートしていません。arr[0] = new array()を使用して解決できます

5. a.htmlとb.htmlが同じフォルダーにあると仮定して、a.htmlを5秒間開いた後、javascriptを使用して自動的にb.htmlにジャンプします。

<script>
function go2b(){
    
    
 window.location = “b.html”;
 window.close();
}
setTimeout(go2b(),5000 ); //5秒钟后自动执行go2b()
</script>

//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"].<br />;
//查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"].<br />;
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"].<br />;

6. HTTP 1.0では、ステータスコード401の意味は承認されていません____。プロンプト「ファイルが見つかりません」が返された場合、ヘッダー関数を使用でき、文はheader( "HTTP / 1.0 404 Not Found");です。

401は無許可を意味します; header( "HTTP / 1.0 404 Not Found");

7. Johnをusers配列に追加しますか?

$users[] = ‘john’; array_push($users,‘john’);

8. PHPのerror_reportingの機能は何ですか?

error_reporting()は、PHPのエラー報告レベルを設定し、現在のレベルを返します。

9. SESSIONの生存期間を変更する方法(1ポイント)。

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

方法2:$ savePath =“ ./session_save_dir/”;

$ lifeTime =時間*秒;

session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();

方法3:

setcookie() and session_set_cookie_params($lifeTime);

10. PHP Development Resource NetworkのホームページなどのWebページアドレスがあります:http://www.phpres.com/index.html、そのコンテンツを取得する方法は?($ 1ポイント)

方法1(PHP5以降の場合):

$readcontents = fopen(“http://www.phpres.com/index.html”, “rb”);
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;

方法2:

echo file_get_contents(“http://www.phpres.com/index.html”);

11.標準のURLからファイル拡張子を抽出するために可能な限り効率的な関数を記述します

例:http://www.sina.com.cn/abc/de/fg.php?id = 1phpまたは.phpを取り出す必要があります

回答1:

function getExt($url){
    
    
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(.,$file);
return $ext[1];
}

回答2:

function getExt($url) {
    
    
$url = basename($url);
$pos1 = strpos($url,.);
$pos2 = strpos($url,?);
if(strstr($url,?)){
    
    
Return substr($url,$pos1 + 1,$pos2$pos11);
} else {
    
    
return substr($url,$pos1);
}
}

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

要件:dir / upload.image.jpg、.jpgまたはjpgを検索、

処理にはPHP独自の処理関数を使用する必要があります。このメソッドを明らかに繰り返すことはできません。関数get_ext1(filename)、getext 2(file_name)、get_ext2()にカプセル化できます。F I L En個a m e g e tEx t 2 file_name)

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),.)));
}

13、

$str1 = null;
$str2 = false;
echo $str1==$str2 ? ‘相等’ : ‘不相等’;
$str3 =;
$str4 = 0;
echo $str3==$str4 ? ‘相等’ : ‘不相等’;
$str5 = 0;
$str6 =0;
echo $str5===$str6 ? ‘相等’ : ‘不相等’;
?>

回答:等しい等しい等しくない

14. MySQLデータベースのvarcharとcharの主な違いは何ですか?そのような分野の検索効率は高いのですが、なぜですか?

Varcharは可変長で、ストレージスペースを節約し、charは固定長です。varcharは固定長ではないため、検索効率はvarcharタイプよりも高速であり、最初に長さを検索してからデータを抽出する必要があります。char固定長タイプよりもステップが1つ多いため、効率が低くなります。

15. JavaScriptを使用して、Imageタグを生成する3つのメソッドを記述してください(ヒント:メソッド、オブジェクト、およびHTMLの観点から検討してください)

(1)var img = new Image();

(2)var img = document.createElement(“ image”)

(3)img.innerHTML =“”

16.XHTMLとHTMLの2つの最も重要な違いを説明してください

(1)ドキュメントタイプDocTypeを指定するには、XHTMLが必須である必要があります。HTMLは必要ありません。

(2)XHTMLのすべてのタグを閉じる必要があり、HTMLはより恣意的です

17. 3つ以上のMySQLデータベースストレージエンジンの名前を記述します(ヒント:大文字と小文字は区別されません)

MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDBなどを含む12以上のエンジン。

18. 2007-2-5と2007-3-6の日付の違いなど、2つの日付の違いを見つけます

方法1:

<?php
class Dtime{
    
    
 function get_days($date1, $date2){
    
    
  $time1 = strtotime($date1);
  $time2 = strtotime($date2);
  return ($time2-$time1)/86400;
 }
}
$Dtime = new Dtime;
echo $Dtime->get_days(2007-2-5,2007-3-6);
?>

方法2:

<?php
$temp = explode(-,2007-2-5);
$time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
$temp = explode(-,2007-3-6);
$time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
echo ($time2-$time1)/86400;

方法3:echo abs(strtotime( "2007-2-1")-strtotime( "2007-3-1"))/ 60/60/24時間差を計算する

19 /次の機能を実現するための関数を書いてください。

文字列「open_door」は「OpenDoor」に変換され、「make_by_id」は「MakeById」に変換されます。

方法:

function str_explode($str){
    
    
$str_arr=explode(“_”,$str);$str_implode=implode(” “,$str_arr); $str_implode=implode
(“”,explode(” “,ucwords($str_implode)));
return $str_implode;
}
$strexplode=str_explode(“make_by_id”);print_r($strexplode);

方法2:

$str=”make_by_id!;
$expStr=explode(“_”,$str);
for($i=0;$i
echo ucwords($expStr[$i]);
}

方法三:echo str_replace( ''、”、ucwords(str_replace( '_'、 ''、 'open_door')));

20.テーブルにはIdの複数のレコードがあり、このIDのすべてのレコードを見つけて、レコードの総数を表示し、SQLステートメント、ビュー、およびストアドプロシージャを使用して個別に実装します。

DELIMITER //
create procedure proc_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;

方法:表示:

create view v_countNum as select member_id,count(*) as countNum from member group by
member_id
select countNum from v_countNum where member_id=1

jsのフォワードおよびバックワードWebページのコード

前進行:history.forward(); = history.go(1);

后退:history.back(); = history.go(-1);

echo count( "abc");何が出力されますか?

回答:1

count —配列内の要素の数またはオブジェクト内の属性の数をカウントします

int count(mixed $ var [、int $ mode])、varが配列タイプまたはCountableインターフェイスを実装するオブジェクトでない場合、1が返されますが、varがNULLの場合、結果は0になります。

オブジェクトの場合、SPLがインストールされていると、Countableインターフェイスを実装することでcount()を呼び出すことができます。このインターフェイスには、count()関数の戻り値を返すcount()という1つのメソッドしかありません。

21.塑性データを格納する一次元配列があります。降順で並べる関数を書いてください。高い実行効率が要求されます。そして、実行効率を向上させる方法を説明します。(この関数は自分で実装する必要があり、php関数は使用できません)

function BubbleSort(&$arr){
    
    
 $cnt=count($arr);
 $flag=1;
 for($i=0;$i<$cnt;$i++){
    
    
 if($flag==0){
    
    
  return;
 }
 $flag=0;
 for($j=0;$j<$cnt-$i-1;$j++){
    
    
  if($arr[$j]>$arr[$j+1]){
    
    
   $tmp=$arr[$j];
   $arr[$j]=$arr[$j+1];
   $arr[$j+1]=$tmp;
   $flag=1;
  }
 }
 }
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);

22.開発プロセス中にページの読み込みを高速化するために使用する方法の例を挙げてください

使用時にのみサーバーリソースを開き、時間内にサーバーリソースを閉じ、データベースにインデックスを追加します。ページは、別のサーバー上に静的ファイル、画像、およびその他の大きなファイルを生成できます。コード最適化ツールを使用します。

23.次のコードは何を生成しますか?どうして?

$num =10;
function multiply(){
    
    
$num =$num *10;
}
multiply();
echo $num;

関数multiply()は$ numをグローバル変数(グローバル$ numや$ _GLOBALS ['num']など)として指定しないため、$ numの値は10です。

24. HTTPプロトコルのGET、POST、およびHEADの違いは?

HEAD:ページのヘッダーのみをリクエストします。

GET:指定されたページ情報を要求し、エンティティ本体を返します。

POST:指定されたURIの新しい従属エンティティとして指定されたドキュメントを受け入れるようにサーバーに要求します。

(1)HTTPは、サーバーと対話するさまざまな方法を定義します。最も基本的な方法はGETとPOSTです。実際、GETはほとんどのリクエストに適しており、予約済みのPOSTはサイトの更新にのみ使用されます。

(2)FORMが送信されたとき、メソッドが指定されていない場合、デフォルトはGETリクエストです。Formで送信されたデータは、URLから?で区切られてURLに追加されます。英数字はそのまま送信されますが、スペースは「+」記号に変換され、その他の記号は%XXに変換されます。XXは16進数の記号のASCII(またはISO Latin-1)値です。GETリクエストによって送信されたデータはHTTPリクエストプロトコルヘッダーに配置され、POSTによって送信されたデータはエンティティデータに配置されます。

GETメソッドで送信されるデータは最大1024バイトしか持てませんが、POSTにはこの制限はありません。

(3)GETこれは、ブラウザーがサーバーを要求するために最も一般的に使用される方法です。POSTメソッドはデータの送信にも使用されますが、GETとは異なり、POSTを使用する場合、データはURIの後に渡されるのではなく、渡される別の行として渡されるため、この時点でContent_lengthを送信する必要があります。ヘッダーはデータの長さを示し、その後に空白行が続き、実際に送信されたデータが続きます。Webページのフォームは通常、POSTを使用して送信されます。

注意してください、迷子にならないでください

さて、みなさん、上記はこの記事の全内容です。ここで見ることができるのはすべて才能です。さっきも言ったように、PHPには技術的なポイントがたくさんあります。多すぎるので、書くのは本当に不可能で、書いた後はあまり読まないので、必要に応じてここでPDFとドキュメントに整理します。できる

クリックしてシークレットコードを入力してください:PHP +「プラットフォーム」

ここに写真の説明を挿入

ここに写真の説明を挿入


学習内容の詳細については、[Comparative Standard Factory]の優れたPHPアーキテクトチュートリアルカタログをご覧ください。給与が確実に上がるように読むことができます(継続的な更新)

上記のコンテンツは、すべての人に役立つことを願っています。多くのPHP担当者は、上級者になると常に問題やボトルネックに直面します。ビジネスコードを書きすぎると、方向性がわかりません。どこから改善を始めればよいかわかりません。これに関する情報をまとめました。ただし、これらに限定されません。分散アーキテクチャ、高スケーラビリティ、高パフォーマンス、高同時実行性、サーバーパフォーマンスチューニング、TP6、laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql最適化、シェルスクリプト、Docker、マイクロサービス、Nginxなど。多くの知識ポイント、高度な高度な乾物は、誰とでも無料で共有でき、必要な人は私のPHPテクノロジー交換グループに参加できます

おすすめ

転載: blog.csdn.net/weixin_49163826/article/details/108968606