PHPer、Laravel 面試可能會遇到的問題及答案

最近社區裏面有一篇文章引發了最多程序猿的關注,Laravel、PHPer 面試可能會遇到的問題,看評論區很多小夥伴們被難倒,對於一些問題一樣難倒了我(其實有不少啦),趁着週末有空,又總結梳理了一遍,順便來答一波題。因爲我的技術水平有限,答案或許會有誤差,歡迎你們指正。php

PHP模塊

  • PHP7 和 PHP5 的區別,具體多了哪些新特性?html

    • 性能提高了兩倍mysql

    • 結合比較運算符 (<=>)laravel

    • 標量類型聲明git

    • 返回類型聲明github

    • try...catch 增長多條件判斷,更多 Error 錯誤能夠進行異常處理面試

    • 匿名類,如今支持經過new class 來實例化一個匿名類,這能夠用來替代一些「用後即焚」的完整類定義redis

    • …… 瞭解更多查看文章底部連接 PHP7 新特性sql

  • 爲何 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 ,期待和你一塊兒交流、一塊兒成長!

參考文章

相關文章
相關標籤/搜索