PHP面試題集錦(3)

1鹿响、$_GET,$_POST观蜗,$_REQUEST 三者的區(qū)別

從一個簡單的理解來看在PHP中$_GET $_POST $_REQUEST都是接受數據了蒂誉,get接受的是url參數而post可以說是由表單post過來的數據,而request是可以接受兩者的數據从橘,這個就是他們基礎的區(qū)別所在了念赶,下面一起來看看它們的區(qū)別證明础钠。

PHP中有$_REQUEST與$_POST、$_GET用于接受表單數據叉谜。

一旗吁、$_REQUEST與$_POST、$_GET的區(qū)別和特點

$_REQUEST[]具用$_POST[] $_GET[]的功能停局,但是$_REQUEST[]比較慢很钓。通過POST和GET方法提交的所有數據都可以通過$_REQUEST數組獲得。

二董栽、$_POST码倦、$_GET的區(qū)別和特點

1. GET是從服務器上獲取數據,POST是向服務器傳送數據锭碳。

2. GET是把參數數據隊列加到提交表單的ACTION屬性所指的URL中袁稽,值和表單內各個字段一一對應,在URL中可以看到擒抛。POST是通過HTTP POST機制推汽,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程歧沪。

3. 對于GET方式提交表單數據歹撒,服務器端用$_GET[‘name’]獲取變量的值,對于POST方式提交表單數據诊胞,服務器端用$_POST[‘name’]獲取提交的數據暖夭,當然,兩者都可以通過$_REQUEST[‘name’]獲得表單數據撵孤。對于REQUEST方式提交表單數據迈着,服務器端用$_REQUEST[‘name’]獲取變量的值,但這種方式很少用早直。

4. GET傳送的數據量較小寥假,不能大于2KB市框。POST傳送的數據量較大霞扬,一般被默認為不受限制。但理論上枫振,一般認為不能超過100KB喻圃。

5. GET安全性非常低,POST安全性較高粪滤。

6. GET表單值可以通過_GET獲雀摹;但通過action的url設置的參數總是獲取不到的杖小,<form method="get" action="a.asp?b=b"></form>

跟<form method="get"action="a.asp"></form>是一樣的肆汹,也就是說愚墓,在這種情況下,GET方式會忽略action頁面后邊帶的參數列表昂勉。POST表單值可以通過_POST獲壤瞬帷;但通過action的url參數設置的參數則可以不能通過_POST獲取到岗照。action=test.php?id=1這種就是GET方式傳值村象,可以用$_REQUEST和$_GET接受傳值,但不能用POST方式獲取到值攒至,即使表單是POST方式提交厚者。所在,在提交表單時迫吐,如果action中同時有參數库菲,最好只能通過POST表單方式,對于表單內數據志膀,直接通過POST獲取蝙昙,對于action中參數,童工GET獲取梧却。

在做數據查詢時奇颠,建議用GET方式,而在做數據添加放航、修改或刪除時烈拒,建議用POST方式。

request是先讀取 get再讀post 的广鳍, 同時存在荆几, 即覆蓋掉前面的變量。

2赊时、$_SESSION吨铸,$_COOKIE 兩者的區(qū)別與聯(lián)系


1、cookie數據存放在客戶的瀏覽器上祖秒,session數據放在服務器上诞吱。

2、cookie不是很安全竭缝,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙考慮到安全應當使用session房维。

3、session會在一定時間內保存在服務器上抬纸。當訪問增多咙俩,會比較占用你服務器的性能考慮到減輕服務器性能方面,應當使用COOKIE湿故。

4阿趁、單個cookie保存的數據不能超過4K膜蛔,很多瀏覽器都限制一個站點最多保存20個cookie。

cookie 和session 的聯(lián)系:

session是通過cookie來工作的

session和cookie之間是通過$_COOKIE['PHPSESSID']來聯(lián)系的脖阵,通過$_COOKIE['PHPSESSID']可以知道session的id飞几,從而獲取到其他的信息。

3独撇、include屑墨、require 有什么區(qū)別,include可以重復引入同一文件嗎纷铣?

