程式設計師找工作必備 PHP 基礎面試題 - 第四天

viphper發表於2020-03-16

“PHP學習網” 公眾號會每天分享一些面試題,正在找工作的小夥伴們可以來看看哦。

1、列出五種以上你使用過的PHP 的擴充套件的名稱 (提示:常用的PHP擴充套件 , 如 GD 擴充套件)

PDO、mysql、sybase、oracle、memcache、zlib

2、寫一個函式,用冒泡法實現排序,輸入引數為一個陣列

function mysort($arr){
for($i=0;$i<strlen($arr);$i++)
{
  for($j=$i;$j<strlen($arr);$j++)
  {
    if($arr[i]>$arr[j])
    {
      $temp = $arr[i];
      $arr[i] = $arr[j];
      $arr[j] = $temp;
    }
  }
}
}

3、請說明 在php.ini 中safe_mode 開啟之後對於PHP系統函式的影響

chmod() mkdir() touch() chown() chgrp() chdir() fopen() rmdir() copy() link()
exec() 

chmod() 檢查被操作的檔案或目錄是否與正在執行的指令碼有相同的 UID(所有者)。 另外,不能設定 SUIDSGID 和 sticky bits
mkdir() 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。
touch() 檢查被操作的檔案或目錄是否與正在執行的指令碼有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。
chown() 檢查被操作的檔案或目錄是否與正在執行的指令碼有相同的 UID(所有者)。
chgrp() 檢查被操作的檔案或目錄是否與正在執行的指令碼有相同的 UID(所有者)。
chdir() 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。
fopen() 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。
rmdir() 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。
copy() 檢查被操作的檔案或目錄是否與正在執行的指令碼有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。 (on source and target )
link() 檢查被操作的檔案或目錄是否與正在執行的指令碼有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的指令碼有相同的 UID(所有者)。 (注意:僅測試 target)
exec() 只能在 safe_mode_exec_dir 設定的目錄下進行執行操作。基於某些原因,目前不能在可執行物件的路徑中使用 ..escapeshellcmd() 將被作用於此函式的引數上。

####4、你用什麼方法檢查PHP指令碼的執行效率(通常是指令碼執行時間)和資料庫SQL的效率(通常是資料庫Query時間),並定位和分析指令碼執行和資料庫查詢的瓶頸所在?

1.指令碼執行時間,啟用xdebug,使用WinCacheGrind分析。
2.資料庫查詢,mysql使用EXPLAIN分析查詢,啟用slow query log記錄慢查詢。
3, xdebug統計函式執行次數和具體時間進行分析。
4, 線上系統用strace跟蹤相關程式的具體系統呼叫。

5、試簡述php5 中 autoload 機制是如何自動載入類的

PHP引擎試圖例項化一個未知類的操作時,會呼叫__autoload()方法,在PHP出錯失敗前有了最後一個機會載入所需的類。
因此,上面的這段代 碼執行時,PHP引擎實際上替我們自動執行了一次__autoload方法,將User.class.php這個檔案包含進來。 
在__autoload函式中丟擲的異常不能被catch語句塊捕獲並導致致命錯誤。

關注公眾號,檢視更多面試題

本作品採用《CC 協議》,轉載必須註明作者和本文連結

和PHP學習網一起努力學習

相關文章