'GitHub項目推薦|PHP面試問答與經驗分享'
GitHub JS項目推薦|PHP面試問答
《PHP 面試問答》結合實際 PHP 面試經驗,系統地彙總面試中的各類的問題,並嘗試提供簡潔準確的答案,為你面試 PHP 相關崗位提供“祕籍”。包含:網絡協議、數據結構與算法、PHP基礎、Web、MySQL、Redis、自我介紹、離職原因、職業規劃等部分
GitHub JS項目推薦|PHP面試問答
《PHP 面試問答》結合實際 PHP 面試經驗,系統地彙總面試中的各類的問題,並嘗試提供簡潔準確的答案,為你面試 PHP 相關崗位提供“祕籍”。包含:網絡協議、數據結構與算法、PHP基礎、Web、MySQL、Redis、自我介紹、離職原因、職業規劃等部分
項目分析
倉庫名稱:PHP-Interview-QA
標星(star):1181 (網紅級項目,高手作品,star可以走一波)
標星趨勢
GitHub JS項目推薦|PHP面試問答
《PHP 面試問答》結合實際 PHP 面試經驗,系統地彙總面試中的各類的問題,並嘗試提供簡潔準確的答案,為你面試 PHP 相關崗位提供“祕籍”。包含:網絡協議、數據結構與算法、PHP基礎、Web、MySQL、Redis、自我介紹、離職原因、職業規劃等部分
項目分析
倉庫名稱:PHP-Interview-QA
標星(star):1181 (網紅級項目,高手作品,star可以走一波)
標星趨勢
關注(watch):83
拷貝(fork):202
貢獻人數:1
倉庫大小:31 MB
代碼提交週期分佈:
GitHub JS項目推薦|PHP面試問答
《PHP 面試問答》結合實際 PHP 面試經驗,系統地彙總面試中的各類的問題,並嘗試提供簡潔準確的答案,為你面試 PHP 相關崗位提供“祕籍”。包含:網絡協議、數據結構與算法、PHP基礎、Web、MySQL、Redis、自我介紹、離職原因、職業規劃等部分
項目分析
倉庫名稱:PHP-Interview-QA
標星(star):1181 (網紅級項目,高手作品,star可以走一波)
標星趨勢
關注(watch):83
拷貝(fork):202
貢獻人數:1
倉庫大小:31 MB
代碼提交週期分佈:
綜合推薦指數: 2星半
項目概述
PHP面試問答
結合實際PHP面試,彙總自己遇到的問題,以及網上其他人遇到的問題,嘗試提供簡潔準確的答案
包含網絡、數據結構與算法、PHP、Web、MySQL、Redis、Linux、安全、設計模式、架構、面試等部分
本倉庫將持續更新,fork 無法看到最新內容,建議 Watch 或 Star ~~
面試流程
GitHub JS項目推薦|PHP面試問答
《PHP 面試問答》結合實際 PHP 面試經驗,系統地彙總面試中的各類的問題,並嘗試提供簡潔準確的答案,為你面試 PHP 相關崗位提供“祕籍”。包含:網絡協議、數據結構與算法、PHP基礎、Web、MySQL、Redis、自我介紹、離職原因、職業規劃等部分
項目分析
倉庫名稱:PHP-Interview-QA
標星(star):1181 (網紅級項目,高手作品,star可以走一波)
標星趨勢
關注(watch):83
拷貝(fork):202
貢獻人數:1
倉庫大小:31 MB
代碼提交週期分佈:
綜合推薦指數: 2星半
項目概述
PHP面試問答
結合實際PHP面試,彙總自己遇到的問題,以及網上其他人遇到的問題,嘗試提供簡潔準確的答案
包含網絡、數據結構與算法、PHP、Web、MySQL、Redis、Linux、安全、設計模式、架構、面試等部分
本倉庫將持續更新,fork 無法看到最新內容,建議 Watch 或 Star ~~
面試流程
問題列表
網絡篇
- 計算機網絡體系結構
- UDP 的主要特點
- TCP 的主要特點
- 簡述三報文握手建立 TCP 連接
- 建立 TCP 連接為什麼最後還要發送確認
- 簡述 TCP 連接的釋放
- TIME-WAIT 是什麼,為什麼必須等待 2MLS
- TCP 粘包問題
- UDP、TCP 區別,適用場景
- 建立 socket 需要哪些步驟
- DNS 主要作用是什麼
- HTTP 報文組成
- HTTP 狀態碼
- 常見的 HTTP 方法
- GET 與 POST 請求方式區別
- HTTP 優缺點
- HTTPS 通信原理
- HTTP 2.0
- WebSocket
- IPv6 與 IPv4 有什麼變化
- 什麼是心跳機制
- 什麼是長連接
數據結構與算法篇
- 概述
- 實現基礎
- 線性結構
- 樹
- 散列查找
- 圖
- 排序
- 補充
- 經典算法題
PHP 篇
- echo、print、print_r、var_dump 區別
- 單引號和雙引號的區別
- isset 和 empty 的區別
- static、self、$this 的區別
- include、require、include_once、require_once 的區別
- 數組處理函數
- Cookie 和 Session
- 預定義變量
- 傳值和傳引用的區別
- 構造函數和析構函數
- 魔術方法
- public、protected、private、final 區別
- 客戶端/服務端 IP 獲取,瞭解代理透傳 實際IP 的概念
- 類的靜態調用和實例化調用
- PHP 不實例化調用方法
- php.ini 配置選項
- php-fpm.conf 配置
- 502、504 錯誤產生原因及解決方式
- 如何返回一個301重定向
- PHP 與 MySQL 連接方式
- MySQL、MySQLi、PDO 區別
- MySQL 連接池
- 代碼執行過程
- base64 編碼原理
- ip2long 實現
- MVC 的理解
- 主流 PHP 框架特點
- 對象關係映射/ORM
Web 篇
- SEO 有哪些需要注意的
- img 標籤的 title 和 alt 有什麼區別
- CSS 選擇器的分類
- CSS sprite 是什麼,有什麼優缺點
- display: none 與 visibility: hidden 的區別
- display: block 和 display: inline 的區別
- CSS 文件、style 標籤、行內 style 屬性優先級
- link 與 @import 的區別
- 盒子模型
- 容器包含若干浮動元素時如何清理(包含)浮動
- 如何水平居中一個元素
- 如何豎直居中一個元素
- flex 與 CSS 盒子模型有什麼區別
- Position 屬性
- PNG,GIF,JPG 的區別及如何選
- 為什麼把 JavaScript 文件放在 Html 底部
- JavaScript 數據類型
- JavaScript 操作 DOM 的方法有哪些
- JavaScript 字符串方法有哪些
- JavaScript 字符串截取方法有哪些?有什麼區別
- setTimeout 和 setInterval 的區別
- 使用 new 操作符實例化一個對象的具體步驟
- 如何實現 ajax 請求
- 同源策略是什麼
- 如何解決跨域問題
- 引起內存洩漏的操作有哪些
- 閉包理解及應用
- 對 JavaScript 原型的理解
- 對 JavaScript 模塊化的理解
- 如何判斷網頁中圖片加載成功或者失敗
- 如何實現懶加載
- JSONP 原理
- Cookie 讀寫
- 從瀏覽器地址欄輸入 URL 到顯示頁面的步驟
- Vue.js 雙向綁定原理
- 如何進行網站性能優化
- 漸進增強
MySQL 篇
- 體系結構
- 基礎操作
- 數據庫設計範式
- 數據庫設計原則
- CHAR 和 VARCHAR 數據類型區別
- LEFT JOIN 、RIGHT JOIN、INNER JOIN
- UNION、UNION ALL
- 常用 MySQL 函數
- 鎖
- 事務
- 常見存儲引擎
- 常見索引
- 聚族索引與非聚族索引的區別
- BTree 與 BTree-/BTree+ 索引原理
- 分表數量級
- EXPLAIN 輸出格式
- my.cnf 配置
- 慢查詢
Redis 篇
- Redis 介紹
- Redis 特點
- Redis 支持哪些數據結構
- Redis 與 Memcache 區別
- 發佈訂閱
- 持久化策略
- Redis 事務
- 如何實現分佈式鎖
- Redis 過期策略及內存淘汰機制
- 為什麼 Redis 是單線程的
- 如何利用 CPU 多核心
- 集合命令的實現方法
- 有序集合命令的實現方法
- redis.conf 配置
- 慢查詢
Linux 篇
- Linux 目錄結構
- Linux 基礎
- 命令與文件查找
- 數據流重定向
- sed
- awk
- 計劃任務
- Vim
- 負載查看
- Linux 內存管理
- 進程、線程、協程區別
- 進程間通信與信號機制
安全篇
- 跨站腳本攻擊(XSS)
- 跨站點請求偽造(CSRF)
- SQL 注入
- 應用層拒絕服務攻擊
- PHP 安全
- 偽隨機數和真隨機數
設計模式篇
- 什麼是設計模式
- 如何理解框架
- 主要設計模式
- 怎樣選擇設計模式
- 單例模式
- 抽象工廠模式
- 工廠方法模式
- 適配器模式
- 觀察者模式
- 策略模式
- OOP 思想
- 抽象類和接口
- 控制反轉
- 依賴注入
架構篇
- OAuth 2.0
- 單點登錄
- REST
- API 版本兼容
- JWT
- 畫出 PHP 業務架構圖
- LVS
- Ngnix
- 服務化
- 微服務
- 服務註冊發現
- 數據庫讀寫分離
- 數據庫拆分
- 分佈式事務
- ID 生成器
- 一致性哈希
- Redis 集群
- 消息隊列
- 穿透、雪崩
- 限流(木桶、令牌桶)
- 服務降級
- 語言對比
為何要寫這個
從事軟件開發,已經接近五個年頭了,去年面試中,發現自己依然處於尷尬的位置。簡單重複,缺乏挑戰的工作,已經沒有多大吸引力了,優秀的平臺,面試缺屢次碰壁。人上年紀之後,思維敏感度、記憶力都明顯有所下滑。
程序開發不要被限制在語言層面,這是大家都懂的道理。但是作為一個 PHP 開發者,很多時候都是纏繞在業務的溝壑,理想和現實總是相差甚大。去年由於部門重組,本來將近十餘人負責的項目,之後只剩兩三人負責,各種坑只能靠人肉解決,深感無力。
工作可能只是你的一部分,你必須有自己的能力定位。以前總覺得學什麼,做什麼都無所謂,需要學習的技術,花點時間快速學習就行,有新的技術出來,趕緊緊跟了解下。但這些年下來,發現自己卻沒有一樣能夠拿的出手的,甚至連一個像樣的作品也沒有。其實 PHP 的技術棧還是比較廣的,在對整個技術棧有一定的掌握之後,可能還需要深挖幾個自己喜歡的領域,否則在現今的就業市場裡面,沒有任何的競爭力。所以可以看到很多招聘者都在感慨,中高級工程師都去哪裡了。
面試或者面試他人,無法逃避,那就選擇面對。撰寫《PHP 面試問答》,構建一個面試體系,而不必慌張的臨時準備,時時刻刻都充分準備好,對自己負責,也對別人負責。
結合實際 PHP 面試,系統的彙總面試中的各種各樣的問題,嘗試提供簡潔準確的答案。如果你在 PHP 面試中遇到問題,歡迎提 Issues 交流。包含網絡、數據結構與算法、PHP、Web、MySQL、Redis、Linux、安全、設計模式、架構、自我介紹、離職原因、職業規劃、準備問題等部分。
項目地址
https://github.com/colinlet/PHP-Interview-QA
程序員新視界:分享有趣、有料的流行程序員話題,每天進步一點點。