這篇文章主要介紹了關於對PHP面試知識點的小結,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
複製過來做個目錄,具體細節因為自己也是一知半解的,所以打算慢慢把列表裡面的問題都研究一下
PHP interview best practices in China
此倉庫主要真是國內PHP 面試常被問到的知識點做總結。僅針對性指出知識點,對應還需自己找相關資料系統學習。我希望各位能不僅了解是什麼,還要了解為什麼,以及背後的原理。
如果您有對對應知識點非常有系統的資料,歡迎 PR 增加連結。不建議您使用 fork,資料會隨時更新。
如果你現在處於以下幾種狀態,本資料非常適合你:
準備換工作,不知道從哪開始準備
#技術遇到瓶頸,不知道該學什麼
準備學PHP,但不知道領域有多深
#基礎篇
了解大部分陣列處理函數
字串處理函數(區別mb_ 系列函數)
#& 引用,結合案例分析
- ##== 與=== 區別
- isset 與empty 區別
- 全部魔術函數理解
- static、$this、self 區別
- private、protected、public 、final 區別
- OOP 思想
- 抽象類別、介面分別使用場景
##Trait 是什麼東西- echo、print、print_r 區別
- __construct 與__destruct 區別
- static作用(區分類與函數內)
- __toString() 作用
- 單引號
- '
常見HTTP 狀態碼,分別代表什麼意義與雙引號
"
區別- 301 什麼意思404 呢
進階篇
##模板引擎是什麼,解決什麼問題、實作原理(Smarty、Twig、Blade)
Autoload、Composer 原則
Session 分享、存活時間
- 異常處理
- 如何foreach 迭代物件
- 如何數組化操作物件$obj[key]
- 如何函數化物件$obj(123);
- #yield 是什麼,說使用場景
- PSR 是什麼,PSR-1, 2, 4, 7
- 如何取得客戶端IP 與服務端IP 位址
- 如何開啟PHP 異常提示
- 如何傳回一個301重定向
- #如何取得擴充功能安裝路徑
##字串、數字比較大小的原理,注意0 開頭的8進位、0x 開頭16進位
#BOM 頭是什麼,怎麼除去
什麼是MVC
依賴注入實作原則
#如何非同步執行指令
- #如何實作鍊式操作
$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區別
- require_once
#include_once
與- 區別
- Memcached 與Redis 區別
- #MySQL 各個儲存引擎、與差異(一定會問MyISAM 與Innodb 區別)
##HTTP 與HTTPS 區別- Apache 與Nginx 區別
查看CPU、記憶體、時間、系統版本等資訊
- ################################ ##define() 與const 區別############traits 與interfaces 區別及traits 解決了什麼痛點? ############Git 與 SVN 區別#############資料庫文章###########MySQL####
MSSQL(了解)
索引、聯合索引(命中條件)
#分庫分錶(
水平分錶
、#垂直分錶
)分區
#會使用
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
、
1:n、
n:n各自適用場景
- 了解觸發器是什麼,說個使用情境
##資料庫最佳化手段查詢最新5個資料
- ##NOSQL
- #持久化
- 支援多鐘資料類型
- 可利用CPU 多核心
- 記憶體淘汰機制
- #叢集Cluster
- #支援SQL
- 效能比較
- 支援交易
- 應用程式場景
- Redis、Memcached、MongoDB
- 對比、適用場景(可從以下維度進行比較)
- 你之前為了解決什麼問題使用的什麼,為什麼選它?
- 伺服器篇
- #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
- 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()
會發生什麼事?API 篇
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 VS Golang
- #
PHP VS Python
PHP VS JAVA
了解PHP 擴充開發
熟練C
聲明
該資料不針對任何一家公司,對因該資料對您產生的影響概不負責,望知曉。
祝順利
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
#以上是對於PHP面試知識點的小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!