PHP程序員搜狐2019年面試題和答案解析

一、單選題(共27題,每題5分)
1.閱讀下面PHP代碼,并選擇輸出結(jié)果( )
A、0
B、1
C、2
D、3
參考答案:D
答案解析:static屬性常駐內(nèi)存
2.PHP單例模式操作描述錯(cuò)誤的是?
A、單例模式第一次實(shí)例會(huì)被建立以后執(zhí)行可以直接使用
B、需要一個(gè)保存類的唯一實(shí)例的靜態(tài)成員變量
C、構(gòu)造函數(shù)和克隆函數(shù)必須聲明為私有的
D、必須提供一個(gè)訪問這個(gè)實(shí)例的公共的靜態(tài)方法
參考答案:A
答案解析:PHP中,所有的變量無(wú)論是全局變量還是類的靜態(tài)成員,都是頁(yè)面級(jí)的,每次頁(yè)面被執(zhí)行時(shí), 都會(huì)重新建立新的對(duì)象,都會(huì)在頁(yè)面執(zhí)行完畢后被清空,這樣似乎PHP單例模式就沒有什么意義了, 所以PHP單例模式只是針對(duì)單次頁(yè)面級(jí)請(qǐng)求時(shí)出現(xiàn)多個(gè)應(yīng)用場(chǎng)景并需要共享同一對(duì)象資源時(shí)有意義
3.下面那個(gè)不是mysql存儲(chǔ)引擎的鎖類型?
A、表鎖
B、頁(yè)鎖
C、行鎖
D、無(wú)
參考答案:B
答案解析:mysql中myisam是有表鎖,innodb是行鎖,基于索引加鎖,如果where條件沒有索引,是所有行加鎖;sql server才有頁(yè)鎖
(加入群677079770獲取更多面試題答案。)
4.以下哪條不是PHP語(yǔ)言的特性?
A、開源
B、免費(fèi)
C、基于客戶端
D、便捷高效
參考答案:C
答案解析:PHP語(yǔ)言的特性為:開源、免費(fèi)和便捷高效。
5.關(guān)于PHP模式修飾符說(shuō)法錯(cuò)誤的是?
A、i 大小寫不敏感匹配
B、m ^將只匹配字符串的開頭
C、x 空白和#注釋將被忽略
D、將替換后的字符串作為php代碼評(píng)估執(zhí)行
參考答案:B
答案解析:m為增強(qiáng)的行錨點(diǎn)模式,\\n的前后也會(huì)被認(rèn)為結(jié)束和開始
(加入群677079770獲取更多面試題答案。)
6.關(guān)于Laravel中間件錯(cuò)誤的是?
A、運(yùn)行Artisan 命令 make:middleware 創(chuàng)建新的中間件
B、可定義前置 & 后置中間件
C、中間件是代理模式
D、中間件是中介模式
參考答案:C
答案解析:運(yùn)行Artisan 命令 make:middleware 創(chuàng)建新的中間件 可定義前置 & 后置中間件
(加入群677079770獲取更多面試題答案。)
7.要激活GD庫(kù),必須啟用配置文件中的( )命令
A、php_gd2.dll
B、PHP.dll
C、PHP.ini
D、php_mbstring.dll
參考答案:A
答案解析:PHP中要想使用GD庫(kù)必須啟用php_gd2.ll動(dòng)態(tài)連接庫(kù)文件
8.關(guān)于在PHP中的socket,說(shuō)法錯(cuò)誤的是
A、可使用fsocketopen函數(shù)建立socket連接
B、工作在第七層,可基于TCP和UDP協(xié)議
C、在PHP中默認(rèn)超時(shí)時(shí)間是30秒
D、工作在第四層,可基于TCP和UDP協(xié)議
參考答案:B
答案解析:工作在第四層,可基于TCP和UDP協(xié)議 在PHP中默認(rèn)超時(shí)時(shí)間是30秒
9.JSON格式數(shù)據(jù),錯(cuò)誤的是?
A、JSON一種輕量級(jí)的數(shù)據(jù)交換格式
B、JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)
C、這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成(網(wǎng)絡(luò)傳輸速率)。
D、值是無(wú)序列表
參考答案:D
答案解析:值是有序列表
10.關(guān)于PHP數(shù)組排序原理,錯(cuò)誤的是?
A、申請(qǐng)n個(gè)額外空間
B、遍歷雙鏈表
C、排序后單鏈表中節(jié)點(diǎn)的位置發(fā)生變化,因而調(diào)整指定指向
D、設(shè)置HashTable的pListTail
參考答案:C
答案解析:1.申請(qǐng)n個(gè)額外空間 2.遍歷雙鏈表 3.調(diào)用排序函數(shù)zend\_qsort(內(nèi)部是快速排序算法)對(duì)數(shù)組排序 4.排序后,雙鏈表中節(jié)點(diǎn)的位置發(fā)生變化,因而調(diào)整指定指向 5.遍歷數(shù)組,分別設(shè)置每一個(gè)節(jié)點(diǎn)的pListLast和pListNext 6.設(shè)置HashTable的pListTail
11.關(guān)于Redis的應(yīng)用場(chǎng)景,以下說(shuō)法不正確的是?
A、交集,并集,差集
B、計(jì)數(shù)器、隊(duì)列
C、排行榜
D、新聞發(fā)布系統(tǒng)
參考答案:D
答案解析:緩存——熱數(shù)據(jù)、計(jì)算器、隊(duì)列、位操作、最新列表、分布式鎖與單線程機(jī)制、交集,并集,差集、排行榜,這些都是典型的 redis處理場(chǎng)景。答案為D
12.關(guān)于漏洞掃描的描述,以下哪項(xiàng)是錯(cuò)誤的?
A、漏洞掃描是一種基于網(wǎng)絡(luò)遠(yuǎn)程檢測(cè)目標(biāo)網(wǎng)絡(luò)或主機(jī)安全性脆弱性的技術(shù),可以被用來(lái)進(jìn)行模擬攻擊實(shí)驗(yàn)和安全審計(jì).
B、漏洞掃描用來(lái)探測(cè)目標(biāo)主機(jī)系統(tǒng)是否存在漏洞,一般是對(duì)目標(biāo)主機(jī)進(jìn)行特定漏洞的掃描.
C、漏洞掃描就是一種被動(dòng)的防范措施,可以有效避免黑客攻擊行為.
D、可以根據(jù)Ping掃描和端口掃描的結(jié)果進(jìn)行漏洞掃描.
參考答案:C
答案解析:漏洞掃描是一種主動(dòng)的防范措施,能有效避免黑客攻擊行為,做到防患于未然安全掃描就是一種主動(dòng)的防范措施
13.PHP程序使用utf-8編碼, 以下程序輸出結(jié)果是什么?
A、9
B、13(gbk)
C、18
D、17(utf8)
參考答案:D
答案解析:strlen() 函數(shù)返回字符串的長(zhǎng)度。utf-8編碼一個(gè)漢字是3個(gè)字符,5個(gè)英文字符+3字符\*4個(gè)中文=17個(gè)字符
14.棧和隊(duì)列具有相同的()
A、抽象數(shù)據(jù)類型
B、邏輯結(jié)構(gòu)
C、存儲(chǔ)結(jié)構(gòu)
D、運(yùn)算
參考答案:B
答案解析:線性表、棧、隊(duì)列的邏輯結(jié)構(gòu)是一樣的,都屬于線性結(jié)構(gòu)。只是他們對(duì)數(shù)據(jù)的運(yùn)算不同,從而表現(xiàn)出不同的特點(diǎn)
15.為什么InnoDB表要建議用自增列做主鍵?
A、使用自增列(INT/BIGINT類型)做主鍵,這時(shí)候?qū)懭腠樞蚴亲栽龅?,和B+數(shù)葉子節(jié)點(diǎn)分裂順序一致
B、無(wú)
C、該表不指定自增列做主鍵,同時(shí)也沒有可以被選為主鍵的唯一索引(上面的條件),這時(shí)候InnoDB會(huì)選擇內(nèi)置的ROWID作為主鍵,寫入順序和ROWID增長(zhǎng)順序一致
D、使用自增列(INT/BIGINT類型)做主鍵,這時(shí)候?qū)懭腠樞蚴亲栽龅?,和B+數(shù)葉子節(jié)點(diǎn)分裂順序一致; 該表不指定自增列做主鍵,同時(shí)也沒有可以被選為主鍵的唯一索引(上面的條件),這時(shí)候InnoDB會(huì)選擇內(nèi)置的ROWID作為主鍵,寫入順序和ROWID增長(zhǎng)順序一致; 除此以外,如果一個(gè)InnoDB表又沒有顯示主鍵,又有可以被選擇為主鍵的唯一索引,但該唯一索引可能不是遞增關(guān)系時(shí)(例如字符串、UUID、多字段聯(lián)合唯一索引的情況),該表的存取效率就會(huì)比較差
參考答案:D
答案解析:1.InnoDB引擎表是基于B+樹的索引組織表(IOT); 2.每個(gè)表都需要有一個(gè)聚集索引(clustered index); 3.所有的行記錄都存儲(chǔ)在B+樹的葉子節(jié)點(diǎn)(leaf pages of the tree); 4.基于聚集索引的增、刪、改、查的效率相對(duì)是最高的; 5.如果我們定義了主鍵(PRIMARY KEY),那么InnoDB會(huì)選擇其作為聚集索引; 6.如果沒有顯式定義主鍵,則InnoDB會(huì)選擇第一個(gè)不包含有NULL值的唯一索引作為主鍵索引; 7.如果也沒有這樣的唯一索引,則InnoDB會(huì)選擇內(nèi)置6字節(jié)長(zhǎng)的ROWID作為隱含的聚集索引(ROWID隨著行記錄的寫入而主鍵遞增,這個(gè)ROWID不像ORACLE的ROWID那樣可引用,是隱含的)。 因此: 1.使用自增列(INT/BIGINT類型)做主鍵,這時(shí)候?qū)懭腠樞蚴亲栽龅?,和B+數(shù)葉子節(jié)點(diǎn)分裂順序一致; 2.該表不指定自增列做主鍵,同時(shí)也沒有可以被選為主鍵的唯一索引(上面的條件),這時(shí)候InnoDB會(huì)選擇內(nèi)置的ROWID作為主鍵,寫入順序和ROWID增長(zhǎng)順序一致; 3.如果一個(gè)InnoDB表又沒有顯示主鍵,又有可以被選擇為主鍵的唯一索引,但該唯一索引可能不是遞增關(guān)系時(shí)(例如字符串、UUID、多字段聯(lián)合唯一索引的情況),該表的存取效率就會(huì)比較差
16.對(duì)以下Javascript代碼說(shuō)法正確的是?
A、值為 0
B、obj2引用了obj1的方法
C、執(zhí)行call時(shí),函數(shù)里的this指向obj1
D、最后obj1的value值為6
參考答案:B
答案解析:調(diào)用了 call ,則obj2 , add的this就指向了 obj2 。就像obj2借用了obj1的方法
17.以下關(guān)于引用說(shuō)法錯(cuò)誤的是?
A、引用不是C的指針
B、引用不允許用兩個(gè)變量來(lái)指向同一個(gè)內(nèi)容
C、用引用可以傳遞變量
D、可以將一個(gè)變量通過引用傳遞給函數(shù),這樣該函數(shù)就可以修改其參數(shù)的值。
參考答案:B
答案解析:引用是允許用兩個(gè)變量來(lái)指向同一個(gè)內(nèi)容的
18.GoAccess雖然很強(qiáng)大但是他不能做以下哪項(xiàng)工作?
A、生成統(tǒng)計(jì)數(shù)據(jù)帶寬統(tǒng)計(jì)
B、可生成HTML報(bào)告
C、可發(fā)送HTTP請(qǐng)求
D、各HTTP狀態(tài)碼統(tǒng)計(jì)
參考答案:C
答案解析:GoAccess:是一款開源、實(shí)時(shí),運(yùn)行在命令行終端下的web日志分析工具。該工具提供快速、 多樣的HTTP狀態(tài)統(tǒng)計(jì),可以令管理員不再糾結(jié)于統(tǒng)計(jì)各類數(shù)據(jù) GoAccess主要以統(tǒng)計(jì)為主
19.關(guān)于線程的,說(shuō)法錯(cuò)誤的是?
A、線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位
B、它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位
C、線程和進(jìn)程一樣擁有系統(tǒng)資源
D、線程自己基本上不擁有系統(tǒng)資源
參考答案:C
答案解析:線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體。線程自己基本上不擁有系統(tǒng)資源
20.關(guān)于php文件指針的說(shuō)法錯(cuò)誤的是?
A、feeek() 移動(dòng)文件指針到指定位置
B、fcreate() 用于創(chuàng)建一個(gè)文件
C、rewind()將文件指針設(shè)為文件流的開頭
D、feof() 測(cè)試文件指針是否到達(dá)文件結(jié)束的位置
參考答案:B
答案解析:php中 打開和創(chuàng)建文件都是fopen()函數(shù),不存在fcreate()函數(shù)
21.下邊是php的函數(shù)而不是語(yǔ)言結(jié)構(gòu)的是?
A、eval()
B、require_once()
C、list()
D、empty()
參考答案:B
答案解析:僅僅是提綱挈領(lǐng)、提醒下大家注意 php的語(yǔ)言結(jié)構(gòu)和函數(shù)這個(gè)點(diǎn)、可能過多的時(shí)候我們認(rèn)為empty、list、isset等這類的是函數(shù)、實(shí)際上不上。 語(yǔ)言結(jié)構(gòu)列表 : echo() print() die() isset() unset() include(),注意,include_once()是函數(shù) require(),注意,require_once()是函數(shù) array() list() empty()
22.該正則可以匹配下列哪個(gè)字符串? /^sjm/
A、absjm
B、phpsjm
C、sjmphp
D、phpsimd
參考答案:C
答案解析:該正則匹配以sjm開頭的字符串
23.下列哪個(gè)選項(xiàng)可以查看php運(yùn)行模式?
A、php -r phpinfo();|find / grep"Server API"
B、php -r "echo php_sapi_name();"
C、phpinfo();
D、以上都是
參考答案:D
答案解析:三個(gè)都可以查看php的運(yùn)行模式
24.以下inode不包含的是?
A、文件的讀寫權(quán)限
B、文件的位置
C、當(dāng)前目錄下的文件數(shù)
D、文件的時(shí)間戳
參考答案:C
答案解析:inode中存的是該文件種的信息,包含文件的字節(jié)數(shù),uid和gid,讀寫執(zhí)行權(quán)限,時(shí)間戳ctime、mtime、atime,鏈接數(shù):有多少個(gè)文件名指向這個(gè)inode,文件數(shù)據(jù)block位置
25.以下代碼輸出的結(jié)果是?
A、1
B、2
C、3
D、4
參考答案:A
答案解析:if($str==0),字符串和數(shù)字比較是否相等, 相當(dāng)于 把$str 字符串隱性轉(zhuǎn)換為數(shù)字,然后再比較,相當(dāng)于 if( intval($str) == 0 ) 。if($str==0) 判斷 和 if( intval($str) == 0 ) 是等價(jià)的,而和 if ($str) 是不一樣的。if ($str) 可以判斷 $str值有沒有被初始化。有沒有付值,只要付值,就返回true。 當(dāng)然你也可以使用 $str="字符串";if($str===0){ echo "返回了true.";} ,就是 判斷 $str的數(shù)據(jù)類型 和值 都和0的值 數(shù)據(jù)類型一樣,才可以返回true
26.把CSS樣式表與HTML網(wǎng)頁(yè)關(guān)聯(lián),不正確的方法是( )。
A、在HTML文檔的<head>標(biāo)簽內(nèi)定義CSS樣式
B、用@import引入樣式表文件
C、在HTML文檔的<!-- -->標(biāo)簽內(nèi)定義CSS樣式
D、用<link>標(biāo)簽鏈接網(wǎng)上可訪問的CSS樣式表文件
參考答案:C
答案解析:是HTML注釋的表示方式,在這里定義CSS樣式無(wú)效。
27.一下哪個(gè)不是PHP的運(yùn)行模式?
A、CGI
B、FastCGI
C、apache2handler
D、apache
參考答案:D
答案解析:前三個(gè)是常用的運(yùn)行模式,apache是web服務(wù)器軟件
二、多選題(共3題,每題5分)
1.分庫(kù)分表之后,id 主鍵如何處理?
A、單庫(kù)生成自增 id
B、設(shè)置數(shù)據(jù)庫(kù) sequence 或者表自增字段步長(zhǎng)
C、UUID
D、snowflake 算法
參考答案:A,B,C,D
答案解析:
snowflake 算法
A、B、C 也是理論可行的,但是都各自有缺點(diǎn),最好用snowflake 算法。
snowflake 算法是 twitter 開源的分布式 id 生成算法,采用 Scala 語(yǔ)言實(shí)現(xiàn),是把一個(gè) 64 位的 long 型的 id,1 個(gè) bit 是不用的,用其中的 41 bit 作為毫秒數(shù),用 10 bit 作為工作機(jī)器 id,12 bit 作為序列號(hào)。
1 bit:不用,為啥呢?因?yàn)槎M(jìn)制里第一個(gè) bit 為如果是 1,那么都是負(fù)數(shù),但是我們生成的 id 都是正數(shù),所以第一個(gè) bit 統(tǒng)一都是 0。 41 bit:表示的是時(shí)間戳,單位是毫秒。41 bit 可以表示的數(shù)字多達(dá) 2^41 - 1,也就是可以標(biāo)識(shí) 2^41 - 1 個(gè)毫秒值,換算成年就是表示69年的時(shí)間。 10 bit:記錄工作機(jī)器 id,代表的是這個(gè)服務(wù)最多可以部署在 2^10臺(tái)機(jī)器上哪,也就是1024臺(tái)機(jī)器。但是 10 bit 里 5 個(gè) bit 代表機(jī)房 id,5 個(gè) bit 代表機(jī)器 id。意思就是最多代表 2^5個(gè)機(jī)房(32個(gè)機(jī)房),每個(gè)機(jī)房里可以代表 2^5 個(gè)機(jī)器(32臺(tái)機(jī)器)。 12 bit:這個(gè)是用來(lái)記錄同一個(gè)毫秒內(nèi)產(chǎn)生的不同 id,12 bit 可以代表的最大正整數(shù)是 2^12 - 1 = 4096,也就是說(shuō)可以用這個(gè) 12 bit 代表的數(shù)字來(lái)區(qū)分同一個(gè)毫秒內(nèi)的 4096 個(gè)不同的 id。
不定期分享限時(shí)內(nèi)容:(加入群677079770獲取更多面試題答案和學(xué)習(xí)資料。)
★騰訊高級(jí)PHP工程師筆試題目
★億級(jí)PV高并發(fā)場(chǎng)景訂單的處理
★laravel開發(fā)天貓商城組件服務(wù)
★戰(zhàn)旗TV視頻直播的架構(gòu)項(xiàng)目實(shí)戰(zhàn)
總結(jié)
以上所述是小編給大家介紹的PHP程序員搜狐2019年面試題和答案解析,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
- 這篇文章主要介紹了2019 PHP面試題與常用技巧,總結(jié)分析了php常用知識(shí)點(diǎn)、注意事項(xiàng)與開發(fā)建議等,需要的朋友可以參考下2019-06-27