這些是 PHP 面試常常被問到的知識點作彙總。僅是針對性指出知識點,相應的還需本身查找相關資料系統學習。我但願各位能不只僅瞭解是什麼,還要了解爲何,以及背後的原理。php
若是你如今處於如下幾種狀態,本資料很是適合你:前端
準備換工做,不知道從哪開始準備vue
技術遇到瓶頸,不知道該學什麼mysql
準備學 PHP,但不知道領域有多深react
瞭解大部分數組處理函數webpack
字符串處理函數 區別 mb_ 系列函數laravel
& 引用,結合案例分析web
== 與 === 區別面試
isset 與 empty 區別算法
所有魔術函數理解
static、$this、self 區別
private、protected、public、final 區別
OOP 思想
抽象類、接口 分別使用場景
Trait 是什麼東西
echo、print、print_r 區別 (區分出表達式與語句的區別)
__construct 與 __destruct 區別
static 做用(區分類與函數內)手冊 、SOF
__toString () 做用
單引號’與雙引號」 區別
常見 HTTP 狀態碼,分別表明什麼含義
301 什麼意思 404 呢?
Autoload、Composer 原理 PSR-4 、原理
Session 共享、存活時間
異常處理
如何 foreach 迭代對象
如何數組化操做對象 $obj [key];
如何函數化對象 $obj (123);
yield 是什麼,說個使用場景 yield
PSR 是什麼,PSR-1, 2, 4, 7
如何獲取客戶端 IP 和服務端 IP 地址
客戶端 IP
服務端 IP
瞭解代理透傳 實際 IP 的概念
如何開啓 PHP 異常提示
php.ini 開啓 display_errors 設置 error_reporting 等級
運行時,使用 ini_set (k, v); 動態設置
如何返回一個 301 重定向
[WARNING] 必定小心設置 301 後腳本會繼續執行,不要認爲下面不會執行,必要時使用 die or exit
如何獲取擴展安裝路徑
phpinfo (); 頁面查找 extension_dir
命令行 php -i |grep extension_dir
運行時 echo ini_get (‘extension_dir’);
字符串、數字比較大小的原理,注意 0 開頭的 8 進制、0x 開頭 16 進制
字符串比較大小,從左 (高位) 至右,逐個字符 ASCII 比較
BOM 頭是什麼,怎麼除去
0xEF,0xBB,0xBF
檢測、去除
什麼是 MVC
依賴注入實現原理
如何異步執行命令
模板引擎是什麼,解決什麼問題、實現原理(Smarty、Twig、Blade)
如何實現鏈式操做 $obj->w ()->m ()->d ();
Xhprof 、Xdebug 性能調試工具使用
索引數組 [1, 2] 與關聯數組 [‘k1’=>1, ‘k2’=>2] 有什麼區別
緩存的使用方式、場景
給定二維數組,根據某個字段排序
如何判斷上傳文件類型,如:僅容許 jpg 上傳
不使用臨時變量交換兩個變量的值 $a=1; $b=2; => $a=2; $b=1;
strtoupper 在轉換中文時存在亂碼,你如何解決?php echo strtoupper (‘ab 你好 c’);
Websocket、Long-Polling、Server-Sent Events (SSE) 區別
「Headers already sent」 錯誤是什麼意思,如何避免
快速排序(手寫)
冒泡排序(手寫)
二分查找(瞭解)
查找算法 KMP(瞭解)
深度、廣度優先搜索(瞭解)
LRU 緩存淘汰算法(瞭解,Memcached 採用該算法)
堆、棧特性
隊列
哈希表
鏈表
Cookie 與 Session 區別
GET 與 POST 區別
include 與 require 區別
include_once 與 require_once 區別
Memcached 與 Redis 區別
MySQL 各個存儲引擎、及區別(必定會問 MyISAM 與 Innodb 區別)
HTTP 與 HTTPS 區別
Apache 與 Nginx 區別
define () 與 const 區別
traits 與 interfaces 區別 及 traits 解決了什麼痛點?
Git 與 SVN 區別
MySQL
索引、聯合索引(命中條件)
分庫分表(水平分表、垂直分表)
分區
會使用 explain 分析 SQL 性能問題,瞭解各參數含義
Slow Log(有什麼用,何時須要)
重點理解 type、rows、key
CRUD
JOIN、LEFT JOIN 、RIGHT JOIN、INNER JOIN
UNION
GROUP BY + COUNT + WHERE 組合案例
經常使用 MySQL 函數,如:now ()、md5 ()、concat ()、uuid () 等
1:一、1:n、n:n 各自適用場景
瞭解觸發器是什麼,說個使用場景
數據庫優化手段
MSSQL (瞭解)
查詢最新 5 條數據
NOSQL
持久化
支持多種數據類型
可利用 CPU 多核心
內存淘汰機制
集羣 Cluster
支持 SQL
性能對比
支持事務
應用場景
Redis、Memcached、MongoDB
對比、適用場景(可從如下維度進行對比)
你以前爲了解決什麼問題使用的什麼,爲何選它?
查看 CPU、內存、時間、系統版本等信息
find 、grep 查找文件
awk 處理文本
查看命令所在目錄
本身編譯過 PHP 嗎?如何打開 readline 功能
如何查看 PHP 進程的內存、CPU 佔用
如何給 PHP 增長一個擴展
修改 PHP Session 存儲位置、修改 INI 配置參數
負載均衡有哪幾種,挑一種你熟悉的說明其原理
數據庫主從複製 M-S 是怎麼同步的?是推仍是拉?會不會不一樣步?怎麼辦
如何保障數據的可用性,即便被刪庫了也能恢復到分鐘級別。你會怎麼作。
數據庫鏈接過多,超過最大值,如何優化架構。從哪些方便處理?
502 大概什麼什麼緣由?如何排查 504 呢?
偏運維(瞭解):
負載均衡(Nginx、HAProxy、DNS)
主從複製(MySQL、Redis)
數據冗餘、備份(MySQL 增量、全量 原理)
監控檢查(分存活、服務可用兩個維度)
MySQL、Redis、Memcached Proxy 、Cluster 目的、原理
分片
高可用集羣
RAID
源代碼編譯、內存調優
緩存
工做中遇到哪裏須要緩存,分別簡述爲何
搜索解決方案
性能調優
各維度監控方案
日誌收集集中處理方案
國際化
數據庫設計
靜態化方案
畫出常見 PHP 應用架構圖
ThinkPHP(TP)、CodeIgniter(CI)、Zend(非 OOP 系列)
Yaf、Phalcon(C 擴展系)
Yii、Laravel、Symfony(純 OOP 系列)
Swoole、Workerman (網絡編程框架)
對比框架區別幾個方向點
是否純 OOP
類庫加載方式(本身寫 autoload 對比 composer 標準)
易用性方向(CI 基礎框架,Laravel 這種就是高開發效率框架以及基礎組件多少)
黑盒(相比 C 擴展系)
運行速度(如:Laravel 加載一大堆東西)
內存佔用
單例模式(重點)
工廠模式(重點)
觀察者模式(重點)
依賴注入(重點)
裝飾器模式
代理模式
組合模式
SQL 注入
XSS 與 CSRF
輸入過濾
Cookie 安全
禁用 mysql_ 系函數
數據庫存儲用戶密碼時,應該是怎麼作才安全
驗證碼 Session 問題
安全的 Session ID (讓即便攔截後,也沒法模擬使用)
目錄權限安全
包含本地與遠程文件
文件上傳 PHP 腳本
eval 函數執行腳本
disable_functions 關閉高危函數
FPM 獨立用戶與組,給每一個目錄特定權限
瞭解 Hash 與 Encrypt 區別
PHP 數組底層實現 (HashTable + Linked list)
Copy on write 原理,什麼時候 GC
PHP 進程模型,進程通信方式,進程線程區別
yield 核心原理是什麼
PDO prepare 原理
PHP 7 與 PHP 5 有什麼區別
Swoole 適用場景,協程實現方式
原生獲取 DOM 節點,屬性
盒子模型
CSS 文件、style 標籤、行內 style 屬性優先級
HTML 與 JS 運行順序(頁面 JS 從上到下)
JS 數組操做
類型判斷
this 做用域
.map () 與 this 具體使用場景分析
Cookie 讀寫
JQuery 操做
Ajax 請求(同步、異步區別)隨機數禁止緩存
Bootstrap 有什麼好處
跨域請求 N 種解決方案
新技術(瞭解)
ES6
模塊化
打包
構建工具
vue、react、webpack、
前端 mvc
優化
瀏覽器單域名併發數限制
靜態資源緩存 304 (If-Modified-Since 以及 Etag 原理)
多個小圖標合併使用 position 定位技術 減小請求
靜態資源合爲單次請求 並壓縮
CDN
靜態資源延遲加載技術、預加載技術
keep-alive
CSS 在頭部,JS 在尾部的優化(原理)
IP 地址轉 INT
192.168.0.1/16 是什麼意思
DNS 主要做用是什麼?
IPv4 與 v6 區別
TCP 三次握手流程
TCP、UDP 區別,分別適用場景
有什麼辦法能保證 UDP 高可用性 (瞭解)
TCP 粘包如何解決?
爲何須要心跳?
什麼是長鏈接?
HTTPS 是怎麼保證安全的?
流與數據報的區別
進程間通訊的幾種方式,最快的是哪一種?
fork () 會發生什麼?
RESTful 是什麼
如何在不支持 DELETE 請求的瀏覽器上兼容 DELETE 請求
常見 API 的 APP_ID APP_SECRET 主要做用是什麼?闡述下流程
API 請求如何保證數據不被篡改?
JSON 和 JSONP 的區別
數據加密和驗籤的區別
RSA 是什麼
API 版本兼容怎麼處理
限流(木桶、令牌桶)
OAuth 2 主要用在哪些場景下
JWT
PHP 中 json_encode ([‘key’=>123]); 與 return json_encode ([]); 區別,會產生什麼問題?如何解決
好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才。以前說過,PHP方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠
更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)
以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