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