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

PHP 經典面試題彙總與參考答案(50+ 題)

     編輯:PHP 相關知識

整理自實戰面試高頻題目,涵蓋基礎語法、陣列字串操作、日期時間、資料庫、OOP、設計模式、效能優化、安全性、Linux 指令等核心領域,附參考答案與程式碼片段,適合面試複習與技術自測。

精選題目與解析

1. 印出前一天日期時間(格式 Y-m-d H:i:s)

echo date('Y-m-d H:i:s', strtotime('-1 day'));

2. echo、print、print_r 差異

  • echo:語言結構,可輸出多字串 echo $a, $b,無回傳值。
  • print:語言結構,單一參數,回傳 1。
  • print_r:函式,可遞迴輸出陣列/物件結構,適合除錯。

3. 常見模板引擎

Smarty、Twig、Blade(Laravel)、Plates。

4. 版本控制工具

Git(主流)、SVN、Mercurial。

5. 字串反轉(含中文)

// 英文
strrev($str);
// 中文(需 mbstring)
$len = mb_strlen($str, 'UTF-8');
$rev = '';
for ($i = $len - 1; $i >= 0; $i--) {
    $rev .= mb_substr($str, $i, 1, 'UTF-8');
}

6. MySQL 優化方向

  • 索引設計(覆蓋索引、最左前綴)
  • SQL 優化(EXPLAIN 分析、避免 SELECT *)
  • 架構層:讀寫分離、分庫分表、快取(Redis)、CDN 靜態資源
  • 引擎選擇:InnoDB 交易、MyISAM 唯讀

7. PHP 全名

Hypertext Preprocessor

8. MySQL 當前時間與格式化

NOW() / CURRENT_TIMESTAMP()
DATE_FORMAT(date, '%Y-%m-%d')

9. 中文截取不亂碼

mb_substr($str, 0, 10, 'UTF-8')

10. 大流量架構應對

  • 快取策略(多層快取、快取穿透/擊穿/雪崩防護)
  • 負載均衡(Nginx、LVS、云負載均衡)
  • 靜態資源 CDN
  • 資料庫讀寫分離、分庫分表
  • 非同步佇列削峰(Redis/RabbitMQ)
  • 監控與鏈路追蹤定位瓶頸

11. 取得 Client/Server IP

$_SERVER['REMOTE_ADDR']   // 客戶端
$_SERVER['SERVER_ADDR']   // 伺服器

12. include vs require

  • 失敗時:include 警告繼續,require 錯誤中止。
  • 載入時機:require 編譯期,include 執行期。
  • 防重複:include_once、require_once。

13. Session 生命週期修改

session_set_cookie_params(3600); // 1小時
// 或 php.ini: session.gc_maxlifetime

14. 取得遠端網頁內容

file_get_contents($url)
// 或 cURL(支援 Header、Timeout、Proxy)

15. HTTP 401/404 Header 輸出

header('HTTP/1.1 401 Unauthorized');
header('HTTP/1.1 404 Not Found');
// FastCGI 環境
header('Status: 404 Not Found');

16. Heredoc 結束標記

須獨佔一行、無前後空白、分號結尾,如 EOD;。

17. MVC 認知

  • Model:資料邏輯、業務規則
  • View:呈現層、模板渲染
  • Controller:請求分發、協調 M/V

18. SQL:前十筆發文用戶

SELECT id, username FROM members ORDER BY posts DESC LIMIT 10

19. 傳值 vs 傳址

function foo(&$val) { $val = 2; } // 傳址,外部變數會改變
foo($a);

20. error_reporting 作用

設定錯誤回報等級(如 E_ALL & ~E_NOTICE)。

21. Email 格式驗證

filter_var($email, FILTER_VALIDATE_EMAIL)
// 或正則(不建議自寫複雜正則)

22. 取得腳本路徑與參數

$argv[0] // 腳本路徑
$argc, $argv // 參數個數與陣列

23. JS 常用彈窗/焦點

alert/confirm/prompt/focus

24. JS 跳轉與引入外部檔

window.location.href = 'url';
<script src="xxx.js"></script>

25. @ 運算子

抑制錯誤訊息(含 Warning/Notice),慎用影響除錯。

26. 空類別宣告與實例化

class MyClass {}
$obj = new MyClass();

27. 存取類別屬性

$obj->prop = 'val';
echo $obj->prop;

28. mysql_fetch_row vs mysql_fetch_array

後者支援關聯索引(欄位名)與數字索引雙模式。

29. GD 庫用途

動態圖片建立、縮放、裁切、驗證碼、水印、圖表繪製。

30. 輸出 HTML 方式

echo '<div>...</div>';
echo <<<HTML
...
HTML;

31. 開啟檔案讀寫函式

fopen()

32. 陣列新增元素錯誤選項

array_add() 不存在;正確為 $arr[]、array_push()。

33. 變數範圍題目

$num = 10;
function multiply() { $num *= 10; } // 區域變數
multiply();
echo $num; // 輸出 10

34. 簡單查詢與輸出

$sql = "SELECT * FROM users WHERE username='張三'";
$res = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($res)) {
    printf("用戶:%s 電話:%s 學歷:%s 日期:%s\n", $row['username'], $row['tel'], $row['content'], $row['date']);
}

35. 雙重 MD5 加密

md5(md5($num . 'En'))

36. SQL 增刪改

INSERT INTO t (a,b) VALUES ('v1','v2');
UPDATE t SET date=NOW() WHERE username='張三';
DELETE FROM t WHERE username='張四';

37. 資料型態意義

  • int:整數
  • char(n):定長字串,不足補空白
  • varchar(n):變長字串,實際長度儲存
  • datetime:日期時間
  • text:長文本

38. 自增欄位屬性

AUTO_INCREMENT

39. 三元運算子輸出

$a = 201 > 40 ? 4 : 5; // 4

40. 變數檢測函式

isset() 判斷是否設定且非 null;empty() 判斷空值(0, '', null, false, [])。

41. 查詢結果筆數

mysqli_num_rows($result)

42. 陣列第一個元素

$arr[0]; reset($arr); current($arr); array_shift($arr);

43. 陣列合併字串

implode(',', $arr)

44. 取字串第一字元

$str[0]; substr($str, 0, 1);

45. PHP 連接 SQL Server/Oracle

支援,需安裝對應 PDO 驅動(pdo_sqlsrv, pdo_oci)。

46. PHP 5 存取修飾符

public / protected / private

47. 建構子/解構子

public function __construct() {}
public function __destruct() {}

程式設計題

  1. 取 URL 副檔名:pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION)
  2. 兩檔案相對路徑:分割路徑、找共同前綴、產生 ../ 回溯。
  3. 遞迴掃描目錄:RecursiveDirectoryIterator + RecursiveIteratorIterator。

此題庫涵蓋初中級工程師核心技能,建議實作練習並理解原理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved