史上最難PHP筆試題答案

一、有關PHP字符串的說法,不對的是: C
A、若是一個腳本的編碼是ISO-8859-1,則其中的字符串也會被編碼爲 ISO-8859-1。
B、PHP的字符串在內部是字節組成的數組,用花括號訪問或修改字符串對多字節字符集很不安全。
C、substr()、strpos()、strlen()、htmlentities()處理字符串時依據的編碼方式是相同的。
D、一個布爾值 Boolean 的 true 被轉換成 string 的 「 1」,false 被轉換成空字符串。
//substr多字節字符會亂碼php


二、下列Linux下Shell命令的說法,不正確的是:D
A、crontab做業:「 0 5,6,7 /home/www/test.sh」意思是天天的第5,6,7小時執行腳本。
B、「 find ./ -type f -name ".php" -print0 | xargs -0 wc -l 」 能統計當前目錄下PHP代碼的總行數。
C、Shell下執行命令「 :(){:|:& };: 」,系統會沒有響應,只能重啓了。
D、「 $@ 」將函數中全部參數當成單個字符串,「 $*」把函數的全部參數當一個數組。
//都是取全部參數,前者是存到列表,後者做爲一個字符串html


三、如下正則表達式的說法,錯誤的是:C
A、POSIX兼容正則沒有修正符,PERL兼容正則中可能用到修正符。
B、{n,},n是一個非負整數,意思是至少匹配n次;?等價於匹配長度{0,1} 。
C、PERL風格正則默認的非貪婪模式儘量少的匹配所搜索的字符串。
D、在執行效率上 preg_match 比ereg的速度要略快一些。
//反了程序員


四、關於PHP數組的說法,不對的是:B
A、處理PHP數組,foreach的效率要比for高不少,是由於foreach走的是鏈表的遍歷。
B、PHP數組底層採用的是循環鏈表,正向、反向遍歷數組都很方便。
C、不管是 array(1, 2, 3) 仍是array(1 => 2, 2=>4)等,本質上都是hash_table。
D、PHP數組插入和刪除操做的時間複雜度都是O(1)。
//雙向鏈表正則表達式


五、有關PHP引用的說法,錯誤的是: B
A、unset一個引用,只是斷開了變量名和變量內容之間的綁定,這並不意味着變量內容被銷燬了。
B、PHP引用本質就是指針,在函數調用範圍內能夠綁定到別的變量上面。
C、在一個對象的方法中,$this永遠是調用它的對象的引用。
D、能夠將一個變量經過引用傳遞給函數,這樣該函數就能夠修改其參數的值。
//引用只是值內存塊的別名,而指針是一個實體,存放的值內存地址,須要額外分配內存空間。算法


六、如下對PHP命名空間的說法,不對的是:B
A、訪問任意全局類、函數或常量,均可以使用徹底限定名稱,例如 strlen() 或 Exception 或 INI_ALL。
B、關鍵字 namespace可用來顯式訪問當前命名空間或子命名空間中的元素,它等價於類中的 this 操做符。
C、任意合法的PHP代碼均可以包含在命名空間中,但只有三種類型的代碼受命名空間的影響,它們是:類,函數和常量。
D、常量NAMESPACE的值是當前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它就是一個空字符串。
//namespace 是聲明命名空間的sql


七、下列PHP相關的說法,錯誤的是:D
A、PHP官方推薦使用Apache的prefork模式,此模式下建議選用Non Thread Safe版本。
B、FastCGI下選擇Non Thread Safe版本;ISAPI下選擇Thread Safe版本。
C、用PHP彩蛋能大體獲取PHP的版本, PHP中一共隱藏了4個彩蛋。
D、官方不建議將Non ThreadSafe用於生產環境,因此咱們選擇Thread Safe版本的PHP來使用。
//fastcgi就須要nts版本數據庫


八、關於JavaScript的說法,不正確的是:A
A、語句「 alert(1==true); 」 和語句 「 alert(2==true); 」 的結果都是true。
B、JS的數組其實就是對象,用for...in語句能夠遍歷數組的全部屬性。
C、JS中的對象經過引用來傳遞,它們永遠不會被複制。
D、JS中的函數就是對象,因此它們能夠像任何其餘的值同樣被使用。
//alert(2==true) 是 false編程


九、有關PHP面向對象的說法,不對的是: C
A、要實現一個接口,使用 implements操做符,類中必須實現接口中定義的全部方法,不然會報一個致命錯誤。
B、類名能夠是任何非 PHP保留字的合法標籤,漢字也能夠做爲PHP的類名。
C、若是PHP的子類中定義了構造函數,則建立子類的對象時,會隱式的調用其父類的構造函數。
D、序列化一個對象將會保存對象的全部變量,可是不會保存對象的方法,只會保存類的名字。
//必須顯式調用 parent::__construct();vim


十、如下PHP高級特性的說法,正確的是:B 設計模式

A、咱們能夠定義一個類去實現預約義接口Iterator,而後就能像訪問數組同樣訪問這個類建立的對象。
B、splautoloadregister()提供了一種更加靈活的方式來實現類的自動加載,再也不建議使用 autoload() 函數。
C、PHP在對象中調用一個不可訪問方法時,invoke()方法會被自動調用。
D、匿名函數也叫閉包函數,經常使用做回調函數參數的值,可是不能做爲變量的值來使用。
//A:應該是ArrayAccess C:__call D:匿名函數能夠賦值給變量


十一、下列關於HTTP協議的說法,錯誤的是:B
A、若是本地開啓了Cookie,那麼每打開一個網址,HTTP請求就會把相應的Cookie傳給Web服務器。
B、HTTP響應的狀態碼爲301意思是暫時地把內容轉移到一個新的URL,可是老的URL尚未廢除。
C、HTTP是一個基於請求與響應模式的、無狀態的、應用層的協議,絕大多數的Web開發都是基於HTTP協議。
D、絕大多數的Web開發離不開Cookie,若是禁用Cookie致使Session失效,能夠經過URL來傳遞sessionID。
//301表示永久重定向


十二、如下對PHP文件處理的說法,正確的是:C A、filegetcontents()函數能用來抓取網頁數據,可是沒辦法設置超時時間 。
B、file() 函數既能讀取文本文件也能讀取二進制文件,可是讀取二進制文件有可能出現安全問題。
C、若是表單中沒有選擇上傳的文件,則 PHP 變量 的值將爲NULL 。
D、fsockopen()和fputs()結合起來能夠發送郵件,也能夠用來抓取網頁內容,下載ftp文件等。
//A:能夠經過context參數設置 B:fputs是寫入,只能用於上傳


1三、關於Mysql索引的說法,不對的是:C
A、500萬數據的用戶表user在性別字段sex上創建了索引,語句 「select * from user where sex=1 」 並不會提速多少。
B、通常狀況下不鼓勵使用like操做,相似的「 like "abc%" 」 可使用到索引。
C、惟一索引容許空值,而主鍵索引不容許爲空值,除此以外它們是相同的。
D、對於須要寫入數據的操做,好比DELETE、UPDATE以及INSERT操做,索引會下降它們的速度。
//primary 不容許空值,unique容許


1四、下列有關數據結構的說法,不正確的是:A
A、直接選擇、二分法、冒泡、基數等排序方法都是穩定的排序方法。
B、5000個無序的元素,但願用最快的速度挑選出其中前50個最大的元素,最好選用堆排序。
C、棧和隊列都只容許在端點處插入和刪除元素。
D、深度優先遍歷是一個遞歸算法,在遍歷的過程當中,先訪問的點被壓入棧底。
//不穩定:簡單選擇排序,希爾排序,快速排序,堆排序,冒泡
//穩定:直接插入排序,歸併排序,基數排序


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


1六、關於設計模式的說法,錯誤的是:A
A、觀察者模式中,觀察者能夠改變被觀察者的狀態,再由被觀察者通知全部觀察者依據被觀察者的狀態進行。
B、MVC模型的基本工做原理是基於觀察者模式,實現是基於命令模式。
C、設計模式的核心原則是:"開-閉"原則:對擴展開放,對修改關閉。
D、創立型模式的根本意圖是要把對象的建立和使用分離的責任進行分離,從而下降系統的耦合度。
//不能改變


1七、下列關於常見開源PHP系統的說法,不對的是:B
A、Laravel要求PHP版本>=5.3,它擁有更富有表現力的語法、高質量的文檔、豐富的擴展包,被稱爲「巨匠級PHP開發框架」。
B、Discuz採用單一入口的設計模式,這樣的模式在權限控制,URL重寫等方面都頗有優點。
C、HDWiki的插件共有三種類型,鉤子類型、前臺應用和後臺應用類型,在後臺能夠在線安裝HDWiki插件。
D、WordPress的博客程序定位,簡單的數據庫層等都註定了他不能適應大數據。
//discuz是多入口


1八、如下關於「表驅動法」的描述,錯誤的是:B
A、表驅動法能夠做爲複雜繼承結構的替代方案,難點在於一個通過深思熟慮的查詢表。
B、表驅動法是一種編程模式——從數據庫表裏面查找信息而不使用邏輯語句。
C、凡是能經過邏輯來選擇的事物,均可以經過查表來選擇。
D、表驅動法查找無規則分佈的數據採用階梯訪問的方法最佳。


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


20、如下關於大型網站的說法,正確的是:BA、大型網站程序異常後,程序員能夠依據服務器日誌信息定位錯誤,而後在服務器上用vim修正錯誤便可。B、大型網站開發不少細節和小網站有巨大差別,如「瀏覽次數」,小網站用數據庫記錄,大型網站常採用NoSQL來存儲。C、大型網站選擇開發語言很重要,PHP只適合開發中小型網站,並不適合開發大型網站。D、虛擬機技術不能用在大型網站上,是由於虛擬機性能較差,而大型網站的訪問壓力太大,採用後服務器可能會宕機。

相關文章
相關標籤/搜索