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

PHP 面試題大全:基礎語法、MySQL 優化、框架原理與實戰題匯總

     編輯:PHP 相關知識

基礎語法與核心概念

  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、Volt 等,實現 HTML 與 PHP 分離。
  4. 版本控制工具:Git、SVN、Mercurial。
  5. 字符串翻轉:strrev()、implode('', array_reverse(str_split($str)))、遞歸實現。

MySQL 優化專題

  1. 優化手段:
    • 索引優化:覆蓋索引、最左前綴、避免隱式轉換
    • 查詢優化:EXPLAIN 分析、避免 SELECT *、分頁優化
    • 架構優化:讀寫分離、分庫分表、緩存策略
    • 配置優化:innodb_buffer_pool_size、query_cache、慢查詢日誌
  2. PHP 全稱:Hypertext Preprocessor
  3. MySQL 時間函數:NOW()、CURRENT_TIMESTAMP;格式化:DATE_FORMAT()
  4. 中文截取無亂碼:mb_substr($str, 0, 10, 'utf-8') 或 mb_strimwidth()

進階開發與架構

  1. 大流量解決方案:靜態化、CDN、Redis/Memcached 緩存、消息隊列削峰、數據庫分庫分表、負載均衡、Swoole/Workerman 異步處理。
  2. 獲取客戶端/服務端 IP:$_SERVER['REMOTE_ADDR']、$_SERVER['SERVER_ADDR'](注意代理情況下的 HTTP_X_FORWARDED_FOR)。
  3. include/require 差異:require 致命錯誤停止執行,include 警告繼續;include_once/require_once 防止重復包含。
  4. SESSION 生命周期:session.gc_maxlifetime、session_set_cookie_params()、自定義存儲處理器。
  5. 獲取遠程頁面內容:file_get_contents()、cURL、fopen() + stream_get_contents()。
  6. HTTP 1.0 狀態碼 401:Unauthorized;返回 404:header('HTTP/1.1 404 Not Found');
  7. Heredoc 結束標識:頂格書寫、無前後空格、分號可選、換行結束。
  8. MVC 認識:Model(數據/業務)、View(展示)、Controller(調度),低耦合、高內聚、利於測試與維護。

SQL 實戰題

  1. 發帖數 TOP 10:SELECT username FROM members ORDER BY posts DESC LIMIT 10;
  2. 傳值 vs 傳引用:預設傳值(複製),引用用 &;大數據、需修改原值時用引用,否則傳值更安全。
  3. error_reporting:設置錯誤報告級別,如 E_ALL & ~E_NOTICE。
  4. 郵箱驗證:filter_var($email, FILTER_VALIDATE_EMAIL) 或正則 /^[\w\-\.]+@[\w\-]+(\.[\w\-]+)+$/。
  5. 當前腳本路徑與參數:$_SERVER['SCRIPT_FILENAME']、$_SERVER['REQUEST_URI']、$_GET/$_POST。

經典陷阱題

  1. 變量作用域:函數內 $num 為局部變量,外部 $num 不變,輸出 10。
  2. 數組添加方式:array_add() 不存在,正確為 $users[]、array_push()、$users ||= 'john'(錯誤寫法)。
  3. fopen 模式:fopen() 正確,其餘函數不存在。

填空與編程題精選

  • 當前腳本名:$_SERVER['SCRIPT_NAME'];引薦頁面:$_SERVER['HTTP_REFERER']
  • arsort:關聯數組按值降序排序,保持鍵值關係;error_reporting(2047) 開啟所有錯誤報告(E_ALL=2047)。
  • PEAR DSN 格式:phptype://user:pass@host/dbname
  • 過濾 JS/VBS 正則:/]*>.*?<\/script>/is(需配合多行模式)
  • Apache 載入 PHP:LoadModule php7_module modules/libphp7.so + AddType application/x-httpd-php .php
  • 類序列化存 Session:serialize()/unserialize(),需實現 __sleep/__wakeup。
  • LEFT JOIN:左表全部,右表匹配則顯示否則 NULL。查詢學生總分:SELECT u.name, SUM(s.score) FROM tbl_user u LEFT JOIN tbl_score s ON u.id=s.id GROUP BY u.id;

編程挑戰

  1. 高效提取 URL 擴展名:pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION)
  2. 修改 HTML meta charset 為 big5:使用 DOMDocument 或嚴謹正則處理大小寫、引號、空格變體。
  3. 計算相對路徑:將路徑分解為數組,找公共前綴,用 ../ 回溯再拼接目標路徑。
  4. 遞歸遍歷目錄:RecursiveDirectoryIterator + RecursiveIteratorIterator 或自定義遞歸函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved