php面試題與答案
PHP即“超文本預(yù)處理器”,是一種通用開源腳本語言。PHP是在服務(wù)器端執(zhí)行的腳本語言,與C語言類似,是常用的網(wǎng)站編程語言。面試題指在面試過程中所出的面試題目。面試題指在面試過程中所出的面試題目
精選php面試題及答案
一、基礎(chǔ)題
1. 寫出如下程序的輸出結(jié)果
<?php $str1 = null;
$str2 = false;
echo $str1==$str2 ? 相等 : 不相等;
$str3 = ;
$str4 = 0;
echo $str3==$str4 ? 相等 : 不相等;
$str5 = 0;
$str6 = 0;
echo $str5===$str6 ? 相等 : 不相等;?>
2. 寫出如下程序的輸出結(jié)果
<?php $a1 = null;
$a2 = false;
$a3 = 0;
$a4 = ;
$a5 = 0;
$a6 = null;
$a7 = array();
$a8 = array(array());
echo empty($a1) ? true : false;
echo empty($a2) ? true : false;
echo empty($a3) ? true : false;
echo empty($a4) ? true : false;
echo empty($a5) ? true : false;
echo empty($a6) ? true : false;
echo empty($a7) ? true : false;
echo empty($a8) ? true : false;?>
3. 寫出如下程序的輸出結(jié)果
<?php $test = aaaaaa;
$abc = & $test;
unset($test);
echo $abc;?>
4. 寫出如下程序的輸出結(jié)果
<?php $count = 5;
function get_count(){
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();?>
5. 寫出如下程序的輸出結(jié)果
<?php $GLOBALS[var1] = 5;
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1;
echo $var2;?>
6. 寫出如下程序的輸出結(jié)果
<?php function get_arr($arr){
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);?>
7. 使用五種以上方式獲取一個(gè)文件的擴(kuò)展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必須使用PHP自帶的處理函數(shù)進(jìn)行處理,方法不能明顯重復(fù),可以封裝成函數(shù),比如 get_ext1($file_name), get_ext2($file_name)
二、算法題
1. 使用PHP描述冒泡排序和快速排序算法,對象可以是一個(gè)數(shù)組
2. 使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個(gè)有序數(shù)組
3. 寫一個(gè)二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調(diào)用php內(nèi)置函數(shù)【答案】
(以下答案不一定是最好的,只是一個(gè)簡單的參考)
騰訊php程序員面試題目及答案
設(shè)計(jì)任務(wù):
1、最近總有人騷擾我們的投票模塊,需要你來設(shè)計(jì)一個(gè)投票限制的東東
要求如下:
1)要求每個(gè)QQ號(hào)碼(假設(shè)此QQ號(hào)碼在UNIT32 內(nèi)可以表示)10分鐘這內(nèi)只能投5票。
2)我們的用戶很踴躍,平均每天要有2000萬人左右通過此程序投票。
說明:
1)無需寫代碼,只需要圖跟文字即可。
2)對于關(guān)鍵邏輯,請用圖加代碼表示出來,這也是對你文字表達(dá)能力的`一個(gè)考驗(yàn)。
3)對你能想到的所有的邊界條件列出來,這是對你邏輯思維全面與敏捷性的考驗(yàn)。
4)存儲(chǔ)部分,盡你所能吧。如果,你需要一個(gè)自己設(shè)計(jì)的存儲(chǔ)層,那么把這個(gè)存儲(chǔ)層的實(shí)現(xiàn),用文字+圖片方式描述清楚,要是設(shè)計(jì)合理,你會(huì)獲得華麗的獎(jiǎng)分.
解答:
核心問題:如何統(tǒng)計(jì)10分鐘之內(nèi)投了5票?
首先:以秒為鍵切分?jǐn)?shù)據(jù)集,10*60=600個(gè)時(shí)間戳桶,并添加一個(gè)Forbid令牌桶
然后:每個(gè)數(shù)據(jù)集內(nèi),以qq號(hào)碼為鍵,vote次數(shù)為值
OK,已經(jīng)成功轉(zhuǎn)換為key-value方式存儲(chǔ),2000萬的日投票,除以86400秒,并發(fā)231.48rps,使用memcache能夠輕松勝任。
數(shù)據(jù)集ID:201006072134
【QQ號(hào)碼:Vote次數(shù)】
201006072134 | 201006072135 | 201006072136
【12345:3】 | 【12345:3】 | 【12345:3】
【88888:2】 | 【88888:3】 | 【88888:3】
比較基礎(chǔ)的php面試題及答案
編程題:
1. 寫一個(gè)函數(shù),盡可能高效的,從一個(gè)標(biāo)準(zhǔn) url 里取出文件的擴(kuò)展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
答案1:
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(“.”,$file);
return $ext[1];
}
答案2:
function getExt($url) {
$url = basename($url);
$pos1 = strpos($url,”.”);
$pos2 = strpos($url,”?”);
if(strstr($url,”?”)){
return substr($url,$pos1 + 1,$pos2 – $pos1 – 1);
} else {
return substr($url,$pos1);
}
}
2. 在 HTML 語言中,頁面頭部的 meta 標(biāo)記可以用來輸出文件的編碼格式,以下是一個(gè)標(biāo)準(zhǔn)的 meta 語句
比較基礎(chǔ)的php面試題及答案-填空題
填空題:
1.在PHP中,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量__$_SERVER['PHP_SELF']__中;而鏈接到當(dāng)前頁面的URL記錄在預(yù)定義變量__$_SERVER['HTTP_REFERER']__
中
2.執(zhí)行程序段將輸出__0__。
3.在HTTP 1.0中,狀態(tài)碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數(shù),其語句為____。
4.數(shù)組函數(shù) arsort 的`作用是__對數(shù)組進(jìn)行逆向排序并保持索引關(guān)系__;語句 error_reporting(2047)的作用是__報(bào)告所有錯(cuò)誤和警告__。
5.PEAR中的數(shù)據(jù)庫連接字符串格式是____。
6.寫出一個(gè)正則表達(dá)式,過慮網(wǎng)頁上的所有JS/VBS腳本(即把scrīpt標(biāo)記及其內(nèi)容都去掉):preg_replace(“//si”, “newinfo”, $script);
7.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動(dòng)態(tài)裝載PHP模塊,然后再用語句____使得Apache把所有擴(kuò)展名為php的文件都作為PHP腳本處理。
LoadModule php5_module “c:/php/php5apache2.dll” , AddType application/x-httpd-php .php,
六道php面試題附答案
1、不用新變量直接交換現(xiàn)有兩個(gè)變量的值. (考php基本功)
答案:list($a, $b) = array($b, $a);
2、PHP數(shù)字金額轉(zhuǎn)大小格式,同時(shí)說明思路 (考數(shù)組掌握)
3、SQL查詢語句如下:
select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44)
讓結(jié)果按10,32,22,76,13,44的順序檢索出來,請問如何書寫? (sql能力)
4、簡單寫一個(gè)上傳文件程序,要求同時(shí)上傳文件數(shù)量可以人為控制 (邏輯能力)
5、php同時(shí)調(diào)用3個(gè)數(shù)據(jù)庫中的一個(gè)表的`信息(架設(shè)A.a.aid=B.b.bid=C.c.cid),請說明思路及書寫部分代碼
6、現(xiàn)有一IM軟件,使用id、email做為注冊條件,假設(shè)已注冊1040人,有一zh_cn論壇,使用id、email做為注冊條件,假設(shè)已注冊200人,有一en_us論壇,使用id、email做為注冊條件,假設(shè)已注冊150人
要求:將三者同步,使用統(tǒng)一的注冊流程 ,寫出設(shè)計(jì)思路
PHP面試題附答案
1. Which of the following will not add john to the users array?
1. $users[] = ‘john’;
2. array_add($users,’john’);
3. array_push($users,’john’);
4. $users ||= ‘john’;
Answer: 2,4
2. What’s the difference between sort(), asort() and ksort(),rsort()? Under what circumstances would you use each of these?
sort(): 本函數(shù)對數(shù)組的值進(jìn)行排序。當(dāng)本函數(shù)結(jié)束時(shí)數(shù)組單元將被從最低到最高重新安排,array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
asort(): 這個(gè)函數(shù)將數(shù)組的值重新排序,由小至大排列。數(shù)組的'索引亦跟著值的 順序而變動(dòng)。當(dāng)您在程序中需要重新整理數(shù)組值的 順序時(shí),就可以使用這個(gè)函數(shù)。
ksort(): 對數(shù)組按照鍵名排序,保留鍵名到數(shù)據(jù)的關(guān)聯(lián)。本函數(shù)主要用于關(guān)聯(lián)數(shù)組。
rsort(): 本函數(shù)對數(shù)組進(jìn)行逆向排序(最高到最低)。與sort()執(zhí)行相反的操作。