:include如果引入的文件不存在,試圖繼續(xù)往下執(zhí)行,報一個warning

(如果你不介意之前的內容是否被包含卵史,之后的內容都要執(zhí)行,就使用include)

而require如果引入的文件不存在,報fatal error,不再繼續(xù)執(zhí)行.

(如果之前的內容一定要被包含搜立,才允許繼續(xù)執(zhí)行之后的代碼以躯,就使用require)

4.Include/require 與 include_once /require_once的區(qū)別

_once 會自動判斷文件是否已經引入,如果引入,不再重復執(zhí)行.

即:保證被包含文件只可能被引入一次.

(如果包含的文件里有定義函數,那么被包含的文件只能被包含一次啄踊,如果多次包含忧设,就會出現(xiàn)函數重定義的錯誤,php是不運行函數重定義的颠通,會出現(xiàn)致命錯誤址晕,之后代碼不在運行)

=======================================================

有的文件不允許被包含多次?

可以用_once來控制,

但是,如果從文件的設計上,比較規(guī)范,能保證肯定不會出現(xiàn)多次包含的錯誤,

這種情況下 建議用include

因為include_once要檢測之前有沒有包含,效率沒有include高

5、寫一個函數顿锰,顯示前天的時間 (年-月-日 時:分:秒)

$a = date("Y-m-d H:i:s", strtotime("-1 day"));

6谨垃、寫一個函數,驗證郵箱的格式是否正確

function ?checkEmail($email){

? ? ? ? ? $pregEmail="/([\w\-]+\@[\w\-]+\.[\w\-]+)/";

? ? ? ? ? return ? ?preg_match($pregEmail,$email);

}

7硼控、有一個data.txt文件刘陶,一行作為一條記錄,請寫一個函數牢撼,分頁顯示data.txt文件的內容匙隔,每頁10條記錄。

8熏版、寫一個自動加載類

9纷责、寫一個函數,顯示當前目錄下的文件及目錄

function ? ? my_scandir($dir)

