本篇文章給大家分享PHP面試題概念題最新匯總,有一定的參考價值,需要的朋友可以參考一下,希望對大家有所幫助。
相關推薦:《PHP面試題之應用題最新匯總》
創建型:員工當生抽(原型、工廠、單例、生成器、抽象工廠)
結構型:是敲響外帶組裝(適配器、橋接、享元、外觀、代理、組合、裝飾)
行為型:被責命碟中裝模防觀測(備忘錄、責任鏈、指令、迭代器、中介者、狀態、範本方法、訪客、觀察者、策略)
通常一個專案是由一個團隊去開發,每個人將自己寫好的程式碼提交到版本伺服器,由專案負責人依照版本管理,方便版本的控制,提高開發效率,保證需要時可以回到舊版。
XSS(跨站腳本攻擊)本質是攻擊者在web 頁面插入惡意程式碼,當使用者瀏覽該頁面之時,嵌入其中的程式碼會被執行,從而達到惡意攻擊使用者的目的。
如何防止?
答案:使用 htmlspecialchars() 函數將提交的內容過濾,使字串裡面的特殊符號實體化。
在整個網站架構中,Web Server(如Apache)只是內容的分發者。舉個栗子,如果客戶端請求的是 index.html,那麼Web Server會去檔案系統中找到這個文件,發送給瀏覽器,這裡分發的是靜態資料。
如果請求的是 index.php,Web Server 收到這個請求後,就會啟動對應的 CGI 程序,這裡就是 PHP 的解析器。接下來PHP解析器會解析php.ini 文件,初始化執行環境,然後處理請求,再以規定CGI 規定的格式返回處理後的結果,退出進程,Web server 再把結果回傳給瀏覽器,這就是一個完整的動態PHP Web存取流程。
MVC 是一種開發模式,主要分為三個部分:
PHP 可以自動進行記憶體管理,清除不再需要的對象。 PHP 使用了引用計數(reference counting)的垃圾回收(garbage collection)機制。每個對像都內含一個引用計數器,當 reference 連接到對象,計數器加1。當reference離開生存空間或被設為NULL,計數器會減1。當某個物件的引用計數器為零時,PHP 會釋放其所佔的記憶體空間。
階段 | 呼叫函數 | 作用 |
---|---|---|
模組初始化階段 | php_module_startup() | 主要進行PHP 框架, zend 引擎的初始化操作 |
請求初始化階段 | php_request_startup() | 對fpm 來說, 是在worker 進程讀取,並解析完請求資料後的一個階段 |
腳本執行階段 | php_execute_script() | 解析php 語法,產生抽象語法樹 |
#請求關閉階段 | php_request_shutdown() | #請求結束時執行 |
模組關閉階段 | #php_module_shutdown () | 當進程關閉時執行 |
FastCGI 是Web 伺服器(如Nginx,Apache )和處理程序(如PHP )之間的一種通訊協議,它是一種應用層通訊協定。 php-fpm 是 PHP FastCGI 運行模式的一個阻塞的單線程模型進程管理器,單 master, 多 worker 結構, 同一個 worker 進程同時只能處理一個請求。 PHP 處理完請求後將解析的結果再透過 FastCGI 協定轉送給 Web 伺服器,Web 伺服器再傳回給使用者。
基本實作
PHP-FPM 是fast-cgi 的實作, 提供了行程管理的功能, 包含master, worker 兩種行程:
worker—請求處理
worker 進程不斷Accept 請求,有請求到達後,將讀取並解析FastCGI 協定的數據,解析完成後開始執行PHP 腳本,執行完成後關閉請求。各worker處理請求的步驟如下:
worker 進程的結構裡有個參數用來記錄worker 目前所處的階段fpm_scoreboard_proc_s->request_stage,一次請求過程中這個值會先後被設定為以下值:
master–進程管理
master 在調用完fpm_run() 後不再返回,而是進入一個事件循環中,此後master 將始終圍繞著幾個事件進行處理,在具體分析這幾個事件之前,首先介紹Fpm 三種不同的進程管理方式,具體要使用哪種模式可以在conf 配置中透過pm 指定,例如pm=dynamic。
master 程序進入 fpm_event_loop() 事件循環,在這個方法中 master 將循環處理 master 註冊的幾個 IO 及定時器事件,當有事件觸發時將回調具體的 handler 進行處理。
#預先申請一塊內存在PHP 內部管理, 應用在申請記憶體時, 會從這部分申請, 釋放時也是先釋放回到記憶體管理中。這樣設計話可以避免小記憶體的申請釋放對作業系統上的額外效能的消耗。
PHP 陣列的底層實作是散列表(也叫hashTable ),散列表是根據鍵(Key)直接存取記憶體存儲位置的資料結構,它的key - value 之間存在一個映射函數,可以根據key 透過映射函數得到的散列值直接索引到對應的value 值,無需透過關鍵字比較,在理想情況下,不考慮散列衝突,散列表的查找效率是非常高的,時間複雜度是O (1)。
概念:指服務依賴的其他服務不透過服務自己創建的方式, 而是由外部傳入的方式。
如何實現的?答:通常來說使用反射實現的.。
能解決什麼問題?答:降低服務模組之間的耦合度,編寫程式碼時不用考慮外部服務的具體實現,只需要依據介面來使用服務即可。
概念:物件導向是程式的一種設計方式,它利於提高程式的重用性,使程式結構更加清晰。
主要特徵:封裝、繼承、多型。
五大基本原則: 單一職責原則;開放封閉原則;替換原則; 依賴原則; 介面分離原則。
本篇首發在 LearnKu.com 網站。
#相關推薦:《2021年PHP面試題大匯總(收藏)》
以上是PHP面試題之概念題最新總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!