傳智播客PHP面試題及答案寶典(下卷高級篇)_第1頁
傳智播客PHP面試題及答案寶典(下卷高級篇)_第2頁
傳智播客PHP面試題及答案寶典(下卷高級篇)_第3頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、傳播才智,引領(lǐng)將來PHP 面試題寶典第一版下卷高級篇傳智播客 PHP 教研組韓順平,王超平收集整理,試題和學(xué)生求職面試題傳播才智,引領(lǐng)將來PHP 核心技術(shù)1.寫出一個(gè)能創(chuàng)立多級名目的 PHP 函數(shù)浪網(wǎng)技術(shù)部 2.寫出 smarty 模板的特點(diǎn)浪網(wǎng)技術(shù)部速度快,編譯型,緩存技術(shù),插件機(jī)制,強(qiáng)大的表現(xiàn)規(guī)律翻開 php.ini 中的 safe_mode,會(huì)影響哪些函數(shù)?至少說出 6 個(gè)。浪1)用戶輸入輸出函數(shù)fopenfilerequire,只能用于調(diào)用這些函數(shù)有一樣腳本的擁有者2)3)4)5)6)創(chuàng)立文件限制用戶只在該用戶擁知名目下創(chuàng)立文件用戶調(diào)用popensystenexec等腳本,只有腳本處在

2、 safe_mode_exec_dir 配置指令指定的名目中才可能加強(qiáng) 認(rèn)證,認(rèn)證腳本擁有者的 UID 的劃入認(rèn)證領(lǐng)域范圍內(nèi), 此外啟用安全模式下,不會(huì)設(shè)置 PHP_AUTHmysql 效勞器所用的用戶名必需與調(diào)用 mysql_connect的文件的擁有者用戶名一樣受影響的函數(shù)變量以及配置命令到達(dá) 40 個(gè)抓取遠(yuǎn)程圖片到本地,你會(huì)用什么函數(shù)?(51 筆試題) file_get_contents 或者 curlPHP 的垃圾收集機(jī)制是怎樣的騰訊PHP 可以自動(dòng)進(jìn)展內(nèi)存治理,去除不再需要的對象。PHP 使用了引用計(jì)數(shù)(referencecounting)這種單純的垃圾回收(garbagecolle

3、ction)機(jī)制。每個(gè)對象都內(nèi)含一個(gè)引用計(jì)數(shù)器,每個(gè) reference 連接到對象,計(jì)數(shù)器加 1。當(dāng) reference 離開生存空間或被設(shè)為 NULL,計(jì)數(shù)器減 1。當(dāng)某個(gè)對象的引用計(jì)數(shù)器為零時(shí),PHP 知道你將不再需要使用這個(gè)對象,釋放其所占傳播才智,引領(lǐng)將來的內(nèi)存空間。6.請寫一段 PHP 代碼,確保多個(gè)進(jìn)程同時(shí)寫入同一個(gè)文件成功騰訊 核心思路:加鎖寫一個(gè)函數(shù),盡可能高效的,從一個(gè)標(biāo)準(zhǔn) url 里取出文件的擴(kuò)展名,例如 HYPERLINK “ :/ sina .cn/abc/de/fg.php?id=1“ : :/ sina .cn/abc/de/fg.php?id=1 需要取出 ph

4、p 或.php浪方案 1:答案 2:相關(guān)題目:使用五種以上方式獵取一個(gè)文件的擴(kuò)展名,要求: dir/upload.image.jpg,找出.jpg 或者 jpg,必需使用 PHP 自帶的處理函數(shù)進(jìn)展處理,方法不能明顯重復(fù),可以封裝成函數(shù),比方get_ext1($file_name),get_ext2($file_name)傳播才智,引領(lǐng)將來寫一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的全部文件和子文件夾。浪簡述論壇中無限分類的實(shí)現(xiàn)原理。浪 創(chuàng)立類別表如下:CREATETABLEcategory( cat_idsmallintunsignednotnullauto_incrementprimarykeyco

5、mment”類別 ID”, cat_nameVARCHAR(30)NOTNULLDEFAULT”COMMENT”類別名稱”, parent_idSMALLINTUNSIGNEDNOTNULLDEFAULT0COMMENT”類別父 ID”)engine=MyISAMcharset=utf8;編寫一個(gè)函數(shù),遞歸遍歷,實(shí)現(xiàn)無限分類寫一個(gè)函數(shù),算出兩個(gè)文件的相對路徑,如$a=”/a/b/c/d/e.php”;$b=”/a/b/12/34/c.php”;計(jì)算出$b 相對于$a 的相對路徑應(yīng)當(dāng)是././c/d浪傳播才智,引領(lǐng)將來mysql_fetch_row和 mysql_fetch_array有什么分別

6、?mysql_fetch_row把數(shù)據(jù)庫的一列儲存在一個(gè)以零為基數(shù)的數(shù)組中,第一欄在數(shù)組的索引 0,其次欄在索引 1,如此類推。mysql_fetch_assoc把數(shù)據(jù)庫的一列儲存在一個(gè)關(guān)聯(lián)數(shù)組中,數(shù)組的索引就是字段名稱,例如我的數(shù)據(jù)庫查詢送回“first_name”、“l(fā)ast_name”、“email”三個(gè)字段,數(shù)組的索引便是“first_name”、“l(fā)ast_name”和“email”。mysql_fetch_array可以同時(shí)送回 mysql_fetch_row和 mysql_fetch_assoc的值。P 開發(fā)資源網(wǎng)主頁 HYPERLINK “ :/ phpres /index.h

7、tml%2C如何得“ : :/ phpres /index.html,如何得 12.有一個(gè)網(wǎng)頁地址,比方 PHPHP到它的內(nèi)容?方法 1(對于 PHP5 及更高版本): HYPERLINK “ :/ phpres /index.html“ $readcontents=fopen(“ :/ phpres /index.html“,“rb“);$contents=stream_get_contents($readcontents); fclose($readcontents);echo$contents;方法 2: HYPERLINK “ :/ phpres /index.html“ echofi

8、le_get_contents(“ :/ phpres /index.html“); 13.談?wù)剬?mvc 的生疏由模型(model),視圖(view),把握器(controller)完成的應(yīng)用程序,由模型發(fā)出要實(shí)現(xiàn)的功能到把握器,把握器接收組織功能傳遞給視圖。14.WhatdoestheGDlibrarydo?YahooGD 庫供給了一系列用來處理圖片的 API,使用 GD 庫可以處理圖片,或者生成圖片。在網(wǎng)站上 GD 庫通常用來生成縮略圖或者用來對圖片加水印或者對網(wǎng)站數(shù)據(jù)生成報(bào)表。自從 PHP4.3.0 版本后 GD 便內(nèi)建在 PHP 系統(tǒng)中。15.Whatfunctioncanyouus

9、etoopenafileforreadingandwriting?Yahoo傳播才智,引領(lǐng)將來A.fget; B.file_open; C.fopen; D.open_file;答案:Cfget這不是一個(gè) PHP 函數(shù),會(huì)引致執(zhí)行錯(cuò)誤。file_open這不是一個(gè) PHP 函數(shù),會(huì)引致執(zhí)行錯(cuò)誤。fopen這是正確答案,fopen可以用來開啟檔案以便讀寫。open_file這不是一個(gè) PHP 函數(shù),會(huì)引致執(zhí)行錯(cuò)誤。16.Smarty 的原理smarty 是個(gè)模板引擎,最顯著的地方就是有可以把模板緩存起來。一般模板來說,都是做一個(gè)靜態(tài)頁面,然后在里面把一些動(dòng)態(tài)的局部用一切分隔符切開,然后在 PHP

10、 里翻開這個(gè)模板文件,把分隔符里面的值替換掉,然后輸出來,你可以看下 PHPLib 里面的 template 局部。而 smarty 設(shè)定了緩存參數(shù)以后,第一運(yùn)行時(shí)候會(huì)把模板翻開,在 php 替換里面值的時(shí)候把讀取的 html 和 php 局部重生成一個(gè)臨時(shí)的 php 文件,這樣就省去了每次翻開都重讀取 html 了。假設(shè)修改了模板,只要重刷下就行了。相關(guān)題目 1:能夠使 HTML 和 PHP 分別開使用的模板smarty,phplib 等相關(guān)題目 2:您是否用過模板引擎?假設(shè)有您用的模板引擎的名字是? Smarty17.PHP 如何實(shí)現(xiàn)頁面跳轉(zhuǎn)方法一:php 函數(shù)跳轉(zhuǎn),缺點(diǎn),header 頭

11、之前不能有輸出,跳轉(zhuǎn)后的程序連續(xù)執(zhí)行,可用 exit 中斷執(zhí)行后面的程序。header(“Location:網(wǎng)址“);/直接跳轉(zhuǎn) HYPERLINK “ :/“ header(“refresh:3;url= :/“);/三秒后跳轉(zhuǎn)方法二:利用 metaecho“; 18.PHP 可以和 sqlserver/oracle 等數(shù)據(jù)庫連接嗎?可以使用哪些工具進(jìn)展版本把握? SVN 或者 CVS相關(guān)題目:您是否用過版本把握軟件?假設(shè)有您用的版本把握軟件的名字是? TortoiseSVN-1.2.6svn-1.2.3寫出一個(gè)正則表達(dá)式,過慮網(wǎng)頁上的全部 JS/VBS 腳本即把 script 標(biāo)記及其內(nèi)容

12、都去掉:$script=“以下內(nèi)容不顯示:alert(”cc”);“;傳播才智,引領(lǐng)將來echopreg_replace(“/.*?.*?/si“,“替換內(nèi)容“,$script); 21.Givenalineoftext$string,howwouldyouwritearegularexpressiontostripalltheHTMLtag sfromit?Yahoo方案一,使用 PHP 內(nèi)建函數(shù) strip_tags除去 HTML 標(biāo)簽方案二,自定義函數(shù),如下:請寫一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確要求使用正則浪 preg_match(”/w-.+w-+(.w+)+$/”,$email);

13、相關(guān)題目:請用正則表達(dá)式寫一個(gè)函數(shù),驗(yàn)證電子郵件的格式是否正確。鑫眾人云請對 POSIX 風(fēng)格和兼容 Perl 風(fēng)格兩種正則表達(dá)式的主要函數(shù)進(jìn)展類比說明騰訊主要區(qū)分有以下三種:1)2)3)案。請寫出并說明如何在命令行下運(yùn)行 PHP 腳本寫出兩種方式同時(shí)向 PHP 腳本傳遞參數(shù)?騰訊首先進(jìn)入 php 安裝名目php-fd:/wamp/www/1.phpphp-rphpinfo;其中-f 參數(shù)指定要執(zhí)行的 php 文件其中-r 表示直接執(zhí)行 php 代碼,無需寫開頭完畢標(biāo)記 preg_replace里面的正則可以寫成型如:“/./“而ereg_replace里面的正則需寫成型如“.“preg_re

14、place能操作數(shù)組,而ereg_replace不行以在逆向引用用 preg_replace可使用 0-99 個(gè),而 ereg_replace 最多為 9 個(gè)使用 Perl 兼容正則表達(dá)式語法的 preg_match函數(shù)通常是比 ereg更快的替代方使用正則表達(dá)式提取一段標(biāo)識語言html 或 xml代碼段中指定標(biāo)簽的指定屬性值需考慮屬性值對不規(guī)章的狀況,如大小寫不敏感,屬性名值與等號間有空格等。此處假設(shè)需提取 test 標(biāo)簽的 attr 屬性值,請自行構(gòu)建包含該標(biāo)簽的串騰訊編寫如下函數(shù):functiongetAttrValue($str,$tagName,$attrName)$pattern1

15、=“/i“;傳播才智,引領(lǐng)將來$arr=array;$re=preg_match($pattern1,$str,$arr); if($re) echo“$arr6=$arr6“;elseecho“沒找到?!?測試:$str1=“;getAttrValue($str1,“test“,“attr“);/找 test 標(biāo)簽中 attr 屬性的值,結(jié)果為 ddd$str2=“; getAttrValue($str2,“test2“,“t1“);/找 test2 標(biāo)簽中 t1 屬性的值,結(jié)果為 t1value 26.Whatdoesthefollowingcodedo?Explainwhat”sgoin

16、gonthere.$date=”08/26/2022”; “(0-9+)/(0-9+)/(0-9+)”,2/1/3,$date);Yahooprintereg_replace(ereg_replace(“(0-9+)/(0-9+)/(0-9+)”這是把一個(gè)日期從 MM/DD/YYYY 的格式轉(zhuǎn)為 DD/MM/YYYY 格式。輸出 26/08/2022 27.Whatfunctionwouldyouusetoredirectthebrowsertoanew?Yahoo A.redirB.header C.location D.redirect 答案:Bredir這不是一個(gè) PHP 函數(shù),會(huì)引致執(zhí)

17、行錯(cuò)誤。header這個(gè)是正確答案,header函數(shù)發(fā)送頭信息,可以用來使掃瞄器轉(zhuǎn)向到另一個(gè)頁面,例如: HYPERLINK “ :/ search-this /“ header(“Location: :/ search-this /“)。location這不是一個(gè) PHP 函數(shù),會(huì)引致執(zhí)行錯(cuò)誤。redirect這不是一個(gè) PHP 函數(shù),會(huì)引致執(zhí)行錯(cuò)誤。WhenturnedonwillyourscriptwithdifferentvariablesfromH TMLformsandcookies.騰訊A.show_errors,enable B.show_errors,showC.regist

18、er_globals,enhance D.register_globals,inject 答案:C一個(gè)函數(shù)的參數(shù)不能是對變量的引用,除非在 php.ini 中把設(shè)為 on。allow_call_time_pass_reference是否啟用在函數(shù)調(diào)用時(shí)強(qiáng)制參數(shù)被依據(jù)引用傳遞傳播才智,引領(lǐng)將來在 HTML 語言中,頁面頭部的 meta 標(biāo)記可以用來輸出文件的編碼格式,以下是一個(gè)標(biāo)準(zhǔn)的 meta 語句,請使用 PHP 語言寫一個(gè)函數(shù),把一個(gè)標(biāo)準(zhǔn)HTML 頁面中的類似 meta 標(biāo)記中的 charset 局部值改為 big5。浪請留意:(1)需要處理完整的 html 頁面,即不光此 meta 語句(

19、2)無視大小寫”和“在此處是可以互換的”Content-Type”兩側(cè)的引號是可以無視的,但”text/html;charset=gbk”兩側(cè)的不行(5)留意處理多余空格編寫正則表達(dá)式如下:$reg1=“/()/i“; 31.PHP 中如何推斷一個(gè)字符串是否是合法的日期模式:2022-03-1313:13:13。要求代碼不超過 5 行。酷訊PHP 中,如何獲得一個(gè)數(shù)組的鍵值?酷訊使用 foreach 遍歷數(shù)組假設(shè)模板是用 smarty 模板。怎樣用 section 語句來顯示一個(gè)名為$data 的組。比方:$data=array(0=array(”id”=8,”name”=”name1”),

20、1=array(”id”=10,”name”=”name2”), 2=array(”id”=15,”name”=”name3”);寫出在模板頁的代碼?假設(shè)用 foreach 語句又要怎樣顯示呢? 用 section 語句: id: name:傳播才智,引領(lǐng)將來數(shù)組為空用 foreach 語句: id: name:數(shù)組為空哪個(gè)選項(xiàng)會(huì)匹配下邊的這個(gè)正則表達(dá)式?(/.*xyzd/) A.*xyzB.*_xyz1 C.*xyz2 D._*xyz答案:C以下哪個(gè)錯(cuò)誤無法被標(biāo)準(zhǔn)的錯(cuò)誤把握器獵?。?A.E_WARNINGB.E_USER_ERROR C.E_PARSE D.E_NOTICE答案:B以下哪種錯(cuò)

21、誤類型無法被自定義的錯(cuò)誤處理器捕獲到?奇矩互動(dòng) A.E_WARNINGB.E_USER_ERROR C.E_PARSE D.E_NOTICE答案:C37.(s*)|(s*$)這個(gè)正則表達(dá)式作用是:;匹配以 0 個(gè)或多個(gè)空白符開頭或者 0 個(gè)或多個(gè)空白符結(jié)尾的字符串38.編寫函數(shù)取得上一月的最終一天傳播才智,引領(lǐng)將來在很多時(shí)候,我們可以通過 apache 的主配置文件來設(shè)置對 test 名目的訪問權(quán)限把握,如 HYPERLINK “ :/IP/test“ :/IP/test 請問假設(shè)需設(shè)置 test 下的一個(gè)子名目的訪問把握權(quán)限,是否可以在主配置文件中修改,假設(shè)不行以應(yīng)如何解決??梢裕€可以在需

22、要把握的子名目下創(chuàng)立.htaccess 文件,寫入訪問把握。假設(shè)我的網(wǎng)站用的 utf-8 編碼,為防止亂碼消滅,都需要留意哪些地方?1)2)3)4)5)從以下幾個(gè)方面考慮:數(shù)據(jù)庫中庫和表都用 utf8 編碼 php 連接 mysql,指定數(shù)據(jù)庫編碼為 utf8mysql_query(“setnamesutf8”)php 文件指定頭部編碼為 utf- 8header(“content-type:text/html;charset=utf-8”) 網(wǎng)站下全部文件的編碼為 utf8html 文件指定編碼為 utf-8在 url 中用 get 傳值的時(shí)候,假設(shè)中文消滅亂碼,應(yīng)當(dāng)用哪個(gè)函數(shù)對中文進(jìn)展編碼

23、?urlencode寫出兩種對變量加密的函數(shù)? md5($str);sha1($str);43.如何把 2022-9-210:30:25 變成 unix 時(shí)間戳?傳播才智,引領(lǐng)將來如何把一個(gè) GB2312格式的字符串裝換成 UTF-8 格式?假設(shè)需要原樣輸出用戶輸入的內(nèi)容,在數(shù)據(jù)入庫前,要用哪個(gè)函數(shù)處理? htmlspecialchars 或者 htmlentities寫出五種以上你使用過的 PHP 的擴(kuò)展的名稱提示:常用的 PHP 擴(kuò)展 mb_sring、iconv、curl、GD、XML、socket、MySQL、PDO 等了解 MVC 模式嗎?請寫出三種以上目前 PHP 流行的 MVC

24、框架名稱不區(qū)分大小寫FleaPHP、ZendFramework、CakePHP、Symfony、ThinkPHP、YII、CodeIgniter 等48.php 中 WEB 上傳文件的原理是什么,如何限制上傳文件的大?。可蟼魑募谋韱问褂?post 方式,并且要在 form 中添加 enctype=”multipart/form- data”。一般可以加上隱蔽域:,位置在 file 域前面。value 的值是上傳文件的客戶端字節(jié)限制??梢员荛_用戶在花時(shí)間等待上傳大文件之后才覺察文件過大上傳失敗的麻煩。使用 file 文件域來選擇要上傳的文件,當(dāng)點(diǎn)擊提交按鈕之后,文件會(huì)被上傳到效勞器中的臨時(shí)名目

25、,在腳本運(yùn)行完畢時(shí)會(huì)被銷毀,所以應(yīng)當(dāng)在腳本完畢之前,將其移動(dòng)到效勞器上的某個(gè)名目下,可以通過函數(shù) move_uploaded_file來移動(dòng)臨時(shí)文件,要獵取臨時(shí)文件的信息,使用$_FILES。限制上傳文件大小的因素有:1)2)3)客戶端的隱蔽域 MAX_FILE_SIZE 的數(shù)值可以被繞開。效勞器端的upload_max_filesize,post_max_size 和 memory_limit。這幾項(xiàng)不能夠用腳原來設(shè)置。自定義文件大小限制規(guī)律。即使效勞器的限制是能自己打算,也會(huì)有需要個(gè)別考慮的情況。所以這個(gè)限制方式經(jīng)常是必要的。49.簡述 UBBcode 的實(shí)現(xiàn)原理。(YG)UBB 代碼是

26、HTML 的一個(gè)變種,通過程序自定義我們的標(biāo)簽,比方“aPHP 中UBB 的使用/a”這樣的標(biāo)簽,其實(shí)質(zhì)就是利用技術(shù)查找a/a標(biāo)簽,將其替換成的標(biāo)準(zhǔn) html,說白了,就是將標(biāo)準(zhǔn)的 html 標(biāo)記通過技術(shù)手段使其簡化, 其輸出出來的結(jié)果還是標(biāo)準(zhǔn)的 html。明白了 ubb 的原理,那么再制作一個(gè)簡潔的 ubb 編輯器就不難了,和 fck 之類的編傳播才智,引領(lǐng)將來輯器比較起來,ubb 代碼最大的優(yōu)點(diǎn)就是代碼簡潔,功能很少,簡潔的 ubb 只需要一個(gè)文件,而且 ubb 標(biāo)簽可以自己來定義,更改起來很便利,在 php 中就是利用替換函數(shù)就可以將 html 進(jìn)展標(biāo)簽化,輸出時(shí)進(jìn)展標(biāo)簽的轉(zhuǎn)化。.怎么把

27、文件保存到指定名目?怎么避開上傳文件重名問題?5050.可以通過上傳的文件名獵取到文件后綴,然后使用時(shí)間戳+隨機(jī)數(shù)+文件后綴的方式為文件重命名,這樣就避開了重名??梢宰约涸O(shè)置上傳文件的保存名目,與文件名拼湊形成一個(gè)文件路徑,使用 move_uploaded_file,就可以完成將文件保存到指定名目。 函數(shù)能返回腳本里的任意行中調(diào)用的函數(shù)的名稱。該函數(shù)同時(shí)還經(jīng)常被用在調(diào)試中,用來推斷錯(cuò)誤是如何發(fā)生的。奇矩互動(dòng) debug_print_backtrace在 Smarty 模板語法中怎么能遍歷數(shù)組$a=array(array(”id”=0),array(”id”=)id=0-10000,1),arr

28、ay(”id”=2),2),)怎么推斷當(dāng) id=500,讓輸出的值在 HTML 里變?yōu)榧t色?億郵設(shè)數(shù)組安排過來的數(shù)組名為$idssectionname=temploop=$idsif$idstemp.id=500$idstemp.idesle$idstemp.id/if/section在 Smarty 模板語法中如何獵取當(dāng)前時(shí)間,并且使用 Y-m-dH:i:s 的格式輸出?億郵使用$smarty.now來獵取當(dāng)前時(shí)間,得到的是 unix 系統(tǒng)時(shí)間戳使用變量調(diào)整器進(jìn)展格式化,如下:$smarty.now|date_format:“%Y-%m-%d%H:%M:%S”在 Smarty 模板語法中如何

29、獵取 php 的全局環(huán)境變量億郵$smarty.get.變量#顯示通過 get 方式傳過來的指定變量的值$smarty.post.變量#顯示通過 post 方式傳過來的指定變量的值$smarty.cookies.變量#顯示通過 cookie 中指定變量的值$smarty.server.SERVER_NAME#顯示 server 變量值,$_SERVER 系列變量$smarty.env.PATH#顯示系統(tǒng)環(huán)境變量值,$_ENV 系列變量$smarty.session.變量#顯示 session 中指定變量的值$smarty.request.變量#顯示通過 post、get、cookie 中指定變

30、量的值55.在 Smarty 模板中如何用自定義函數(shù)億郵使用模板分隔符包含,傳遞參數(shù)則使用 HTML 屬性的方式,例如:html_imagefile=“pumpkin.jpg“列舉出你所知道的 php 系統(tǒng)函數(shù)庫例如,數(shù)學(xué)函數(shù)庫(億郵)傳播才智,引領(lǐng)將來mysql,gd,pdo,XML,zip,filesystem,mail 等假設(shè)讓你來寫一個(gè)函數(shù)實(shí)現(xiàn) Utf-8 轉(zhuǎn) gb2312,那么函數(shù)的名稱應(yīng)當(dāng)怎么命名? (億郵)utf8_to_gb2312 或者 utf8togb2312請描述如下 URL 重寫規(guī)章的用意。卓望 RewriteEngineonRewriteCond%REQUEST_FI

31、LENAME!-f RewriteCond%REQUEST_FILENAME!-d RewriteBase/RewriteRule./index.phpL假設(shè) REQUEST_FILENAME 文件存在,就直接訪問文件,不進(jìn)展下面的 rewrite 規(guī)章假設(shè) REQUEST_FILENAME 名目存在,就直接訪問名目,不進(jìn)展下面的rewrite 規(guī)章 RewriteRule 的意思是把全部的懇求都給 index.php 處理。59.Warning:Cannotmodifyheaderinformation- headersalreadysentby(outputstartedatD:srcin

32、it.php:7)inD:srcinit.phponline10 通常什么狀況下 php 會(huì)報(bào)該警告信息?(卓望)一般是在 header、set_cookie 以及 session_start 函數(shù)前面有輸出包括空格的情況下,會(huì)報(bào)該警告信息。傳播才智,引領(lǐng)將來數(shù)據(jù)構(gòu)造和算法51.使對象可以像數(shù)組一樣進(jìn)展 foreach 循環(huán),要求屬性必需是私有。(Iterator 模式的 PHPPHP5實(shí)現(xiàn),寫一類實(shí)現(xiàn) Iterator 接口)騰訊 classTestimplementsIterator private$item=array(”id”=1,”name”=”php”);publicfunctio

33、nrewind reset($this-item);publicfunctioncurrent returncurrent($this-item);publicfunctionkey returnkey($this-item);publicfunctionnext returnnext($this-item);publicfunctionvalid return($this-current!=false);$t=newTest; foreach($tas$k=$v) echo$k,”-”,$v,”;用 PHP 實(shí)現(xiàn)一個(gè)雙向隊(duì)列騰訊 classDequeprivate$queue=array;

34、publicfunctionaddFirst($item) returnarray_unshift($this-queue,$item);publicfunctionaddLast($item) returnarray_push($this-queue,$item);publicfunctionremoveFirst傳播才智,引領(lǐng)將來returnarray_shift($this-queue);publicfunctionremoveLast returnarray_pop($this-queue);請使用冒泡排序法對以下一組數(shù)據(jù)進(jìn)展排序 1023614102523859945。寫出一種排序算

35、法要寫出代碼,并說出優(yōu)化它的方法。浪/快速排序functionpartition(&$arr,$low,$high)$pivotkey=$arr$low; while($low$high)while($low=$pivotkey)$high-;$temp=$arr$low;$arr$low=$arr$high;$arr$high=$temp; while($low$high&$arr$low=$pivotkey)$low+;$temp=$arr$low;$arr$low=$arr$high;$arr$high=$temp;return$low;傳播才智,引領(lǐng)將來functionquick_so

36、rt(&$arr,$low,$high) if($low$high)$pivot=partition($arr,$low,$high); quick_sort($arr,$low,$pivot-1); quick_sort($arr,$pivot+1,$high);該算法是通過分治遞歸來實(shí)現(xiàn)的,其效率很大程度上取決于參考元素的選擇,可以選擇數(shù)組的中間元素,也可以隨機(jī)得到三個(gè)元素,然后選擇中間的那個(gè)元素三數(shù)中值法。另外還有一點(diǎn),就是當(dāng)我們在分割時(shí),假設(shè)分割出來的子序列的長度很小的話小于 5 到 20,通常遞歸的排序的效率就沒有諸如插入排序或希爾排序那么快了。因此可以會(huì)去推斷數(shù)組的長度,假設(shè)小于

37、10 的話,直接用插入排序,而不再遞歸調(diào)用這個(gè)快速排序。5.一群猴子排成一圈,按 1,2,.,n 依次編號。然后從第 1 只開頭數(shù),數(shù)到第 m 只,把它踢出圈,從它后面再開頭數(shù),再數(shù)到第 m 只,在把它踢出去.,如此不停的進(jìn)展下去,直到最終只剩下一只猴子為止,那只猴子就叫做大王。要求編程模擬此過程,輸入 m、n,輸出最終那個(gè)大王的編號。浪小米functionjosephus($n,$m)$r=0; for($i=2;$i$val)$keysvalue$key=$val$keys;if($order=0) asort($keysvalue);else arsort($keysvalue);res