{

? ? ? ? ? ? ?$files=array();

? ? ? ? ? ? ? if($handle= opendir($dir) ) {

? ? ? ? ? ? ? ? ? ? ? ? while( ($file= readdir($handle)) !== false ) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if($file!=".."&&$file!=".") {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(is_dir($dir."/".$file) ) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$files[$file] = scandir($dir."/".$file);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$files[] =$file;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? closedir($handle);

? ? ? ? ? ? ? ? ? ? ? return$files;

? ? ? ? ? ? ? ? }

}

10纳决、這是一個標準URL (http://127.0.0.1/test.php?type=1)碰逸,請寫一個函數,用最高效的方式獲取所訪問的文件的后綴名


11阔加、mysql數據庫中,innodb 和 myisam 區(qū)別(只少5點)


1满钟、 存儲結構

MyISAM:每個MyISAM在磁盤上存儲成三個文件胜榔。第一個文件的名字以表的名字開始胳喷,擴展名指出文件類型。.frm文件存儲表定義夭织。數據文件的擴展名為.MYD (MYData)吭露。索引文件的擴展名是.MYI (MYIndex)。

InnoDB:所有的表都保存在同一個數據文件中(也可能是多個文件尊惰,或者是獨立的表空間文件)讲竿,InnoDB表的大小只受限于操作系統(tǒng)文件的大小,一般為2GB弄屡。

2题禀、 存儲空間

MyISAM:可被壓縮,存儲空間較小膀捷。支持三種不同的存儲格式:靜態(tài)表(默認迈嘹,但是注意數據末尾不能有空格,會被去掉)全庸、動態(tài)表秀仲、壓縮表。

InnoDB:需要更多的內存和存儲壶笼,它會在主內存中建立其專用的緩沖池用于高速緩沖數據和索引神僵。


3、 事務支持

MyISAM:強調的是性能覆劈,每次查詢具有原子性,其執(zhí)行數度比InnoDB類型更快挑豌,但是不提供事務支持。

InnoDB:提供事務支持事務墩崩,外部鍵等高級數據庫功能氓英。 具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (ACID compliant))型表鹦筹。

4铝阐、 CURD操作

MyISAM:如果執(zhí)行大量的SELECT,MyISAM是更好的選擇铐拐。(因為沒有支持行級鎖)徘键,在增刪的時候需要鎖定整個表格,效率會低一些遍蟋。相關的是innodb支持行級鎖吹害,刪除插入的時候只需要鎖定改行就行,效率較高

InnoDB:如果你的數據執(zhí)行大量的INSERT或UPDATE虚青,出于性能方面的考慮它呀,應該使用InnoDB表。DELETE 從性能上InnoDB更優(yōu),但DELETE FROM table時纵穿,InnoDB不會重新建立表下隧,而是一行一行的刪除,在innodb上如果要清空保存有大量數據的表谓媒,最好使用truncate table這個命令淆院。

5、 外鍵

MyISAM:不支持

InnoDB:支持

12句惯、有一張評論表comment(uid 用戶ID土辩,post_id 評論ID,article_id 文章ID)抢野,請寫一條sql語句查詢出提交評論最多的3個用戶id


select ?user_id ,count(post_id) as sum_post ?from comment ?group by user_id ?order by sum_post ?desc

13拷淘、怎么解決ajax跨域請求

1、允許單個域名訪問

2蒙保、允許多個域名訪問

3辕棚、允許所有域名訪問

14、請講下你對MVC的理解


15邓厕、要實現(xiàn)一個在線倒計時搶購功能逝嚎,需要注意哪些問題?怎么解決這些問題详恼?


16补君、請講下你對高并發(fā)大訪問量的網站解決方案


首先,確認服務器硬件是否足夠支持當前的流量昧互。

普通的P4服務器一般最多能支持每天10萬獨立IP挽铁,如果訪問量比這個還要大,那么必須首先配置一臺更高性能的專用服務器才能解決問題敞掘,否則怎么優(yōu)化都不可能徹底解決性能問題叽掘。

其次,優(yōu)化數據庫訪問玖雁。

前臺實現(xiàn)完全的靜態(tài)化當然最好更扁,可以完全不用訪問數據庫,不過對于頻繁更新的網站赫冬,靜態(tài)化往往不能滿足某些功能浓镜。

緩存技術就是另一個解決方案,就是將動態(tài)數據存儲到緩存文件中劲厌,動態(tài)網頁直接調用這些文件膛薛,而不必再訪問數據庫,WordPress和Z-Blog都大量使用這種緩存技術补鼻。

如果確實無法避免對數據庫的訪問哄啄,那么可以嘗試優(yōu)化數據庫的查詢SQL.避免使用Select * from這樣的語句雅任,每次查詢只返回自己需要的結果,避免短時間內的大,盡量做到"所查即所得" ,遵循以小表為主,附表為輔,查詢條件先索引,先小后大的原則,提高查詢效率.

第三增淹,禁止外部的盜鏈椿访。

外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力乌企,因此應該嚴格限制外部對于自身的圖片或者文件盜鏈虑润,好在目前可以簡單地通過refer來控制盜鏈,Apache自己就可以通過配置來禁止盜鏈加酵,IIS也有一些第三方的ISAPI可以實現(xiàn)同樣的功能拳喻。當然,偽造refer也可以通過代碼來實現(xiàn)盜鏈猪腕,不過目前蓄意偽造refer盜鏈的還不多冗澈,可以先不去考慮,或者使用非技術手段來解決陋葡,比如在圖片上增加水印亚亲。

第四,控制大文件的下載腐缤。

大文件的下載會占用很大的流量捌归,并且對于非SCSI硬盤來說,大量文件下載會消耗CPU岭粤,使得網站響應能力下降惜索。因此,盡量不要提供超過2M的大文件下載剃浇,如果需要提供巾兆,建議將大文件放在另外一臺服務器上。

第五虎囚,使用不同主機分流主要流量

將文件放在不同的主機上角塑,提供不同的鏡像供用戶下載。比如如果覺得RSS文件占用流量大淘讥,那么使用FeedBurner或者FeedSky等服務將RSS輸出放在其他主機上圃伶,這樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不占用太多資源了适揉。




17.你用什么方法檢查 PHP 腳本的執(zhí)行效率(通常是腳本執(zhí)行時間)和數據庫 SQL 的效率(通常是數據庫 Query 時間)留攒, 并定位和分析腳本執(zhí)行和數據庫查詢的瓶頸所在?


1.PHP執(zhí)行時間:??

$begin=microtime(true); //獲取程序開始執(zhí)行的時間?

// some code here 待執(zhí)行的代碼

?$stop=microtime(true);?//獲取程序執(zhí)行結束的時間?

list($m0,$s0)=explode(" ",$begin);

?list($m1,$s1)=explode(" ",$stop);

?$runtime=($s1+$m1-$s0-$m0)*1000;?

echo? ? ‘當前腳本執(zhí)行時間:’.$etime-$stime.'微秒';

?2.SQL執(zhí)行時間(其實和上面一樣):??

$begin=microtime();

?mysql_query($sql);

?$stop=microtime();?

list($m0,$s0)=explode(" ",$begin);

?list($m1,$s1)=explode(" ",$stop);?

$runtime=round(($s1+$m1-$s0-$m0)*1000,4);?

echo '當前腳本執(zhí)行時間:'.$runtime.'ms';

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末嫉嘀,一起剝皮案震驚了整個濱河市炼邀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剪侮,老刑警劉巖拭宁,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洛退,死亡現(xiàn)場離奇詭異,居然都是意外死亡杰标,警方通過查閱死者的電腦和手機兵怯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腔剂,“玉大人媒区,你說我怎么就攤上這事〉” “怎么了袜漩?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長湾碎。 經常有香客問我宙攻,道長,這世上最難降的妖魔是什么介褥? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任座掘,我火速辦了婚禮,結果婚禮上柔滔,老公的妹妹穿的比我還像新娘溢陪。我一直安慰自己,他們只是感情好廊遍,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布嬉愧。 她就那樣靜靜地躺著,像睡著了一般喉前。 火紅的嫁衣襯著肌膚如雪没酣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天卵迂,我揣著相機與錄音裕便,去河邊找鬼。 笑死见咒,一個胖子當著我的面吹牛偿衰,可吹牛的內容都是我干的。 我是一名探鬼主播改览,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼下翎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宝当?” 一聲冷哼從身側響起视事,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庆揩,沒想到半個月后俐东,有當地人在樹林里發(fā)現(xiàn)了一具尸體跌穗,經...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年虏辫,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚌吸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡砌庄,死狀恐怖羹唠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情鹤耍,我是刑警寧澤肉迫,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布验辞,位于F島的核電站稿黄,受9級特大地震影響,放射性物質發(fā)生泄漏跌造。R本人自食惡果不足惜杆怕,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壳贪。 院中可真熱鬧陵珍,春花似錦、人聲如沸违施。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磕蒲。三九已至留潦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辣往,已是汗流浹背兔院。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留站削,地道東北人坊萝。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像许起,于是被迫代替她去往敵國和親十偶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理园细,服務發(fā)現(xiàn)惦积,斷路器,智...
    卡卡羅2017閱讀 134,719評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法珊肃,類相關的語法荣刑,內部類的語法馅笙,繼承相關的語法,異常的語法厉亏,線程的語...
    子非魚_t_閱讀 31,668評論 18 399
  • 隨著房價壓力與日俱增,不少人抱著先有再置換的想法恬试,買了小戶型的房子作為過渡窝趣,但即使房子小,但想要積極生活的心卻不減...
    居之使然閱讀 3,837評論 1 6
  • 最近經逞挡瘢看到這句話:你知道了很多哑舒,卻為什么過不好自己的人生?令我想到了另外一句話:看不見的能量影響著看的見的人生幻馁。...
    谷應閱讀 1,166評論 0 1