首頁  >  文章  >  後端開發  >  對於PHP面試知識點的小結

對於PHP面試知識點的小結

不言
不言原創
2018-07-14 11:41:381547瀏覽

這篇文章主要介紹了關於對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 呢

進階篇

  • 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

  • 依賴注入實作原則#如何非同步執行指令

##模板引擎是什麼,解決什麼問題、實作原理(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(有什麼用,何時需要)

    • #專注於理解 ##typerowskey

    • CRUD

    • #JOIN、LEFT JOIN 、RIGHT JOIN、INNER JOIN

    • UNION

    • GROUP BY COUNT WHERE 組合案例

    • 常用MySQL 函數,如:now()、md5( )、concat()、uuid()等

    • 1:11:nn: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

  • 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程式碼所寫的規範,總結的很全

對於PHP物件導向設計五大原則(SOLID)的總結

#

以上是對於PHP面試知識點的小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn