ホームページ >バックエンド開発 >PHPチュートリアル >PHP 面接での典型的な 7 つの質問 (回答付き)

PHP 面接での典型的な 7 つの質問 (回答付き)

藏色散人
藏色散人転載
2021-05-26 13:52:055021ブラウズ

この記事では、PHP の面接でよくある 7 つの質問 (回答付き) を紹介します。一定の参考価値があります。困っている友人は参考にしてください。皆さんのお役に立てれば幸いです。

1. 2 つの配列をマージするにはいくつかの方法があります。類似点と相違点を比較してみてください。

方法:

1、array_merge()

2、' '

3. array_merge_recursive

類似点と相違点:

array_merge は単に配列をマージします

array_merge_recursive は 2 つの配列をマージします。配列内にまったく同じデータがある場合は、マージします。これらを再帰的に

array_combine と ' ': 2 つの配列をマージし、前者の値が新しい配列

2 のキーとして使用されます。ユーザーが送信したデータが整数であるかどうかを確認する関数を作成してください (データ型に関係なく、2 進数、8 進数、10 進数、または 16 進数の可能性があります)

回答: 実際、主なものは is_int と Floor このメソッド

if(!is_numeric($jp_total)||strpos($jp_total,".")!==false){  
    echo "不是整数";  
}else{  
    echo "是整数";  
}

3です。 PHP の strto lower () および strtoupper () 関数は、中国語以外のシステムがインストールされているサーバー上で中国語の文字を文字化けに変換する可能性があります。Unicode テキストと互換性のある文字列の大文字と小文字の変換を実現するには、2 つの代替関数を作成してください

回答: 理由は、中国語はマルチバイトで構成されており、英語システムでは英語 1 文字だけが 1 バイトしかないため、システムは中国語のすべてのバイトに対して strto lower () 処理を実行します。結合すると文字化けします (新しく生成されたエンコーディング マップに対応する文字が中国語ではない可能性があります)

手動解決策: str_split (string string, intstring, intsplit_length = 1) を使用して、次のように各バイト カットを押します。中国語は3バイトに切れます。認識されたバイトが英文字の場合は変換されます。

rreeee

4. PHP の is_writeable () 関数にはバグがあります。ディレクトリ/ファイルが書き込み可能かどうかを正確に判断できません。ディレクトリ/ファイルが完全に書き込み可能かどうかを判断する関数を作成してください。

回答: あります。は、このバグの 2 つの側面です。 ,

1. Windows では、ファイルに読み取り専用属性しかない場合、is_writeable () 関数は false を返します。true が返された場合、ファイルは必ずしも書き込み可能であるとは限りません。

それがディレクトリの場合は、そのディレクトリに新しいファイルを作成し、そのファイルを開いて確認します;

ファイルの場合は、そのファイルを開いて書き込み可能かどうかをテストできます(フォオープン)。

2. Unix では、php 設定ファイルでセーフモードがオンになっている場合 (safe_mode=on)、is_writeable () も使用できません。

構成ファイルを読んで、safe_mode がオンになっているかどうかを確認します。

rreeee

5. PHP の chmod() 関数にはバグがあり、設定が成功するかどうかは保証できません。指定したパスにディレクトリ/ファイルを作成し、パーミッションマスクが正しく設定できることを確認する関数を作成してください

答え: 私も見つかりません 答えへ

6. PHP は、アップロードされたファイル情報配列のファイル タイプを処理します $_FILES ['type'] は、クライアント ブラウザによって提供されます。ハッカーによって偽造された情報である可能性があります。アップロードされた画像ファイル タイプが、ユーザーは本物で信頼できる

回答: getimagesize を使用してアップロードされた画像のタイプを判断することは、$_FILES 関数のタイプよりも信頼性が高くなります。

同じファイルの場合、php によって返されるタイプは、異なるブラウザの使用は異なり、ブラウジングによって決定されます。サーバーがタイプ type を提供する場合、ハッカーは

を使用して、画像サフィックスを装った実行可能ファイルをサーバーに送信する可能性があります。

getimagesize () 関数を使用して、アップロードされたファイルの種類を確認できます。アバター ファイルの場合は、次のような配列が返されます。

<?php  
function mystrtoupper($a){  
    $b = str_split($a, 1);  
    $r = &#39;&#39;;  
    foreach($b as $v){  
        $v = ord($v);  
        if($v >= 97 && $v<= 122){  
            $v -= 32;  
        }  
        $r .= chr($v);  
    }  
    return $r;  
}  
$a = &#39;a中你继续F@#$%^&*(BMDJFDoalsdkfjasl&#39;;  
echo &#39;origin string:&#39;.$a." ";  
echo &#39;result string:&#39;;  
$r = mystrtoupper($a);  
var_dump($r);

getimagesize () 関数が返された場合このような配列で説明すると、アップロードされるのはアバターファイルです。インデックス 2 の表現タイプは、

1 = GIF、2 = JPG、3 = PNG、4 = SWF、5 = PSD、6 = BMP、7 = TIFF (インテル バイト オーダー)、8 = TIFF( Motorola バイト オーダー)、9 = JPC、10 = JP2、11 = JPX、12 =JB2、13 = SWC、14 = IFF、15 = WBMP、16 = XBM、

これを使用して、アップロードされたデータを制限できます。アバタータイプ

/**
* Tests for file writability
*
* is_writable() returns TRUE on Windows servers when you really can&#39;t write to
* the file, based on the read-only attribute. is_writable() is also unreliable
* on Unix servers if safe_mode is on.
*
* @access   private
* @return   void
*/
if ( ! function_exists(&#39;is_really_writable&#39;))
{
    function is_really_writable($file){
    // If we&#39;re on a Unix server with safe_mode off we call is_writable
    if (DIRECTORY_SEPARATOR == &#39;/&#39; AND @ini_get("safe_mode") == FALSE){
        return is_writable($file);
    }
    // For windows servers and safe_mode "on" installations we&#39;ll actually
    // write a file then read it. Bah...
    if (is_dir($file)){
        $file = rtrim($file, &#39;/&#39;).&#39;/&#39;.md5(mt_rand(1,100).mt_rand(1,100));
        if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE){
            return FALSE;
        }
        fclose($fp);
        @chmod($file, DIR_WRITE_MODE);
        @unlink($file);
        return TRUE;
    } elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) {
        return FALSE;
    }
    fclose($fp);
    return TRUE;
    }
}

7。 PHP は、データの URL をエンコードすることで Javascript とのデータ対話を実装します。ただし、一部の特殊文字のエンコードおよびデコード規則が Javascript とは異なります。この違いを詳しく説明し、UTF-8 のデータを対象にしてください。文字セット。PHP のエンコード関数とデコード関数、および Javascript のエンコード関数とデコード関数を記述して、PHP でエンコードされたデータが Javascript で正しくデコードされ、JavaScript でエンコードされたデータが PHP

で正しくデコードできることを確認します。回答:

Array(
    [0] => 331
    [1] => 234
    [2] => 3
    [3] => width="331" height="234"
    [bits] => 8
    [mime] => image/png

);

/ /js decodeURIComponent は GB2312 エンコード形式を認識しないため、utf-8 に変換する必要があります。その後、文字列にスペースがある場合、数値に変換されます

<?php
    $file=$_FILES[&#39;file&#39;];
    if(!empty($file))
    {
       var_dump($file);
       var_dump(getimagesize($file["tmp_name"]));
    }   
?>

以上がPHP 面接での典型的な 7 つの質問 (回答付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。