這篇文章向大家彙整有點程度的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:單利模式一般要講建構函式設定為privateC:只需要將建構函式設為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. 123B. **1234C. 1234D.123正確答案:B
答案分析:本題的重點是理解這個正規表示式的意思- 從左到右,首先是零個或多個任意字元( .),跟著是一個星號(),然後是123,最後是一個數字。因此答案是 B。 7、如下關於資料庫的說法,哪個是錯的? A:為了效率資料庫可以有多個讀庫B:資料庫可以用主從做熱備C:資料庫不能提供多主多從架構D: 資料庫主從是透過日誌同步的正確答案:C
答案分析:資料庫可以提供多主多從架構。 8、下列哪一個不是 XSS 漏洞的修復方式? A: 對參數進行htmlspecialchas 過濾B: 對參數使用白名單過濾C: 不允許輸入的內容顯示到瀏覽器# D: 禁止在js 標籤內輸出使用者輸入的內容正確答案:*A *
答案分析:這類過濾可以解決尖括號類型的xss,無法解決js 標籤內的xss9、下列哪一項不是PHP SAPI 模式? A.ISAPIB.CGIC.FastCGID.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.shB:/3 1,4 3 /bin/bash /home/sijiaomao/ok.sh C:/3 1-4 3 /bin/bash /home/sijiaomao/ok.shD:/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、順次執行OpcodesB:將PHP 程式碼轉換為語言片段(Tokens)、將Tokens 轉換成簡單而有意義的表達式、順次執行Opcodes、將表達式編譯成OpocdesC:將PHP 程式碼轉換為語言片段(Tokens)、將表達式編譯成Opocdes、順次執行Opcodes、將Tokens 轉換成簡單而有意義的表達式
#D:將PHP 程式碼轉換為語言片段(Tokens)、將表達式編譯成Opocdes、將Tokens 轉換成簡單而有意義的表達式、順次執行Opcodes
正確答案:C
答案分析:正確答案為C,正確的順序為:Scanning (Lexing)、Parsing、Compilation、Execution
以上是來會會有點水平的PHP基礎面試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!