首頁 >後端開發 >php教程 >來會會有點水平的PHP基礎面試題

來會會有點水平的PHP基礎面試題

藏色散人
藏色散人轉載
2021-05-25 13:40:594604瀏覽

這篇文章向大家彙整有點程度的PHP基礎面試題,有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

1、透過哪一個函數,可以把錯誤轉換成異常處理?

A:set_error_handler

B:error_reporting

C:error2exception

D:catch

#正確答案:*A *

答案分析:set_error_handler () 可指定一個回呼函數,當錯誤發生時,會自動透過指定的回呼函數處理。在回調函數中拋出新的異常即可。

2、下列哪一個 shell 函數的描述是正確的?

A:shell 函數可以先呼叫後定義

B:shell 函數需使用關鍵字function 定義

C:shell 函數內的變數可以宣告為局部變數

D:shell 函數只能透過return 傳回值,1 是成功,0 是失敗

#正確答案:C

##答案分析:shell 函數必須先定義在呼叫;宣告時,無需使用關鍵字;透過local 可以定義函數內的局部變數;shell 函數傳回值,0 是成功,非0 是錯誤,其他選項正確

3、下列關於全文檢索技術的說法,不對的是:

A: Solr 是新一代的全文檢索元件,它比Lucene 的搜尋效率高很多,還能支援HTTP 的存取方式,PHP 呼叫Solr 也很方便。

B: MySQL 中把一個欄位建立 FULLTEXT 索引,就可以實現全文檢索,目前 MyISAM 和 InnoDB 的 table 都支援 FULLTEXT 索引。

C: Sphinx 是一個基於 SQL 的全文檢索引擎,可以結合 MySQL 做全文搜索,它可以提供比資料庫本身更專業的搜尋功能。

D: Lucene 附帶的二元分詞分析器 CJKAnalyzer 切詞速度很快,能滿足一般的全文檢索需求。

正確答案:*A *

答案分析: Solr 是新一代的全文檢索組件,它基於Lucene,所以說它比Lucene 快就是胡扯:)

4、關於單例模式的說法,錯誤的是?

A:單例模式的目的是確保在全域環境中,一個類別只能有一個實例存在

B:單利模式一般要講建構函式設定為private

C:只需要將建構函式設為private 即可確保全域中只有一個實例

D:連接資料庫的功能通常用單例模式實作

#正確答案:*C *

答案分析:建構子設定為private,僅能確保無法透過new 建立新實例,但仍可透過clone、反序列化等方式建立多個實例。

5、正規的引擎表述錯誤的是?

A 正規引擎主要可以分為兩大類:一種是 DFA,一種是 NFA。

B 一般而論,NFA 引擎則搜尋更快一些。但是 DFA 以表達式為主導,更容易操縱,因此一般程式設計師更偏好 DFA 引擎!

C NFA 表達式主導,DFA 文本主導.

D 可以使用是否支援忽略優先量詞和分組捕獲來判斷引擎類型:支援NFA, 不支援DFA

#正確答案:B

答案分析:正確的說法應該是:一般而論,DFA 引擎則搜尋更快一些。但 NFA 以表達式為主導,更容易操縱,因此一般程式設計師更偏好 NFA 引擎!

6、方格中的正規表示式能與下列哪一個選項相符?

/.Sd/

A. 123

B. **1234

C. 1234

D.123

正確答案:B

答案分析:本題的重點是理解這個正規表示式的意思- 從左到右,首先是零個或多個任意字元( .),跟著是一個星號(),然後是123,最後是一個數字。因此答案是 B。

7、如下關於資料庫的說法,哪個是錯的?

A:為了效率資料庫可以有多個讀庫

B:資料庫可以用主從做熱備

C:資料庫不能提供多主多從架構

D: 資料庫主從是透過日誌同步的

正確答案:C

答案分析:資料庫可以提供多主多從架構。

8、下列哪一個不是 XSS 漏洞的修復方式?

A: 對參數進行htmlspecialchas 過濾

B: 對參數使用白名單過濾

C: 不允許輸入的內容顯示到瀏覽器

# D: 禁止在js 標籤內輸出使用者輸入的內容

正確答案:*A *

答案分析:這類過濾可以解決尖括號類型的xss,無法解決js 標籤內的xss

9、下列哪一項不是PHP SAPI 模式?

A.ISAPI

B.CGI

C.FastCGI

D.RESTFUL APi

## 正確答案:D

答案分析:A~C 是最常用的模式,D 是一種介面的組織方式。

10、對一個大檔案進行逐行遍歷,如下方法效能較高的是?

A:寫一個實作了 IteratorAggregate 介面的類,透過該類別使用 foreach 遍歷。

B:使用 file_get_contents 將檔案內容一次載入內存,然後逐行遍歷。

C:透過 exec 函數,呼叫 shell 工具遍歷

D:使用別人寫的類別庫

正確答案:A

答案分析:使用IteratorAggregate 可將檔案開啟後透過移動指標的方式逐行遍歷,不受檔案大小影響。使用 file_get_contents 處理大檔案很容易導致 PHP 記憶體溢出;呼叫 exec 會產生額外的進程,影響效能;其他人寫的類別庫品質不一定高。

