版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
某知名搜索引擎提供商PHP工程師面試筆試真題1一、選擇題1.
以下說法錯誤的是______A.在外部訪問靜態(tài)成員屬性時,使用類名::靜態(tài)成員屬性名B.在外部訪問靜態(tài)成員屬性時,使用$實例化對象->靜態(tài)(江南博哥)成員屬性名C.在外部訪問靜態(tài)方法時,使用$實例化對象->靜態(tài)方法名D.在外部訪問靜態(tài)方法時,使用類名::靜態(tài)方法名正確答案:BC[解析]在類內部,一個靜態(tài)方法調用另外一個靜態(tài)方法(屬性)的格式:self::靜態(tài)方法(靜態(tài)屬性)。而在類外部訪問靜態(tài)方法(屬性)的格式:類名::靜態(tài)方法(屬性)。此外,靜態(tài)變量是屬于類的,也就是說,在沒有實例化對象時也可以訪問靜態(tài)變量。選項B選項C正確。
所以,本題的答案為BC。
2.
以下程序近似地表示了一種在PHP4中無法實現的特性,這個特性叫______
<?php
classmy_class{
functionmy_funct($my_param){
user_errors("Pleasedefineme",E_ERROR);
}
functionb(){
return10;
}
}
?>A.多重繼承B.封裝C.抽象方法D.private方法E.函數重載正確答案:C[解析]在面向對象編程語言中,抽象方法指一些只有方法聲明,而沒有具體方法體的方法。如果my_class是繼承了父類,子類沒有實現my_funct()方法,那么在調用子類的這個方法時會拋出一個錯誤。顯然,這種方式簡單地實現了類似抽象方法的功能。選項C正確。
所以,本題的答案為C。
3.
以下有關phpinfo()函數的說法中,不正確的是______A.它可以被用來查看PHP的配置信息B.可以用它來修改PHP的環(huán)境變量C.可以利用它來查看PHP是否啟用了某個擴展庫D.$_SERVER中包含的內容可以在phpinfo中查看到正確答案:B[解析]phpinfo()函數主要用來查看PHP的配置信息、啟用的擴展庫和$_SERVER中包含的內容,但是不能用來修改PHP的環(huán)境變量。選項B正確。
所以,本題的答案為B。
4.
以下關于MySQL索引的說法中,不正確的是______A.500萬數據的用戶表user在性別字段sex上建立了索引,語句“select*fromuserwheresex=1”并不會提速多少B.一般情況下不鼓勵使用like操作,類似地“l(fā)ike"abc%"”可以使用索引C.唯一索引允許空值,而主鍵索引不允許為空值,除此之外它們是相同的D.對于需要寫入數據的操作,例如DELETE、UPDATE以及INSERT操作,索引會降低它們的速度正確答案:C[解析]唯一性索引列允許空值,而主鍵列不允許為空值,但除了這個不同外其他也并不是都相同的,如主鍵可以做外鍵,唯一索引不可以。選項C的說法是錯誤的。
所以,本題的答案為C。
5.
以下說法正確的是______A.使用索引能加快插入數據的速度B.良好的索引策略有助于防止跨站攻擊C.應當根據數據庫的實際應用合理設計索引D.刪除一條記錄將導致整個表的索引被破壞E.只有數字記錄行需要索引正確答案:C[解析]索引的作用主要是幫助數據庫快速查找到對應的數據,并不能加快插入數據的速度,選項A錯誤。
索引不能夠幫助防止跨站攻擊,選項B錯誤。
創(chuàng)建合理的索引需要分析數據庫的實際用途并找出它的弱點。優(yōu)化腳本中的冗余查詢,同樣也能提高數據庫效率。索引是占用物理空間的,所以在實際的應用中要合理設計使用索引。選項C正確。
索引是一種表結構,刪除一條數據也不會影響到整個表的索引,并且索引不一定是數字,也可以是字符串。選項D選項E錯誤。
所以,本題的答案為C。
6.
下列關于全文檢索技術的說法中,不正確的是______A.Sphinx是一個基于SQL的全文檢索引擎,可以結合MySQL做全文搜索,它可以提供比數據庫本身更專業(yè)的搜索功能B.Solr是新一代的全文檢索組件,它比Lucene的搜索效率高很多,還能支持HTTP的訪問方式,PHP調用Solr也很方便C.MySQL中把一個字段建立FULLTEXT索引,就可以實現全文檢索,目前MyISAM和InnoDB的table都支持FULLTEXT索引D.Lucene附帶的二元分詞分析器CJKAnalyzer切詞速度很快,能滿足一般的全文檢索需要正確答案:B[解析]Sphinx是一個基于SQL的全文檢索引擎,可以結合MySQL、PostgreSQL做全文搜索,它可以提供比數據庫本身更專業(yè)的搜索功能,使得應用程序更容易實現專業(yè)化的全文檢索。
Solr是一個獨立的企業(yè)級搜索應用服務器,用戶可以通過HTTP請求訪問它,它是采用Java5開發(fā)的,基于Lucene的全文搜索服務器,同時對其進行了擴展,提供了比Lucene更加豐富的查詢語言,實現了可配置、可擴展并對查詢性能進行了優(yōu)化,并且提供了一個完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。Solr比Lucene的搜索效率高很多,但是PHP調用Solr并不方便,選項B的說法錯誤,所以,選項B正確。
MySQL中的MyISAM和InnoDB都是支持FULLTEXT全文索引的。全文搜索引擎可以在不使用模板匹配操作的情況下查找單詞或短語。
所以,本題的答案為B。
7.
默認情況下,PHP把會話(Session)數據存儲在______里。A.文件系統(tǒng)B.數據庫C.虛擬內容D.共享內存E.以上都不是正確答案:A[解析]默認情況下,PHP把所有會話信息存儲在/tmp文件夾中;在沒有這個文件夾的操作系統(tǒng)中(例如Windows),必須在php.ini中給session.save_path設置一個合適的位置(例如C:\Temp)。
所以,本題的答案為A。
8.
以下關于大型網站的說法中,正確的是______A.大型網站程序異常后,程序員可以依據服務器日志信息定位錯誤,然后在服務器上用vim修正錯誤即可B.大型網站開發(fā)有很多細節(jié)和小網站存在巨大差異,如瀏覽次數,小網站用數據庫記錄,大型網站常采用NoSQL來存儲C.大型網站選擇開發(fā)語言很重要,PHP只適合開發(fā)中小型網站,并不適合開發(fā)大型網站D.虛擬機技術不能用在大型網站上,是因為虛擬機性能較差,而大型網站的訪問壓力太大,采用后服務器可能會宕機正確答案:B[解析]當大型網站出現異常后,可以根據服務器的日志信息定位錯誤,但是要修改錯誤并不是簡單地通過vim就可以解決的,還需要分析錯誤發(fā)生的原因,根據錯誤去修改程序中相對應的bug,避免異常再次發(fā)生。如果是服務器的配置文件出現的問題導致出錯,那么用vim修改好配置文件后,還需要重啟服務器。選項A錯誤。
大型網站的訪問次數非常多,不能像小網站針對瀏覽次數那樣可以時常向數據庫進行寫操作,因為這樣會使數據庫負擔加重。所以大型網站會通過NoSQL減少數據庫的請求和操作,從而把瀏覽次數緩存在NoSQL中。選項B正確。
開發(fā)語言只是一個工具,目前PHP是用于開發(fā)網站最多的語言,并不是只能開發(fā)中小型網站,它也可以用來開發(fā)大型的網站,例如亞馬孫、優(yōu)酷、51job等,選項C錯誤。
虛擬機技術并不是不可用在大型網站上,因為它可以產生非常多的虛擬機將大型網站的流量進行分散,減少同一個服務器的訪問壓力,將壓力分散到不同的虛擬機中,而虛擬機的性能問題是可以通過分配內存解決的。選項D錯誤。
所以,本題的答案為B。
9.
以下關于NOSQL的說法中,不正確的是______A.MongoDB支持CAP定理中的AP,MySQL支持CAP中的CA,全部都支持不可能存在B.Redis支持字符串、哈希、列表、集合、有序集合等數據結構,目前Redis不支持事務C.Memcache既支持TCP協議,也支持UDP協議,可以把PHP的Session存放到Memcache中D.MongoDB不用先創(chuàng)建Collection的結構就可以直接插入數據,目前MongoDB不支持事務正確答案:B[解析]Redis目前是可以支持簡單的事務的,由于Redis是單線程來處理所有client的請求,一般情況下,Redis在接收到一個client發(fā)來的命令后會立即處理并返回處理結果,但是當一個client在一個連接中發(fā)出multi命令,這個連接會進入一個事務上下文,該連接后續(xù)的命令并不是立即執(zhí)行,而是先放到一個隊列中。當此連接收到exec命令后,Redis會順序地執(zhí)行隊列中的所有命令,并將所有命令的運行結果打包到一起返回給client,然后此連接結束事務上下文。選項B的說法錯誤。
所以,本題的答案為B。
10.
在HTTP協議中,用于發(fā)送大量數據的方法是______A.getB.postC.putD.options正確答案:B[解析]get方法是通過URL路徑傳遞數據,而URL的長度和大小有限制,不能進行大量數據的發(fā)送,而post可以發(fā)送大量數據。
所以,本題的答案為B。
二、填空題1.
在HTTP1.0中,狀態(tài)碼401的含義是______;如果返回“找不到文件”的提示,則可用header函數,其語句為______。正確答案:客戶端在授權頭信息中沒有有效的身份信息時訪問受到密碼保護的頁面;header("HTTP/1.0404NotFound");。
2.
以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句______動態(tài)裝載PHP模塊,然后用語句______使得Apache把所有擴展名為PHP的文件都作為PHP腳本處理。正確答案:①LoadModule;②AddTypeapplication/x-httpd-php.php。[解析]在用Apache模塊的方式安裝PHP時,需要先在http.conf配置文件中加入LoadModule說明加載PHP模塊的功能。保存好配置文件后,還需要使用AddTypeapplication/x-httpd-php.php指明Apache對PHP文件的支持。
3.
PHP可以執(zhí)行系統(tǒng)命令的函數是(至少寫出3個)______。正確答案:可以執(zhí)行系統(tǒng)命令的函數有:①system()函數可以執(zhí)行外部程序并顯示輸出;②exec()函數可以執(zhí)行一個外部程序;③popen()函數可以打開進程文件指針。
4.
Cookie存儲在______,Session是將數據存儲在______,會話的生命周期默認為______。正確答案:客戶端;服務端;1440s。[解析]Cookie存儲在客戶端,而Session存儲在服務器端,PHP中的Session默認有效期是1440s(24min),即用戶在24min內沒有刷新,當前Session就會失效。如果用戶關閉了瀏覽器,Session也會消失。
5.
語句include和require都能把另外一個文件包含到當前文件中,它們的區(qū)別是______;為了避免多次包含同一文件,可以用語句______來代替它們。正確答案:include會產生一個警告并繼續(xù)執(zhí)行后面的代碼,而require則提示是致命錯誤;require_once()或include_once()。[解析]include和require引用文件的區(qū)別在于,當引用文件出錯時,include會產生一個警告并繼續(xù)執(zhí)行后面的代碼,而require則提示是致命錯誤,并停止繼續(xù)執(zhí)行。為了避免多次包含同一個文件,可以使用require_once()或include_once()代替它們。
三、簡答題1.
面向對象的特征是什么?正確答案:面向對象的主要特征有抽象、繼承、封裝和多態(tài)。
1)抽象:抽象就是忽略一個主體中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個方面,一是過程抽象,二是數據抽象。
2)繼承:繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且子類可以修改或增加新的方法使之更適合特殊的需要。
3)封裝:封裝是指將客觀事物抽象成類,每個類對自身的數據和方法實行保護。類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的信息進行隱藏。
4)多態(tài):多態(tài)是指允許不同類的對象對同一消息做出響應。多態(tài)包括參數化多態(tài)和包含多態(tài)。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好地解決了應用程序函數同名問題。
2.
寫出3種以上MySQL數據庫存儲引擎的名稱(提示:不區(qū)分大小寫)。正確答案:MyISAM、InnoDB、DBD(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated等。以下為4種常用數據庫存儲引擎的簡單介紹。
MyISAM:默認的MySQL插件式存儲引擎。如果應用是以讀寫和插入操作為主,只有很少的更新和刪除操作,并且對事務的完整性、并發(fā)性要求不是很高,那么可選用此種存儲引擎。
InnoDB:用于事務處理應用程序,支持外鍵。如果應用對事務的完整性有比較高的要求,在并發(fā)條件下要求數據一致性,數據操作除了插入和查詢以外,還包括很多的更新、刪除操作,那么InnoDB比較合適。InnoDB存儲引擎除了能有效地降低由于刪除和更新操作導致的鎖定,還可以確保事務的完整提交和回滾。
Memory:將所有的數據保存在RAM中,在需要快速定位記錄和其他類似數據的環(huán)境下,可提供極快的訪問。Memory的缺陷首先是對表的大小有限制,太大的表無法緩存在內存中,其次要確保表數據可以恢復,數據庫異常終止后表中的數據是可以恢復的。Memory表通常用于更新不太頻繁的小表,從而快速得到訪問結果。
Merge:用于將一系列等同的MyISAM表以邏輯方式組合在一起,并作為一個對象引用它們。Merge表的優(yōu)點在于可以突破對單個MyISAM表大小的限制,并且將不同的表分布在多個磁盤上,可以有效地改善Merge表的訪問效率。
3.
如何優(yōu)化MySQL數據庫?正確答案:優(yōu)化數據庫主要有以下幾個方面:
1)庫表設計方面。設計結構良好的數據庫表,考慮良好的范式規(guī)則,避免join操作,提高查詢效率。
2)系統(tǒng)架構設計方面。散列方法,把海量數據散列到不同的表中,進行快慢表設計,進行服務器主從設計。
3)索引的使用。給所有經常查詢的字段增加適當的索引。
4)優(yōu)化SQL語句,減少distinct、group、join等語句的操作。
4.
程序、進程與線程的區(qū)別是什么?正確答案:程序、進程與線程的區(qū)別見下表。名稱描述程序一組指令的有序結合,是靜態(tài)的指令,是永久存在的進程具有一定獨立功能的程序關于某個數據集合上的一次運行活動,是系統(tǒng)進行資源分配和調度的一個獨立單元。進程的存在是暫時的,是一個動態(tài)概念線程線程的一個實體,是CPU調度和運行的基本單元,是比進程更小的能獨立運行的基本單元。其本身基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數器、一組寄存器和棧)。一個線程可以創(chuàng)建和撤銷另一個線程,同一個進程中的多個線程之間可以并發(fā)執(zhí)行
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程。
5.
PHP的垃圾回收機制是什么?正確答案:PHP可以自動進行內存管理,清除不再需要的對象。PHP使用了引用計數的垃圾回收機制。每個對象都內含一個引用計數器,當reference連接到對象時,計數器加1。當reference離開作用域或被設置為NULL時,計算器減1。當某個對象的引用計數器為0時,則PHP認為不再需要使用這個對象,釋放其所占的內存空間。
四、編程題1.
如何快速下載一個遠程HTTP服務器上的圖片文件到本地?正確答案:先通過fopen()函數打開要下載的圖片路徑,然后使用fread()函數讀取圖片,再在本地打開指定存儲圖片的目錄,將讀取到的圖片信息寫入該目錄內的文件中,即可遠程下載一個圖片到本地。實現代碼如下:
<?php
$file="/images/originalNewtip.png";
$fp=fopen($file,'rb');
$img=fread($fp,100000);
$dir="./";
$local=fopen($dir.'/'.basename($file),'w');
fwrite($local,$img);
?>
2.
輸出用戶的IP地址,并且判斷用戶的IP地址是否在00~50之間。正確答案:在獲取用戶的IP地址后,將IP地址轉換為數值,然后進行區(qū)間比較查看是否在IP地址之中。
實現代碼如下:
<?php
$IP=getenv("REMOTE_ADDR");
$nip=str_replace(".","",$IP);
if($nip>1921681100and$nip<1921681150){
echo$IP."在00—50之間";
}else{
echo$IP."不在00—50之間";
}
?>
3.
請寫一個函數驗證電子郵件的格式是否正確。正確答案:實現代碼如下:
functioncheckEmail($email)
{
$pregEmail="/^([0-9A-Za-z\\-_\\.]+)@([0-9a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版高校專利技術轉讓合同
- 2024-2030年中國大棗飲料行業(yè)銷售模式及投資盈利預測報告
- 2024-2030年中國城市電視臺行業(yè)發(fā)展策略及投資運作模式分析報告
- 2024年農業(yè)產業(yè)投資合同擔保協議3篇
- 2024年校園水電設施改造與維護服務合同3篇
- 馬鞍山師范高等??茖W?!段锫摼W應用概論》2023-2024學年第一學期期末試卷
- 2024年創(chuàng)新創(chuàng)業(yè)項目投資評估與咨詢服務協議3篇
- 2024年度自動駕駛汽車勞動合同與聘用合同3篇
- 2024年標準化信息技術外包服務合同一
- 2024年度行政合同科技創(chuàng)新合同糾紛救濟與保障協議2篇
- 機器學習(山東聯盟)智慧樹知到期末考試答案章節(jié)答案2024年山東財經大學
- 德勤公司概況簡介
- DB32∕T 2156-2012 電梯能耗測試及能效分級
- 瀝青路面日常養(yǎng)護及維修施工要點(大量附圖共143頁)
- 《色彩基礎知識》PPT課件(詳解)
- 《保健按摩師》(二級)理論知識鑒定要素細目表
- 甘蔗制糖簡介
- 三秦出版社五年級上冊綜合實踐教案
- 屋頂分布式光伏項目安全文明施工控制措施
- 水泥保證供應實施方案及服務承諾書
- 2022機要密碼工作總結機要室工作總結.doc
評論
0/150
提交評論