一、單選題(共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中,所有的變量無論是全局變量還是類的靜態(tài)成員湖雹,都是頁面級(jí)的咏闪,每次頁面被執(zhí)行時(shí),
都會(huì)重新建立新的對(duì)象摔吏,都會(huì)在頁面執(zhí)行完畢后被清空鸽嫂,這樣似乎PHP單例模式就沒有什么意義了,
所以PHP單例模式只是針對(duì)單次頁面級(jí)請(qǐng)求時(shí)出現(xiàn)多個(gè)應(yīng)用場景并需要共享同一對(duì)象資源時(shí)有意義
3.下面那個(gè)不是mysql存儲(chǔ)引擎的鎖類型舔腾?
A溪胶、表鎖
B搂擦、頁鎖
C稳诚、行鎖
D、無
參考答案:B
答案解析:mysql中myisam是有表鎖瀑踢,innodb是行鎖扳还,基于索引加鎖,如果where條件沒有索引橱夭,是所有行加鎖氨距;sql server才有頁鎖
(加入群677079770獲取更多面試題答案。)
4.以下哪條不是PHP語言的特性棘劣?
A俏让、開源
B、免費(fèi)
C茬暇、基于客戶端
D首昔、便捷高效
參考答案:C
答案解析:PHP語言的特性為:開源、免費(fèi)和便捷高效糙俗。
?
5.關(guān)于PHP模式修飾符說法錯(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庫抄淑,必須啟用配置文件中的( )命令
A、php_gd2.dll
B驰后、PHP.dll
C肆资、PHP.ini
D、php_mbstring.dll
參考答案:A
答案解析:PHP中要想使用GD庫必須啟用php_gd2.ll動(dòng)態(tài)連接庫文件
8.關(guān)于在PHP中的socket灶芝,說法錯(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ú)立于語言的文本格式丧诺,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)
C入桂、這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫驳阎,同時(shí)也易于機(jī)器解析和生成(網(wǎng)絡(luò)傳輸速率)抗愁。
D、值是無序列表
參考答案: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)用場景绷柒,以下說法不正確的是志于?
A、交集废睦,并集伺绽,差集
B、計(jì)數(shù)器、隊(duì)列
C奈应、排行榜
D澜掩、新聞發(fā)布系統(tǒng)
參考答案:D
答案解析:緩存——熱數(shù)據(jù)、計(jì)算器杖挣、隊(duì)列肩榕、位操作、最新列表惩妇、分布式鎖與單線程機(jī)制株汉、交集,并集歌殃,差集乔妈、排行榜,這些都是典型的 redis處理場景氓皱。答案為D
12.關(guān)于漏洞掃描的描述路召,以下哪項(xiàng)是錯(cuò)誤的?
A匀泊、漏洞掃描是一種基于網(wǎng)絡(luò)遠(yuǎn)程檢測目標(biāo)網(wǎng)絡(luò)或主機(jī)安全性脆弱性的技術(shù)优训,可以被用來進(jìn)行模擬攻擊實(shí)驗(yàn)和安全審計(jì).
B朵你、漏洞掃描用來探測目標(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ù)返回字符串的長度。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ū)懭腠樞蚴亲栽龅目闷虰+數(shù)葉子節(jié)點(diǎn)分裂順序一致
B铁追、無
C、該表不指定自增列做主鍵茫船,同時(shí)也沒有可以被選為主鍵的唯一索引(上面的條件)琅束,這時(shí)候InnoDB會(huì)選擇內(nèi)置的ROWID作為主鍵,寫入順序和ROWID增長順序一致
D算谈、使用自增列(INT/BIGINT類型)做主鍵涩禀,這時(shí)候?qū)懭腠樞蚴亲栽龅模虰+數(shù)葉子節(jié)點(diǎn)分裂順序一致然眼;
該表不指定自增列做主鍵艾船,同時(shí)也沒有可以被選為主鍵的唯一索引(上面的條件),這時(shí)候InnoDB會(huì)選擇內(nèi)置的ROWID作為主鍵高每,寫入順序和ROWID增長順序一致屿岂;
除此以外,如果一個(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é)長的ROWID作為隱含的聚集索引(ROWID隨著行記錄的寫入而主鍵遞增,這個(gè)ROWID不像ORACLE的ROWID那樣可引用牺丙,是隱含的)则涯。
因此: 1.使用自增列(INT/BIGINT類型)做主鍵复局,這時(shí)候?qū)懭腠樞蚴亲栽龅模虰+數(shù)葉子節(jié)點(diǎn)分裂順序一致粟判;
2.該表不指定自增列做主鍵亿昏,同時(shí)也沒有可以被選為主鍵的唯一索引(上面的條件),這時(shí)候InnoDB會(huì)選擇內(nèi)置的ROWID作為主鍵档礁,寫入順序和ROWID增長順序一致角钩;
3.如果一個(gè)InnoDB表又沒有顯示主鍵,又有可以被選擇為主鍵的唯一索引呻澜,但該唯一索引可能不是遞增關(guān)系時(shí)(例如字符串递礼、UUID、多字段聯(lián)合唯一索引的情況)羹幸,該表的存取效率就會(huì)比較差
16.對(duì)以下Javascript代碼說法正確的是脊髓?
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)于引用說法錯(cuò)誤的是而芥?
A律罢、引用不是C的指針
B、引用不允許用兩個(gè)變量來指向同一個(gè)內(nèi)容
C蔚出、用引用可以傳遞變量
D弟翘、可以將一個(gè)變量通過引用傳遞給函數(shù)虫腋,這樣該函數(shù)就可以修改其參數(shù)的值骄酗。
參考答案:B
答案解析:引用是允許用兩個(gè)變量來指向同一個(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)于線程的寒屯,說法錯(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文件指針的說法錯(cuò)誤的是?
A魂角、feeek() 移動(dòng)文件指針到指定位置
B昵济、fcreate() 用于創(chuàng)建一個(gè)文件
C、rewind()將文件指針設(shè)為文件流的開頭
D野揪、feof() 測試文件指針是否到達(dá)文件結(jié)束的位置
參考答案:B
答案解析:php中 打開和創(chuàng)建文件都是fopen()函數(shù)访忿,不存在fcreate()函數(shù)
21.下邊是php的函數(shù)而不是語言結(jié)構(gòu)的是?
A斯稳、eval()
B醉顽、require_once()
C、list()
D平挑、empty()
參考答案:B
答案解析:僅僅是提綱挈領(lǐng)游添、提醒下大家注意
php的語言結(jié)構(gòu)和函數(shù)這個(gè)點(diǎn)、可能過多的時(shí)候我們認(rèn)為empty通熄、list唆涝、isset等這類的是函數(shù)、實(shí)際上不上唇辨。 語言結(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)頁關(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樣式無效峰弹。
27.一下哪個(gè)不是PHP的運(yùn)行模式?
A芜果、CGI
B鞠呈、FastCGI
C、apache2handler
D右钾、apache
參考答案:D
答案解析:前三個(gè)是常用的運(yùn)行模式蚁吝,apache是web服務(wù)器軟件
二旱爆、多選題(共3題,每題5分)
1.分庫分表之后窘茁,id 主鍵如何處理怀伦?
A、單庫生成自增 id
B山林、設(shè)置數(shù)據(jù)庫 sequence 或者表自增字段步長
C房待、UUID
D、snowflake 算法
參考答案:A,B,C,D
答案解析:
snowflake 算法
A驼抹、B桑孩、C 也是理論可行的,但是都各自有缺點(diǎn)框冀,最好用snowflake 算法流椒。
snowflake 算法是 twitter 開源的分布式 id 生成算法,采用 Scala 語言實(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è)是用來記錄同一個(gè)毫秒內(nèi)產(chǎn)生的不同 id,12 bit 可以代表的最大正整數(shù)是 2^12 - 1 = 4096舍肠,也就是說可以用這個(gè)
12 bit 代表的數(shù)字來區(qū)分同一個(gè)毫秒內(nèi)的 4096 個(gè)不同的 id搀继。
鏈接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g提取碼:x2p5
免費(fèi)分享窘面,但是X度限制嚴(yán)重,如若鏈接失效點(diǎn)擊鏈接或搜索加群?群號(hào)936682608叽躯,點(diǎn)擊鏈接
?★騰訊高級(jí)PHP工程師筆試題目?
?★億級(jí)PV高并發(fā)場景訂單的處理?
?★laravel開發(fā)天貓商城組件服務(wù)?
?★戰(zhàn)旗TV視頻直播的架構(gòu)項(xiàng)目實(shí)戰(zhàn)