首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 經典面試題彙總:53 道核心題目與 3 道程式實作練習

     編輯:PHP 綜合知識

基礎語法與核心概念(1-15 題)

  1. 前一天日期格式化:date("Y-m-d H:i:s", strtotime("-1 day"))
  2. echo/print/print_r 差異:echo 多參數無回傳;print 單參數回傳 1;print_r 印結構化陣列/物件。
  3. 模板引擎:Smarty、Blade、Twig、PHPLib。
  4. 版本控制工具:Git、SVN、CVS。
  5. 字串反轉:英文 strrev();中文需 mb_substr() 逐字元反轉或 array_reverse()。
  6. MySQL 優化:索引、查詢優化、分庫分表、讀寫分離、緩存、引擎選擇。
  7. PHP 全名:Hypertext Preprocessor。
  8. MySQL 當前時間/格式化:NOW(), CURRENT_TIMESTAMP();DATE_FORMAT()。
  9. 中文截取無亂碼:mb_substr($str, 0, 10, 'UTF-8')。
  10. 版本控制/模板引擎使用經驗:實務經驗描述。
  11. 得意專案描述:STAR 原則敘述。
  12. 大流量解決方案:緩存(Redis/Memcached)、CDN、負載均衡、資料庫分庫分表、異步佇列、靜態化、查詢優化。
  13. 取得 Client/Server IP:$_SERVER['REMOTE_ADDR'], $_SERVER['SERVER_ADDR']。
  14. include/require 差異:require 致命錯誤停止;include 警告繼續。require 載入較早。_once 防重複載入。
  15. 修改 Session 生命週期:session_set_cookie_params()、ini_set('session.gc_maxlifetime', ...)。

Web 基礎與安全(16-30 題)

  1. 取得網頁內容:file_get_contents()、cURL。
  2. HTTP 1.0 狀態碼 401/404 header 寫法:header("HTTP/1.0 404 Not Found");FastCGI 下用 header("Status: 404 Not Found")。
  3. Heredoc 結束標記:須獨佔一行、無縮進、分號可選。
  4. ASP/PHP/JSP 優缺點:ASP 綁定 IIS/Windows;PHP/JSP 跨平台、開源生態豐富。
  5. MVC 認識:Model(資料/業務)、View(呈現)、Controller(調度/請求處理)。
  6. SQL:發文最多前 10 會員:SELECT id, username FROM members ORDER BY posts DESC LIMIT 10(MySQL/PostgreSQL)或 TOP 10(SQL Server)。
  7. 傳值 vs 傳引用:&$var 為引用;函數參數用引用可修改外部變數;多返回值場景適用。
  8. error_reporting 作用:設定錯誤回報等級(如 E_ALL & ~E_NOTICE)。
  9. Email 格式驗證:filter_var($email, FILTER_VALIDATE_EMAIL) 或 Regex。
  10. 取得腳本路徑與參數:$argv, $argc(CLI);Web 下用 $_SERVER['SCRIPT_FILENAME']。
  11. 修改 Session 生命週期(重複):同上。
  12. JS 彈窗/焦點:alert(), confirm(), prompt();focus()。
  13. JS 跳轉/引入外部 JS:window.location.href='#';<script src="#"></script>。
  14. foo() vs @foo():@ 抑制錯誤訊息(含 Warning/Notice)。

物件導向與資料庫(31-45 題)

  1. 宣告空類別:class MyClass { }
  2. 實例化:$obj = new MyClass();
  3. 存取屬性:$obj->prop(public);私有屬性需 Getter/Setter。
  4. mysql_fetch_row vs mysql_fetch_array:前者僅數值索引;後者可同時有數值與關鍵字索引(MYSQL_ASSOC, MYSQL_BOTH)。
  5. GD 庫用途:動態圖片建立、處理(縮圖、驗證碼、水印、圖表)。
  6. 輸出 HTML 方式:echo, print, Heredoc, 直接跳出 PHP 標籤。
  7. 開啟檔案函數:fopen()(c 選項)。
  8. 陣列加入元素錯誤寫法:array_add() 不存在;正確為 $arr[]=, array_push()。
  9. 變數作用域題:函數內未 global $num 時不影響外部,輸出 10。
  10. SQL 查詢並輸出:參考範例程式碼。
  11. 類別使用與 MD5 雙重加密:md5(md5($num)."En")。
  12. SQL Insert/Update/Delete:標準語法。
  13. 資料類型意義:int, char(定長), varchar(變長), datetime, text(長文本)。char 固定長度、varchar 實際長度+1-2 字節。
  14. 自增欄位屬性:AUTO_INCREMENT。
  15. 三元運算子輸出:$a = $b > $c ? 4 : 5; → 4。
  16. isset/empty:檢測變數是否設定/是否為空。
  17. 結果集行數:mysql_num_rows()(mysqli: $result->num_rows)。
  18. 陣列第一個元素:$arr[0], reset($arr), current($arr), array_shift($arr)。
  19. 陣列合併字串:implode(',', $arr)。
  20. 字串第一字元:$str[0], substr($str,0,1)。
  21. PHP 連接 SQL Server/Oracle:可,需對應驅動(sqlsrv, oci8, PDO)。
  22. PHP 5 存取修飾符:public, protected, private。
  23. 建構子/解構子:__construct(), __destruct()。

程式實作練習

1. 從 URL 取副檔名

$url = "https://www.sina.com.cn/abc/de/fg.php?id=1";
$path = parse_url($url, PHP_URL_PATH);
$ext = pathinfo($path, PATHINFO_EXTENSION);
echo $ext; // php

2. 計算兩檔案相對路徑

function getRelativePath($target, $base) {
    $t = explode('/', trim($target, '/'));
    $b = explode('/', trim($base, '/'));
    $i = 0;
    while (isset($t[$i]) && isset($b[$i]) && $t[$i] === $b[$i]) $i++;
    $up = count($b) - $i;
    return str_repeat('../', $up) . implode('/', array_slice($t, $i));
}
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
echo getRelativePath($b, $a); // ../../12/34/c.php

3. 遞迴掃描目錄所有檔案

function scanAll($dir) {
    $result = [];
    $items = scandir($dir);
    foreach ($items as $item) {
        if ($item === '.' || $item === '..') continue;
        $path = "$dir/$item";
        if (is_dir($path)) {
            $result[$item] = scanAll($path);
        } else {
            $result[] = $item;
        }
    }
    return $result;
}
print_r(scanAll('/home/test/sql'));
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved