php面試題

1、有關PHP字符串的說法,不對的是:C
(編碼方式不同,substr()操作中文的時候會亂碼)
A、如果一個腳本的編碼是 ISO-8859-1,則其中的字符串也會被編碼爲 ISO-8859-1。
B、PHP的字符串在內部是字節組成的數組,用花括號訪問或修改字符串對多字節字符集很不安全。
C、substr()、strpos()、strlen()、htmlentities() 處理字符串時依據的編碼方式是相同的。
D、一個布爾值 Boolean 的 true 被轉換成 string 的 “ 1 ”,false 被轉換成空字符串。
 
2、下列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、“ $@ ”將函數中所有參數當成單個字符串,“ $* ”把函數的所有參數當一個數組。
 
3、以下正則表達式的說法,錯誤的是:C
(默認的是貪婪模式)
A、POSIX兼容正則沒有修正符,PERL兼容正則中可能用到修正符。
B、{n,},n是一個非負整數,意思是至少匹配n次; ?等價於匹配長度{0,1} 。
C、PERL風格正則默認的非貪婪模式儘可能少的匹配所搜索的字符串。
D、在執行效率上 preg_match 比ereg的速度要略快一些。
 
4、關於PHP數組的說法,不對的是:B
(PHP數組使用的是雙向鏈表,不是循環鏈表)
A、處理PHP數組,foreach的效率要比for高很多,是因爲foreach走的是鏈表的遍歷。
B、PHP數組底層採用的是循環鏈表,正向、反向遍歷數組都很方便。
C、無論是 array(1, 2, 3) 還是array(1 => 2, 2=> 4)等,本質上都是hash_table。
D、PHP數組插入和刪除操作的時間複雜度都是O(1)。
 
5、有關PHP引用的說法,錯誤的是:B
(PHP引用不是指針,是給一個變量起個別名,傳遞的不是空間地址)
A、unset一個引用,只是斷開了變量名和變量內容之間的綁定,這並不意味着變量內容被銷燬了。
B、PHP引用本質就是指針,在函數調用範圍內可以綁定到別的變量上面。
C、在一個對象的方法中,$this永遠是調用它的對象的引用。
D、可以將一個變量通過引用傳遞給函數,這樣該函數就可以修改其參數的值。
 
6、以下對PHP命名空間的說法,不對的是:B
(應該是等價於self)
A、訪問任意全局類、函數或常量,都可以使用完全限定名稱,例如 /strlen() 或 /Exception 或 /INI_ALL。
B、關鍵字 namespace 可用來顯式訪問當前命名空間或子命名空間中的元素,它等價於類中的 this 操作符。
C、任意合法的PHP代碼都可以包含在命名空間中,但只有三種類型的代碼受命名空間的影響,它們是:類,函數和常量。
D、常量__NAMESPACE__的值是當前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它就是一個空字符串。
 
7、下列PHP相關的說法,錯誤的是:C
(沒人知道一共有多少個彩蛋,不然就不叫彩蛋了)
A、PHP官方推薦使用Apache的prefork模式,此模式下建議選用Non Thread Safe版本。
B、FastCGI下選擇Non Thread Safe版本;ISAPI下選擇Thread Safe版本。
C、用PHP彩蛋能大致獲取PHP的版本,PHP中一共隱藏了4個彩蛋。
D、官方不建議將Non Thread Safe用於生產環境,所以我們選擇Thread Safe 版本的PHP來使用。
 
8、關於JavaScript的說法,不正確的是:D
(JS的函數不是對象)
A、語句“ alert(1==true); ” 和語句 “ alert(2==true); ” 的結果都是true。
B、JS的數組其實就是對象,用for in語句可以遍歷數組的所有屬性。
C、JS中的對象通過引用來傳遞,它們永遠不會被複制。
D、JS中的函數就是對象,所以它們可以像任何其他的值一樣被使用。
 
9、有關PHP面向對象的說法,不對的是:B
(漢字不能作爲類名,參考PHP命名規範)
A、要實現一個接口,使用 implements 操作符,類中必須實現接口中定義的所有方法,否則會報一個致命錯誤。
B、類名可以是任何非 PHP 保留字的合法標籤,漢字也可以作爲PHP的類名。
C、如果PHP的子類中定義了構造函數,則創建子類的對象時,會隱式的調用其父類的構造函數。
D、序列化一個對象將會保存對象的所有變量,但是不會保存對象的方法,只會保存類的名字。
 
10、以下PHP高級特性的說法,正確的是:D
 
A、我們可以定義一個類去實現預定義接口Iterator,然後就能像訪問數組一樣訪問這個類創建的對象。
B、spl_autoload_register() 提供了一種更加靈活的方式來實現類的自動加載,不再建議使用 __autoload() 函數。
C、PHP在對象中調用一個不可訪問方法時,__invoke() 方法會被自動調用。
D、匿名函數也叫閉包函數,常用作回調函數參數的值,但是不能作爲變量的值來使用。
 
11、下列關於HTTP協議的說法,錯誤的是:B
(301是永久轉向)
A、如果本地開啓了Cookie,那麼每打開一個網址,HTTP請求就會把相應的Cookie傳給Web服務器。
B、HTTP響應的狀態碼爲301意思是暫時地把內容轉移到一個新的URL,但是老的URL還沒有廢除。
C、HTTP是一個基於請求與響應模式的、無狀態的、應用層的協議,絕大多數的Web開發都是基於HTTP協議。
D、絕大多數的Web開發離不開Cookie,如果禁用Cookie導致Session失效,可以通過URL來傳遞sessionID。
 
