最近社群裡面有一篇文章引起了最多程式猿的關注,Laravel、PHPer 面試可能會遇到的問題,看評論區不少小夥伴們被難倒,對於一些問題同樣難倒了我(其實有很多啦),趁著週末有空,又總結梳理了一遍,順便來答一波題。由於個人技術水平有限,答案或許會有偏差,歡迎大家指正。
PHP模組
-
PHP7 和 PHP5 的區別,具體多了哪些新特性?
-
效能提升了兩倍
-
結合比較運算子 (<=>)
-
標量型別宣告
-
返回型別宣告
-
try...catch
增加多條件判斷,更多 Error 錯誤可以進行異常處理 -
匿名類,現在支援通過new class 來例項化一個匿名類,這可以用來替代一些“用後即焚”的完整類定義
-
…… 瞭解更多檢視文章底部連結 PHP7 新特性
-
-
為什麼 PHP7 比 PHP5 效能提升了?
-
變數儲存位元組減小,減少記憶體佔用,提升變數操作速度
-
改善陣列結構,陣列元素和 hash 對映表被分配在同一塊記憶體裡,降低了記憶體佔用、提升了 cpu 快取命中率
-
改進了函式的呼叫機制,通過優化引數傳遞的環節,減少了一些指令,提高執行效率
-
laravel 模組
-
服務提供者是什麼?
服務提供者是所有 Laravel 應用程式引導啟動的中心, Laravel 的核心伺服器、註冊服務容器繫結、事件監聽、中介軟體、路由註冊以及我們的應用程式都是由服務提供者引導啟動的。
-
IoC 容器是什麼?
IoC(Inversion of Control)譯為 「控制反轉」,也被叫做「依賴注入」(DI)。什麼是「控制反轉」?物件 A 功能依賴於物件 B,但是控制權由物件 A 來控制,控制權被顛倒,所以叫做「控制反轉」,而「依賴注入」是實現 IoC 的方法,就是由 IoC 容器在執行期間,動態地將某種依賴關係注入到物件之中。
其作用簡單來講就是利用依賴關係注入的方式,把複雜的應用程式分解為互相合作的物件,從而降低解決問題的複雜度,實現應用程式程式碼的低耦合、高擴充套件。
Laravel 中的服務容器是用於管理類的依賴和執行依賴注入的工具。
-
Facades 是什麼?
Facades(一種設計模式,通常翻譯為外觀模式)提供了一個”static”(靜態)介面去訪問註冊到 IoC 容器中的類。提供了簡單、易記的語法,而無需記住必須手動注入或配置的長長的類名。此外,由於對 PHP 動態方法的獨特用法,也使測試起來非常容易。
-
Contract 是什麼?
Contract(契約)是 laravel 定義框架提供的核心服務的介面。Contract 和 Facades 並沒有本質意義上的區別,其作用就是使介面低耦合、更簡單。
-
依賴注入的原理?
這個就不解釋了吧,這是理解 IoC 容器的前提。
-
什麼是 Composer, 工作原理是什麼?
Composer 是 PHP 的一個依賴管理工具。工作原理就是將已開發好的擴充套件包從 packagist.org composer 倉庫下載到我們的應用程式中,並宣告依賴關係和版本控制。
快取
-
Redis、Memecached 這兩者有什麼區別?
-
Redis 支援更加豐富的資料儲存型別,String、Hash、List、Set 和 Sorted Set。Memcached 僅支援簡單的 key-value 結構。
-
Memcached key-value儲存比 Redis 採用 hash 結構來做 key-value 儲存的記憶體利用率更高。
-
Redis 提供了事務的功能,可以保證一系列命令的原子性
-
Redis 支援資料的持久化,可以將記憶體中的資料保持在磁碟中
-
Redis 只使用單核,而 Memcached 可以使用多核,所以平均每一個核上 Redis 在儲存小資料時比 Memcached 效能更高。
-
-
Redis 如何實現持久化?
-
RDB 持久化,將 redis 在記憶體中的的狀態儲存到硬碟中,相當於備份資料庫狀態。
-
AOF 持久化(Append-Only-File),AOF 持久化是通過儲存 Redis 伺服器鎖執行的寫狀態來記錄資料庫的。相當於備份資料庫接收到的命令,所有被寫入 AOF 的命令都是以 redis 的協議格式來儲存的。
-
資料庫
-
什麼是索引,作用是什麼?常見索引型別有那些?Mysql 建立索引的原則?
索引是一種特殊的檔案,它們包含著對資料表裡所有記錄的引用指標,相當於書本的目錄。其作用就是加快資料的檢索效率。常見索引型別有主鍵、唯一索引、複合索引、全文索引。
-
索引建立的原則
-
最左字首原理
-
選擇區分度高的列作為索引
-
儘量的擴充套件索引,不要新建索引
-
-
高併發如何處理?
-
使用快取
-
優化資料庫,提升資料庫使用效率
-
負載均衡
-
PHP 的設計模式就不多講了,但是 SOLID 設計原則是每一位 PHPer 都必須要掌握的。
其他問題
遺留又補充了一些 PHPer 的常見面試題留給大神們解答。
-
分庫分表怎麼設計
-
如何處理 MySQL 死鎖?
-
談談你對閉包的理解
-
PHP 記憶體回收機制
-
如何解決 PHP 記憶體溢位問題
-
資料庫優化的方法
-
簡述 Laravel 的執行原理
-
Laravel 路由實現原理
-
cookie 和 session 區別,session 儲存在伺服器的哪裡?服務端是如何獲取客戶端的cookie?
-
伺服器叢集搭建、負載均衡、反向代理
-
伺服器常用命令
PS: PHPer 面試關注的技術實力僅僅只是一部分,還有一部分會關注你的內驅力、思考力以及表達能力。其實關注最多的是你是否是妹子、你的顏值還有你是否單身!!!
答案放在了 GitHub 上,歡迎大家 Stat 和 PR.
傳送門:https://github.com/todayqq/ca…
碼字不易,留下你的讚唄
歡迎大家加我的微信:JINCHAOCHAO0220
,期待和你一起交流、一起成長!