11、以下選項,哪一個不是設計模式應該遵守的原則?

A:組合優於繼承

B:針對介面程式設計

C:盡可能降低耦合

D:盡量使用高效能的語法

正確答案:D

答案分析:設計模式的關注點在於程式碼的可維護性和可重複性,D 選項不是設計模式的重點。

12、下列關於回溯的表達式錯誤的是?

A ab.lmn 匹配abcdeflmnghijklmn 中的abcdeflmnghijklmn

B ab.?lmn 匹配abcdeflmnghijklmn 中的abcdeflmn

C ab??c abcdefbddef

D .*lmn 匹配abcdeflmnghijklmn 中的abcdeflmn

正確答案:D

答案分析:D 是貪婪匹配,所以應該匹配到的結果是abcdeflmnghijklmn

#13、函數中如果使用了try catch finally 語法結構,return 應該寫在哪裡?

A:finally 中

B:try 中

C:catch 中

#D:任意位置

##正確答案:A

答案分析:try 中return 後finally 會繼續執行,如果finally 中也有return,則最終傳回值為finally 中return 的值。

14、以下關於NOSQL 的說法,不對的是:

A: Redis 支援字串、雜湊、列表、集合、有序集合等資料結構,目前Redis 不支援事務。

B: MongoDB 支援 CAP 定理中的 AP,MySQL 支援 CAP 中的 CA,全部都支援不可能存在。

C: MongoDB 不用先建立 Collection 的結構就可以直接插入數據,目前 MongoDB 不支援事務。

D: Memcache 既支援 TCP 協議,也支援 UDP 協議,我們可以把 PHP 的 Session 存放到 Memcache 中。

正確答案:A

答案分析:Redis 支援交易。

15、Innodb 鎖定機制說法錯誤的是?

A:Innodb 提供了表鎖定與行鎖兩種鎖定機制

B:Innodb 的表鎖定所會在表鎖定的時候觸發

##C:Innodb 下update 時會自動為涉及的行加上排他鎖,並建立出鏡像副本, 此時進行select 時查詢的是鏡像副本的資料

D:Innodb 行鎖狀態下讀取不受影響,寫會受影響(涉及到的數據)

正確答案:A

16、下列哪一個是創建一個每週三01:00~04:00 每3分鐘執行執行一次的crontab 指令?

A: 1,4 3 /bin/bash /home/sijiaomao/ok.sh

B:/3 1,4 3 /bin/bash /home/sijiaomao/ok.sh

C:/3 1-4 3 /bin/bash /home/sijiaomao/ok.sh

D:/3 1-4 * /bin/bash /home/sijiaomao/ok .sh

正確答案:C

答案分析:A:每週三的1 時4 時每分鐘執行一次B:每週三的1 時4 時每3分鐘執行一次C:滿足要求D:每天的1 時4 時每3 分鐘執行一次

17、在拆分之前,系統中很多列表和詳情頁所需的數據是可以透過sql join 來完成的。而拆分後,資料庫可能是分散式在不同實例和不同的主機上,join 將變得非常麻煩。下面哪一種方法不能有效解決這個問題?

A 全域表,系統中所有模組都可能會依賴到的一些表在各個庫中都保存。

B 欄位冗餘,「訂單表」 中儲存「賣家Id」 的同時,將賣家的「Name」 欄位也冗餘,這樣查詢訂單詳情的時候就不需要再去查詢「賣家用戶表」。

C 主從複製,將資料庫的讀寫分開。

D 資料同步,定時 A 庫中的 tbl_a 表和 B 庫中 tbl_b 關聯,可以定時將指定的表做主從同步。

正確答案:C

答案分析:主從複製,將資料庫的讀寫分開。只能擴容讀並發,並不能緩解跨庫 join 的問題。

18、關於網路 IO 模型,下列哪一項是正確的?

A.Select 比Epoll 更快

B.nginx 使用的是select 模型

C.apache 支援select 和epoll 兩種方式的切換

D.epoll 能支援更大的同時

正確答案:D

答案分析:A epoll 更快一些。 B nginx 使用 epoll 模型。 C apache 只支援select

19、PHP 執行的時候有以下執行過程:Scanning (Lexing) - Compilation - Execution - Parsing,其意義分別為:

#A:將PHP 程式碼轉換為語言片段(Tokens)、將Tokens 轉換成簡單而有意義的表達式、將表達式編譯成Opocdes、順次執行Opcodes

B:將PHP 程式碼轉換為語言片段(Tokens)、將Tokens 轉換成簡單而有意義的表達式、順次執行Opcodes、將表達式編譯成Opocdes

C:將PHP 程式碼轉換為語言片段(Tokens)、將表達式編譯成Opocdes、順次執行Opcodes、將Tokens 轉換成簡單而有意義的表達式

#D:將PHP 程式碼轉換為語言片段(Tokens)、將表達式編譯成Opocdes、將Tokens 轉換成簡單而有意義的表達式、順次執行Opcodes

正確答案:C

答案分析:正確答案為C,正確的順序為:Scanning (Lexing)、Parsing、Compilation、Execution

以上是來會會有點水平的PHP基礎面試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除