PHP面試常常被問到的知識點彙總,對你很是有用

這些是 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 () 會發生什麼?

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方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠

點擊進入暗號: PHP+「平臺」

在這裏插入圖片描述

在這裏插入圖片描述


更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)

以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣

相關文章
相關標籤/搜索