PHP簡答和程序筆試題目

普通題目

1.問題:請用最簡單的語言描述PHP是什麼?

答:PHP全稱:Hypertext Preprocessor,是一種用來開發動態網站的服務器腳本語言。

2.問題:echo,print()和print_r()有什麼區別?

答:echo是一個語言結構,沒有返回值。
print是一個函數,返回int類型的值[只能打印int string]。
print_r()是一個函數,返回bool類型值,按結構輸出變量的值,打印關於變量的易於理解的信息[數組、對象等]

3.問題:什麼是MVC?

答:MVC由Model(模型), View(視圖)和Controller(控制器)組成,PHP MVC可以更高效地管理好3個不同層的PHP代碼。

Model:數據信息存取層。

View:view層負責將應用的數據以特定的方式展現在界面上。

Controller:通常控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。

4.問題:在頁面中引用CSS有幾種方式?

答:在頁面中使用CSS有3中方式:

  • 引用外部CSS文件
  • 內部定義Style樣式
  • 內聯樣式

5.問題:PHP支持多繼承嗎?

答:不支持。PHP類只能繼承一個父類,並用關鍵字“extends”標識。

6.問題:請問PHP中echo和print有什麼區別?

這兩個看起來很相似,因爲它們都是將一些值打印在屏幕上。但是echo和print的本質區別在於:echo用來輸出字符串,顯示多個值的時候可以用逗號隔開。只支持基本類型,print不僅可以打印字符串值,而且可以打印函數的返回值。

7.問題:PHP中的PEAR是什麼?

答:PEAR也就是爲PHP擴展與應用庫(PHP Extension and Application Repository),它是一個PHP擴展及應用的一個代碼倉庫。

8.問題:PHP中的錯誤類型有哪些?

答:PHP中遇到的錯誤類型大致有3類。

提示:這都是一些非常正常的信息,而非重大的錯誤,有些甚至不會展示給用戶。比如訪問不存在的變量。

警告:這是有點嚴重的錯誤,將會把警告信息展示給用戶,但不會影響代碼的輸出,比如包含一些不存在的文件。

錯誤:這是真正的嚴重錯誤,比如訪問不存在的PHP類。

9.問題:如何在PHP中定義常量?

答:PHP中使用Define () 來定義常量。

define (“Newconstant”, 30);

10.問題:如何不使用submit按鈕來提交表單?

答:如果我們不想用submit按鈕來提交表單,我們也可以用超鏈接來提交,我們可以這樣寫代碼:<a href=”javascript: document.myform.submit();”>Submit Me</a>

11.問題:error_reporting(2047)什麼作用?

答:PHP 顯示所有錯誤 E_ALL

中級題目

1.問題:請使用正則寫一個函數驗證電子郵件的格式是否正確?

答:preg_match(‘/^[\w\-\.]+@[\w\-]+(\.\w+)+$/’,$email);

2.問題:如何用PHP和MySQL上傳視頻?

答:我們可以在數據庫中存放視頻的地址,而不需要將真正的視頻數據存在數據庫中。可以將視頻數據存放在服務器的指定文件夾下,上傳的默認大小是2MB,但是我們也可以在php.ini文件中修改max_file size選項來改變。

3.問題:請問GET和POST方法有什麼區別?

答:我們再網頁上填寫的表單信息都可以通過這兩個方法將數據傳遞到服務器上,當我們使用GET方法是,所有的信息都會出現在URL地址中,並且使用GET方法最多隻能傳遞1024個字符,所以如果在傳輸量小或者安全性不那麼重要的情況下可以使用GET方法。說到POST方法,最多可以傳輸2MB字節的數據,而且可以根據需要調節。

 

4.問題:打開php.ini中的Safe_mode,會影響哪些函數?列舉6個!

答:1用戶輸入輸出函數(fopen() file() require(),只能用於調用這些函數有相同腳本的擁有者)
2:創建新文件(限制用戶只在該用戶擁有目錄下創建文件)
3:用戶調用popen() systen() exec()等腳本,只有腳本處在safe_mode_exec_dir配置指令指定的目錄中才可能
4:加強HTTP認證,認證腳本擁有者的UID的劃入認證領域範圍內,此外啓用安全模式下,不會設置PHP_AUTH
5:mysql服務器所用的用戶名必須與調用mysql_connect()的文件的擁有者用戶名相同
6:受影響的函數變量以及配置命令達到40個

5.問題: 請使用PHP寫出冒泡排序算法的代碼。

答://冒泡排序
function maopao($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
for($j=0; $j<$count-$i-1; ++$j) {
if($arr[$j] > $arr[$j+1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}

6.問題: 請使用PHP寫出順序排序算法的代碼。

答://順序排序
function shunxu($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
$p = $i;
for($j=$i+1; $j<$count; ++$j) {
$p = $arr[$p] > $arr[$j] ? $j : $p;
}
if($p != $i) {
$tvalue = $arr[$i];
$arr[$i] = $arr[$p];
$arr[$p] = $tvalue;
}
}
return $arr;
}

7.問題:寫個函數用來對二維數組排序。

答:
function array_sort_by_any_row($array_name, $row_id, $order_type){
$array_temp=array();
foreach($array_name as $key=>$value){
$array_temp[$key]=$value[$row_id];
}
if($order_type===”ASC”){ //順序
asort($array_temp);
} else {
arsort($array_temp);
}
$result_array=array();
foreach($array_temp as $key=>$value){
$result_array[$key]=$array_name[$key];
}
return $result_array;
}
$arr = array(

array(‘num’=>5, ‘value’=>6),
array(‘num’=>2, ‘value’=>39),
array(‘num’=>36, ‘value’=>29)
);

$sortarr = array_sort_by_any_row($arr, ‘num’, ‘DESC’);
print_r($sortarr);

8.問題: 寫5個不同的函數,來截取一個全路徑的文件的擴展名,允許封裝php庫中已有的函數。

答:$path = str_replace(‘\\’, ‘/’,__FILE__);
echo $path.’<br />’;
function extname1($path) {
return strrchr($path, ‘.’);
}

function extname2($path) {
$position = strrpos($path, ‘.’);
return substr($path, $position);
}

function extname3($path) {
$arr = explode(‘.’, $path);
return $arr[count($arr) – 1];
}

function extname4($path) {
preg_match_all(‘/[\w\/\:\-]+\.([\w]+)$/’, $path, $out);
return $out[1][0];
}

function extname5($path) {
return preg_replace(‘/^[^\.]+\.([\w]+)$/’, ‘${1}’, basename($path));
}
print_r(extname5($path));

9.問題:一羣猴子排成一圈,按1,2,…,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下一隻猴子爲止,那隻猴子就叫做大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。

答:yuesefu環問題,PPC有很多針對這個問題的處理,我的就不上啦
function yuesefu($n,$m) {
$r=0;
for($i=2; $i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章