12、以下對PHP文件處理的說法,正確的是:C
(如果表單中沒有選擇上傳的文件,則 PHP 變量 $_FILES['userfile']['size'] 的值將爲 0,$_FILES['userfile']['tmp_name'] 將爲 none)
A、file_get_contents() 函數能用來抓取網頁數據,但是沒辦法設置超時時間 。(雖然不能直接設置超時時間,但可以通過其他方法設置超時)
B、file() 函數既能讀取文本文件也能讀取二進制文件,但是讀取二進制文件有可能出現安全問題。(從PHP 4.3 開始本函數可以安全用於二進制文件。早期的版本則不行)
C、如果表單中沒有選擇上傳的文件,則 PHP 變量 的值將爲NULL 。
D、fsockopen()和fputs() 結合起來可以發送郵件,也可以用來抓取網頁內容,下載ftp文件等。(上傳ftp文件)
 
13、關於Mysql索引的說法,不對的是:C
(唯一索引當然不允許空值,不然就不叫唯一了)
A、500萬數據的用戶表user在性別字段sex上建立了索引,語句 “select * from user where sex=1 ” 並不會提速多少。
B、一般情況下不鼓勵使用like操作,類似的“ like "abc%" ” 可以使用到索引。
C、唯一索引允許空值,而主鍵索引不允許爲空值,除此之外它們是相同的。
D、對於需要寫入數據的操作,比如DELETE、UPDATE以及INSERT操作,索引會降低它們的速度。
 
14、下列有關數據結構的說法,不正確的是:A
(不穩定:簡單選擇排序,希爾排序,快速排序,堆排序,冒泡
穩定:直接插入排序,歸併排序,基數排序)
A、直接選擇、二分法、冒泡、基數等排序方法都是穩定的排序方法。
B、5000個無序的元素,希望用最快的速度挑選出其中前50個最大的元素,最好選用堆排序。
C、棧和隊列都只允許在端點處插入和刪除元素。
D、深度優先遍歷是一個遞歸算法,在遍歷的過程中,先訪問的點被壓入棧底。
 
15、以下關於NOSQL的說法,不對的是:B
(Redis支持事務,MongoDB不支持事務)
A、MongoDB支持CAP定理中的AP,MySQL支持CAP中的CA,全部都支持不可能存在。
B、Redis支持字符串、哈希、列表、集合、有序集合等數據結構,目前Redis不支持事務。
C、Memcache既支持TCP協議,也支持UDP協議,我們可以把PHP的Session存放到Memcache中。
D、MongoDB不用先創建Collection的結構就可以直接插入數據,目前MongoDB不支持事務。
 
16、關於設計模式的說法,錯誤的是:A
(觀察者不能改變被觀察者的狀態)
A、觀察者模式中,觀察者可以改變被觀察者的狀態,再由被觀察者通知所有觀察者依據被觀察者的狀態進行。
B、MVC模型的基本工作原理是基於觀察者模式,實現是基於命令模式。
C、設計模式的核心原則是:"開-閉"原則:對擴展開放,對修改關閉。
D、創立型模式的根本意圖是要把對象的創建和使用分離的責任進行分離,從而降低系統的耦合度。
 
17、下列關於常見開源PHP系統的說法,不對的是:C
(插件按照是否需要在前臺顯示,可以分爲兩類:前臺展示類插件和非前臺展示類插件)
A、Laravel要求PHP版本>= 5.3 ,它擁有更富有表現力的語法、高質量的文檔、豐富的擴展包,被稱爲“巨匠級PHP開發框架”。
B、Discuz採用單一入口的設計模式,這樣的模式在權限控制,URL重寫等方面都很有優勢。
C、HDWiki的插件共有三種類型,鉤子類型、前臺應用和後臺應用類型,在後臺可以在線安裝HDWiki插件。
D、WordPress的博客程序定位,簡單的數據庫層等都註定了他不能適應大數據。
 
18、以下關於“表驅動法”的描述,錯誤的是:D
(階梯結構的基本想法是,表中的記錄對於不同的數據範圍(連續點)有效,而不是對不同的數據點(離散點)有效)
A、表驅動法可以作爲複雜繼承結構的替代方案,難點在於一個經過深思熟慮的查詢表。
B、表驅動法是一種編程模式——從數據庫表裏面查找信息而不使用邏輯語句。
C、凡是能通過邏輯來選擇的事物,都可以通過查表來選擇。
D、表驅動法查找無規則分佈的數據採用階梯訪問的方法最佳。
 
19、下列關於全文檢索技術的說法,不對的是:C
(InnoDB不支持FULLTEXT索引)
A、Sphinx是一個基於SQL的全文檢索引擎,可以結合MySQL做全文搜索,它可以提供比數據庫本身更專業的搜索功能。
B、Solr是新一代的全文檢索組件,它比Lucene的搜索效率高很多,還能支持HTTP的訪問方式,PHP調用Solr也很方便。
C、MySQL中把一個字段建立FULLTEXT索引,就可以實現全文檢索,目前MyISAM和InnoDB的table都支持FULLTEXT索引。
D、Lucene附帶的二元分詞分析器CJKAnalyzer切詞速度很快,能滿足一般的全文檢索需要。
 
20、以下關於大型網站的說法,正確的是:D
 
A、大型網站程序異常後,程序員可以依據服務器日誌信息定位錯誤,然後在服務器上用vim修正錯誤即可。
B、大型網站開發很多細節和小網站有巨大差異,如“瀏覽次數”,小網站用數據庫記錄,大型網站常採用NoSQL來存儲。
C、大型網站選擇開發語言很重要,PHP只適合開發中小型網站,並不適合開發大型網站。
D、虛擬機技術不能用在大型網站上,是因爲虛擬機性能較差,而大型網站的訪問壓力太大,採用後服務器可能會宕機。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章