38、et($keysvalue);傳播才智,引領(lǐng)將來foreach($keysvalueas$key=$vals)$keysort$key=$key;$new_array=array; foreach($keysortas$key=$val)$new_array$key=$arr$val;return$new_array;用二分法查找一個(gè)長度為 10 的排好序的線性表,查找不成功時(shí)最多需要比較次數(shù)是小米4從 0,1,2,3,4,5,6,7,8,9,這十個(gè)數(shù)字中任意選出三個(gè)不同的數(shù)字,“三個(gè)數(shù)字中不含 0 和 5”的概率是小米7/15一個(gè)三角形三個(gè)頂點(diǎn)有 3 只老鼠,一聲槍響,3 只老鼠開頭沿三角形

39、的邊勻速運(yùn)動(dòng),請問他們相遇的概率是小米 75%,每只老鼠都有順時(shí)針、逆時(shí)鐘兩種運(yùn)動(dòng)方向,3 只老鼠共有 8 種運(yùn)動(dòng)狀況,只有當(dāng) 3 只老鼠都為順時(shí)針或者逆時(shí)鐘,它們才不會(huì)相遇,剩余的 6 中狀況都會(huì)相遇,故相遇的概率為 6/8=75%。描述挨次查找和二分查找也叫做折半查找算法,挨次查找必需考慮效率, 對象可以是一個(gè)有序數(shù)組小米/二分查找數(shù)組里查找某個(gè)元素 functionbin_sch($array,$low,$high,$k) if($low=$high)$mid=intval($low+$high)/2); if($array$mid=$k) return$mid;elseif($k$ar

40、ray$mid) returnbin_sch($array,$low,$mid-1,$k);else returnbin_sch($array,$mid+1,$high,$k);return-1;/挨次查找數(shù)組里查找某個(gè)元素 functionseq_sch($array,$n,$k)$array$n=$k;傳播才智,引領(lǐng)將來for($i=0;$i$n;$i+) if($array$i=$k) break;if($i$n) return$i;else return-1;我們期望開發(fā)一款撲克玩耍,請給出一套洗牌算法,公正的洗牌并將洗好的牌存儲在一個(gè)整形數(shù)組里。鑫眾人云沒有固定答案,簡潔洗牌算法參考

