2018年小米高級 PHP 工程師面試題(模擬考試卷)

一、經過哪個函數,能夠把錯誤轉換爲異常處理?html

A:set_error_handler
B:error_reporting
C:error2exception
D:catchnginx

正確答案:A 程序員

答案分析:set_error_handler() 可指定一個回調函數,錯誤發生時,會自動經過指定的回調函數處理。在回調函數中拋出新的異常便可。正則表達式

 

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

A:shell函數能夠先調用後定義
B:shell函數需使用關鍵字function定義
C:shell函數內的變量能夠聲明爲局部變量
D:shell函數只能經過return返回值,1是成功,0是失敗shell

正確答案:C 數據庫

答案分析:shell函數必須先定義在調用;聲明時,無需使用關鍵字;經過local能夠定義函數內的局部變量;shell函數返回值,0是成功,非0是錯誤,其餘選項正確apache

 

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

A: Solr是新一代的全文檢索組件,它比Lucene的搜索效率高不少,還能支持HTTP的訪問方式,PHP調用Solr也很方便。
B: MySQL中把一個字段創建FULLTEXT索引,就能夠實現全文檢索,目前MyISAM和InnoDB的table都支持FULLTEXT索引。
C: Sphinx是一個基於SQL的全文檢索引擎,能夠結合MySQL作全文搜索,它能夠提供比數據庫自己更專業的搜索功能。
D: Lucene附帶的二元分詞分析器CJKAnalyzer切詞速度很快,能知足通常的全文檢索須要。設計模式

正確答案:A 

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

 

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

A:單例模式的目的是確保在全局環境中,一個類只能有一個實例存在
B:單利模式通常要講構造函數設置爲 private
C:只須要將構造函數設置爲private 便可確保全局中只有一個實例
D:鏈接數據庫的功能一般用單例模式實現

正確答案:C 

答案分析:構造函數設置爲private,僅能確保沒法經過 new 建立新實例,但仍能夠經過 clone、反序列化等方式建立多個實例。

 

五、正則的引擎表述錯誤的是?

A 正則引擎主要能夠分爲兩大類:一種是DFA,一種是NFA。
B 通常而論,NFA引擎則搜索更快一些。可是DFA以表達式爲主導,更容易操縱,所以通常程序員更偏心DFA引擎!
C NFA表達式主導,DFA文本主導.
D 可使用是否支持忽略優先量詞和分組捕獲來判斷引擎類型:支持 NFA,不支持 DFA

正確答案:B

答案分析:正確的說法應該是:通常而論,DFA引擎則搜索更快一些。可是NFA以表達式爲主導,更容易操縱,所以通常程序員更偏心NFA引擎!

 

六、方框中的正則表達式能與如下哪些選項匹配?

/.\123\d/

A. **123

B. ****1234
C. 1234
D.123

正確答案:B

答案分析:本題的要點是理解這個正則表達式的含義——從左往右,首先是零個或多個任意字符(.),跟着是一個星號(),而後是 123,最後是一個數字。所以答案是B。

 

七、以下關於數據庫的說法,哪一個是錯誤的?

A:爲了效率數據庫能夠有多個讀庫
B:數據庫能夠用主從作熱備
C:數據庫不能提供多主多從架構
D: 數據庫主從是經過日誌同步的

正確答案:C

答案分析: 數據庫能夠提供多主多從架構。

 

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

A:對參數進行htmlspecialchas過濾
B:對參數使用白名單過濾
C:不容許輸入的內容顯示到瀏覽器
D:禁止在js標籤內輸出用戶輸入的內容

正確答案:A 

這類過濾能夠解決尖括號類型的xss,沒法解決js標籤內的xss

 

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

A.ISAPI
B.CGI
C.FastCGI
D.RESTFUL APi

正確答案:D

答案分析:A~C是最經常使用的模式,D是一種接口的組織方式。

 

十、對一個大文件進行逐行遍歷,以下方法性能較高的是?

A:寫一個實現了IteratorAggregate 接口的類,經過該類使用foreach遍歷。
B:使用file_get_contents 將文件內容一次性載入內存,而後逐行遍歷。
C:經過exec函數,調用shell 工具遍歷
D:使用別人寫的類庫

正確答案:A

答案分析:使用 IteratorAggregate 可將文件打開後經過移動指針的方式逐行遍歷,不受文件大小影響。使用 file_get_contents 處理大文件很容易致使PHP內存溢出;調用exec 會產生額外的進程,影響性能;其餘人寫的類庫質量不必定高。

 

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

A:組合優於繼承
B:針對接口編程
C:儘量下降耦合
D:儘可能使用高性能的語法

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

 

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

A ab.lmn 匹配 abcdeflmnghijklmn 中的 abcdeflmnghijklmn
B ab.?lmn 匹配 abcdeflmnghijklmn 中的 abcdeflmn
C ab??c 匹配 abcdeflmnghijklmn 中的 abc
D .*lmn 匹配 abcdeflmnghijklmn 中的 abcdeflmn

正確答案:D

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

 

1三、函數中若是使用了try catch finally 語法結構,return 應該寫在哪兒?

A:finally 中
B:try 中
C:catch 中
D:任意位置

正確答案:A

答案分析:try 中 return 後 finally 會繼續執行,若是 finally 中也有return,則最終返回值爲 finally 中 return 的值。

 

1四、如下關於NOSQL的說法,不對的是:

A: Redis支持字符串、哈希、列表、集合、有序集合等數據結構,目前Redis不支持事務。
B: MongoDB支持CAP定理中的AP,MySQL支持CAP中的CA,所有都支持不可能存在。
C: MongoDB不用先建立Collection的結構就能夠直接插入數據,目前MongoDB不支持事務。
D: Memcache既支持TCP協議,也支持UDP協議,咱們能夠把PHP的Session存放到Memcache中。

正確答案:A

答案分析:Redis支持事務。

 

1五、Innodb 鎖機制說法錯誤的是?

A:Innodb提供了表鎖與行鎖兩種鎖機制
B:Innodb的表鎖所會在表變動的時候觸發
C:Innodb下update時會自動給涉及到的行加上排他鎖,並建立出一個鏡像副本, 此時進行select 時查詢的是鏡像副本的數據
D:Innodb行鎖狀態下讀不受影響,寫會受影響(涉及到的數據)

正確答案:A

 

1六、下列哪一個是建立一個每週三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分鐘執行一次

 

1七、在拆分以前,系統中不少列表和詳情頁所需的數據是能夠經過sql join來完成的。而拆分後,數據庫多是分佈式在不一樣實例和不一樣的主機上,join將變得很是麻煩。下面哪一種方法不能有效解決這個問題?

A 全局表,系統中全部模塊均可能會依賴到的一些表在各個庫中都保存。
B 字段冗餘,「訂單表」中保存「賣家Id」的同時,將賣家的「Name」字段也冗餘,這樣查詢訂單詳情的時候就不須要再去查詢「賣家用戶表」。
C 主從複製,將數據庫的讀寫分離。
D 數據同步,定時A庫中的tbl_a表和B庫中tbl_b關聯,能夠定時將指定的表作主從同步。
正確答案:C

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

 

1八、關於網絡IO模型,下列哪一項是正確的?

A.Select比Epoll更快
B.nginx使用的是select模型
C.apache支持select和epoll兩種方式的切換
D.epoll能支持更大的併發

正確答案:D

答案分析:A epoll更快一些。B nginx使用epoll模型。

C apache只支持select

 

1九、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

相關文章
相關標籤/搜索