41、$card_num=54;/牌數(shù)functionwash_card($card_num)$cards=$tmp=array; for($i=0;$i$card_num;$i+)$tmp$i=$i;for($i=0;$i$card_num;$i+)$index=rand(0,$card_num-$i-1);$cards$i=$tmp$index; unset($tmp$index);$tmp=array_values($tmp);return$cards;測試:print_r(wash_card($card_num); 12.寫出你所知道的排序方法億郵冒泡排序,快速排序,插入排序,選擇排序,傳播

42、才智,引領(lǐng)將來PHP 網(wǎng)絡(luò)編程禁用 COOKIE 后 SEESION 還能用嗎?(51 筆試題)可以,Cookie 和 session 都是用來實(shí)現(xiàn)會(huì)話機(jī)制的,由于 協(xié)議是無狀態(tài)的, 所以要想跟蹤一個(gè)用戶在同一個(gè)網(wǎng)站之間不同頁面的狀態(tài),需要有這么一個(gè)機(jī)制-會(huì)話機(jī)制。 Cookie:將會(huì)話信息的保存到掃瞄器端。Session:將會(huì)話信息保存到效勞器端。session 默認(rèn)狀況下是基于 cookie 的,對于 session 來說,每生成一個(gè) sessionid, 都會(huì)將其發(fā)送到掃瞄器端,讓后將其保存到 cookie 當(dāng)中。假設(shè)禁用了 cookie,則基于 cookie 的 session 不好使

43、了,我們可以使用 get,傳遞SID,或者直接開啟透亮的 SID此時(shí)需要關(guān)閉基于 cookie 的 session 配置項(xiàng)。相關(guān)題目:session 與 cookie 的區(qū)分?Cookie 保存在客戶端,而 session 則保存效勞器端。從安全性的角度來講,session 的安全性要高。從保存內(nèi)容的類型的角度來講,cookie 只保存字符串及能夠自動(dòng)轉(zhuǎn)換成字符串,而 session 則可以保存全部的數(shù)據(jù)類型。從保存內(nèi)容的大小的角度來講,cookie 保存的內(nèi)容是有限制的,比較小,而session 根本上沒有這個(gè)限制。從性能的角度來講,用 session 的話,對效勞器的壓力會(huì)更大一些。請使用

44、 socket 相關(guān)函數(shù)非 curl實(shí)現(xiàn)如下功能:構(gòu)造一個(gè) post 懇求,發(fā)送到指定 server 的指定端口的指定懇求路徑如 :/ example :8080/test。懇求中包含以下變量:用戶名username:溫存一刀密碼pwd:&123=321&321=123& 個(gè)人簡介intro:Helloworld!且該 server 需要以下 cookie 來進(jìn)展簡潔的用戶動(dòng)作跟蹤: cur_query:you&melast_tm:.上次懇求的 unix 時(shí)間戳,定為當(dāng)前懇求時(shí)間前 10 分鐘 cur_tm:.當(dāng)前懇求的 unix 時(shí)間戳設(shè)置超時(shí)為 10 秒,發(fā)出懇求后,將 server 的響

45、應(yīng)內(nèi)容輸出騰訊 參考代碼:if($fp=fsockopen(”localhost”,”80”)/連接成功$request_data=“POST/2.php /1.1“.“rn“;/懇求行$request_data.=“Host:localhost“.“rn“;/host 頭信息$request_data.=“User-Agent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1; Trident/5.0)“.“rn“;/host 頭信息$request_content=“username=“.urlencode(”溫存一刀”).“&pwd=“.urlenc

46、ode(”&123=321&321=123&”).“&intro=“.urlencode(“Helloworld!“);$request_data.=“Content-Type:application/x-www-form-urlencoded“.“rn“;$request_data.=“Content-Length:“.strlen($request_content).“rn“;$cur_query=urlencode(“you&me“);傳播才智,引領(lǐng)將來$last_tm=time-10*60;$cur_tm=time;$request_data.=“Cookie:cur_query=$c

47、ur_query;last_tm=$last_tm;cur_tm=$cur_tm“.“r n“;$request_data.=“rn“;/懇求頭信息完畢時(shí)的空行/懇求主體數(shù)據(jù)局部$request_data.=$request_content;/利用建立好的通道,將數(shù)據(jù)發(fā)送過去fwrite($fp,$request_data);/寫入數(shù)據(jù)發(fā)送數(shù)據(jù)/讀取數(shù)據(jù)while(!feof($fp)/推斷是否沒有到文件末尾$resp_data=fgets($fp); echo$resp_data.”;在 1.0 中,狀態(tài)碼 401 的含義是;假設(shè)返回“找不到文件”的提示, 則可用;header 函數(shù),其語句

48、為;未經(jīng)授權(quán):訪問由于憑據(jù)無效被拒絕 header(“ /1.0404NotFound“) header(”Location:xxx.php”);如何修改 SESSION 的生存時(shí)間?要留意這里的生存時(shí)間指的是什么?由于 session 默認(rèn)是基于 cookie 的,也就是說使用 session 會(huì)話技術(shù),首先是將 session 數(shù)據(jù)保存到效勞器端,其次會(huì)將sessionID 保存到掃瞄器端,保存在效勞器端的 session 文件生命周期由 php.ini 中的 session.gc_maxlifetime、gc_probability 和 gc_divisor 來打算,而保存在客戶端的se

49、ssionID 由客戶端 cookie 來打算,默認(rèn)其生存周期直到掃瞄器關(guān)閉,它由 php.ini 中的設(shè)置 session.cookie_lifetime 來把握,二者共同來打算 session 的生存時(shí)間,二者中的其中任意一個(gè)失效了,就有可能造成 session 失效,要依據(jù)自己的需求來打算是要從哪方面來修改其生存時(shí)間。參考 1:將 php.ini 中的 session.gc_maxlifetime 設(shè)置為 9999 重啟 apache參考 2:$savePath=“./session_save_dir/“;$lifeTime=小時(shí)*秒; session_save_path($savePa

50、th); session_set_cookie_params($lifeTime); session_start;參考 3:session_start;$lifeTime=24*3600;/保存一天setcookie(session_name,session_id,time+$lifeTime,“/“); 5.Howcanyougetroundthestatelessnatureof usingPHP?Yahoo最主要的兩個(gè)選擇是 SESSION 和 COOKIE。使用 SESSION 的方法是在每一頁的開頭加 session_start,然后利用$_SESSION 來存取 session 變

51、量。至于 cookie 你只需記著一個(gè)原則:在輸出任何文字之前調(diào)用 set_cookie函數(shù)設(shè)置 COOKIE,使用$_COOKIE 獵取傳播才智,引領(lǐng)將來cookie 變量。PHP 程序中如何設(shè)置當(dāng)前頁面的編碼為 utf-8?header(“content-type:text/html;charset=utf-8”)如何設(shè)置一個(gè) cookie 的名字為 username,值為 jack,并且讓此 cookie 一周后失效?setcookie(username,jack,time+7*24*3600)一個(gè)掃瞄器最多可以產(chǎn)生多少個(gè) cookie,每個(gè) cookie 文件最大不能超過多少? coo

52、kie 的總數(shù)量沒有限制,但是每個(gè)域名的 COOKIE 數(shù)量和每個(gè) COOKIE 的大小是有限制的!IE 每個(gè)域名限制為 50 個(gè)。Firefox 每個(gè)域名 cookie 限制為 50 個(gè)。Opera 每個(gè)域名 cookie 限制為 30 個(gè)。Safari/webkit 貌似沒有 cookie 限制。但是假設(shè) cookie 很多,則會(huì)使 header 大小超過效勞器的處理的限制,會(huì)導(dǎo)致錯(cuò)誤發(fā)生。不同掃瞄器間每個(gè) cookie 文件大小也不同F(xiàn)irefox 和 safari 是 4097 個(gè)字節(jié),包括名name、值value和等號。Opera 是 4096 個(gè)字節(jié),包括:名name、值value

53、和等號。IE 是 4095 個(gè)字節(jié),包括:名name、值value和等號。9.設(shè)置或讀取 session 之前,需要做什么?session_start前面不能有任何輸出,包括空行。 相關(guān)題目:使用 setcookie 函數(shù)前,需要留意什么? 前面不能有任何輸出,包括空行。請描述出七層網(wǎng)絡(luò)模型的名稱,由下到上可以使用中文描述 物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層說說下面這些這些協(xié)議的全稱和中文解釋提示:都是工作在應(yīng)用層 SMTP、POP3、 、FTP、DNS小米 SMTP(SimpleMailTransferProtocol)簡潔郵件傳輸協(xié)議POP3(PostOfficeP

54、rotocol3)郵局協(xié)議第 3 版 (HypertextTransferProtocol)超文本傳輸協(xié)議FTP(FileTransferProtocol文件傳輸協(xié)議DNS(DomainNameSystemandDomainNameServiceprotocol)域名系統(tǒng)效勞協(xié)議12.COOKIE、SESSION 的聯(lián)系和區(qū)分,多臺 web 效勞器如何共享 SESSION? COOKIE 和 SEESIO 都是用于會(huì)話機(jī)制,COOKIE 保存在客戶端,而 SESSION 則保存在效勞器端。在默認(rèn)狀況下,SESSION 機(jī)制是基于 COOKIE 的,每生成一個(gè) SESSIONID,都會(huì)將其發(fā)送到

55、掃瞄器端,讓后將其保存到 COOKIE 當(dāng)中,在下次懇求的時(shí)候,由掃瞄器攜帶這個(gè) COOKIE。要想多臺 web 效勞器共享 SESSION,可以利用 MySQL 數(shù)據(jù)庫存儲并共享Session 數(shù)據(jù)。傳播才智,引領(lǐng)將來13. /1.0 中,狀態(tài)碼 202202204403404500 的含義小米200OK 效勞器成功處理了懇求301MovedPermanently重定向懇求的 URL 已移走304NotModified未修改客戶的緩存資源是最的,要客戶端使用緩存403Forbidden制止懇求被效勞器拒絕了404NotFound 未找到資源InternalServerError(內(nèi)部效勞器錯(cuò)

56、誤)效勞器遇到一個(gè)錯(cuò)誤,使其無法為懇求供給效勞n 的運(yùn)行機(jī)制,n 方面應(yīng)留意什么?14.請描述 PHP(或其他語言)Sessio)Session 大型網(wǎng)站中 SessioSession小米session 機(jī)制是一種效勞器端的機(jī)制,它將數(shù)據(jù)保存到效勞器端。當(dāng)程序需要為某個(gè)客戶端的懇求創(chuàng)立一個(gè) session 的時(shí)候,效勞器首先檢查這個(gè)客戶端的懇求里是否已包含了一個(gè) session 標(biāo)識,稱為 sessionid,假設(shè)已包含一個(gè)sessionid 則說明以前已經(jīng)為此客戶端創(chuàng)立過 session,效勞器就依據(jù) sessionid 把這個(gè) session 檢索出來使用假設(shè)檢索不到,可能會(huì)建一個(gè),假設(shè)客

57、戶端懇求不包含 sessionid,則為此客戶端創(chuàng)立一個(gè) session 并且生成一個(gè)與此 session 相關(guān)聯(lián)的 sessionid,sessionid 的值應(yīng)當(dāng)是一個(gè)既不會(huì)重復(fù),又不簡潔被找到規(guī)律以仿造的字符串,這個(gè) sessionid 將被在本次響應(yīng)中返回給客戶端以 cookie 的形式保存。session 在大訪問量網(wǎng)站上確實(shí)影響系統(tǒng)性能,影響性能的緣由之一由文件系統(tǒng)設(shè)計(jì)造成,在同一個(gè)名目下超過 10000 個(gè)文件時(shí),文件的定位將格外耗時(shí),另外就是小文件的效率問題,一般我們的 session 數(shù)據(jù)都不會(huì)太大12K,假設(shè)有大量這樣 12K 的文件在磁盤上,IO 效率確定會(huì)很差,我們可以

58、承受改寫 session 存儲機(jī)制,比方存放到數(shù)據(jù)庫中。在子網(wǎng)掩碼為 48 的局域網(wǎng)中能夠同時(shí)使用的 IP 有多少個(gè)?億郵6 個(gè),48 換算成二進(jìn)制就是 11111111.11111111.11111111.11111000后面的三位用來表示主機(jī),前面的 29 位用來表示網(wǎng)絡(luò)。三位表示主機(jī),就是可以用來表示 238 個(gè),再減去網(wǎng)絡(luò)地址和播送地址,就是 6 個(gè)了。簡述 Tcp 協(xié)議的三次握手過程。億郵TCP 是主機(jī)對主機(jī)層的傳輸把握協(xié)議,供給牢靠的連接效勞,承受三次握手確認(rèn)建立一個(gè)連接:第一次握手:建立連接時(shí),客戶端發(fā)送 syn 包(syn=j)到效勞器,并進(jìn)入SYN_SEND 狀態(tài),等待效勞器

59、確認(rèn);其次次握手:效勞器收到 syn 包,必需確認(rèn)客戶的 SYNack=j+1,同時(shí)自己也發(fā)送一個(gè) SYN 包syn=k,即 SYN+ACK 包,此時(shí)效勞器進(jìn)入 SYN_RECV 狀態(tài);第三次握手:客戶端收到效勞器的 SYNACK 包,向效勞器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和效勞器進(jìn)入 ESTABLISHED 狀態(tài),完成三次握手。完成三次握手,客戶端與效勞器開頭傳送數(shù)據(jù)。你會(huì)用哪個(gè)函數(shù)設(shè)置當(dāng)前內(nèi)容的 Content-Type?卓望 header 函數(shù)P18.通過頁面輸入用戶名 abc 和密碼 123 登錄到 HYPERLINK “ :/ ,請寫出該次懇求的 HTT 傳播才智,引領(lǐng)將來協(xié)議報(bào)文(包括懇求行、消息報(bào)頭、懇求正文)。(卓望) HYPERLINK “ :/ /1.1“ POST /1.1Accept:text/html,application/xhtml+xml,*/* HYPERLINK “ :/localhost/a.html“ Referer: :/localhost/a.htmlAccept-Language:zh-CN User-Agent:Mozilla/5.0(compatible;MSIE10.0;WindowsNT6.1;WOW64;Trident/6.0;KB974 487)Content-Type:application/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論