首頁  >  文章  >  後端開發  >  33道php常見面試題目及答案

33道php常見面試題目及答案

WBOY
WBOY原創
2016-07-25 08:45:04845瀏覽

1.在PHP中,目前腳本的名稱(不包括路徑和查詢字串)記錄在預定義變數(1)中;而連結到目前頁面的URL記錄在預定義變數(2)中。

複製程式碼 程式碼如下:
答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];

2.執行程式段將輸出(3)。

複製程式碼 程式碼如下:
答:0

3.在HTTP 1.0中,狀態碼 401 的意思是(4);如果傳回「找不到檔案」的提示,則可用 header 函數,其語句為(5)。

複製程式碼 程式碼如下:
答:(4)未經授權 (5) header("HTTP/1.0 404 Not Found");

4.陣列函數 arsort 的作用是(6);語句 error_reporting(2047)的作用是(7)。

複製程式碼 程式碼如下:
答:(6)對陣列進行逆向排序並維持索引關係 (7)All errors and warnings

5.寫出一個正規表示式,過慮網頁上的所有JS/VBS腳本(即把標記及其內容都去掉):(9)。

複製程式碼 程式碼如下:
答:/].*?>.*?>/si

6.以Apache模組的方式安裝PHP,在檔案http.conf中首先要用語句(10)動態裝載PHP模組,

然後再用語句(11)讓Apache把所有副檔名為php的檔案都當作PHP腳本處理。

複製程式碼 程式碼如下:
答:(10) LoadModule php5_module "D:/xampp/apache/bin/php5apache2.dll"
(11) AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml

7.語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區別是(12);為了避免多次包含同一文件,可以用語句(13)來代替它們。

複製程式碼 程式碼如下:
答:(12) 發生異常時include產生警告require產生致命錯誤 (13) require_once()/include_once()

8.類別的屬性可以序列化後保存到 session 中,以便以後可以恢復整個類,這要用到的函數是(14)。

複製程式碼 程式碼如下:
答:serialize() /unserialize()

9.一個函數的參數不能是變數的引用,除非在php.ini中把(15)設為on.

複製程式碼 程式碼如下:
答:allow_call_time_pass_reference

10.SQL 中LEFT JOIN的意思是(16)。

如果 tbl_user記錄了學生的姓名(name)和學號(ID),

tbl_score記錄了學生(有的學生考試以後被開除了,沒有其記錄)的學號(ID)和考試成績(score)以及考試科目(subject),

若要列印出各學生姓名及對應的各科總成績,則可以用SQL語句(17)。

複製程式碼 程式碼如下:
答:(16) 自然左外連接
(17) select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.ID

11..在PHP中,heredoc是一種特殊的字串,它的結束標誌必須(18)。

複製程式碼 程式碼如下:
答:結束標識符所在的行不能包含任何其它字元除";"

12.用PHP印出前一天的時間格式是2006-5-10 22:21:21

複製程式碼 程式碼如下:
答:echo date('Y-m-d H:i:s', strtotime('-1 day'));

13.echo(),print(),print_r()的差別

複製程式碼 程式碼如下:
答:echo是語言結構,無回傳值;print功能和echo基本上相同,不同的是print是函數,有回傳值;print_r是遞歸列印,用來輸出陣列物件

14.如何實現字串翻轉?

複製程式碼 程式碼如下:
答:.用strrev函數唄,不准用PHP內建的就自己寫:
strrev($str)
{
$len=strlen($str);
$newstr = '';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}

15.實作中文字串截取無亂碼的方法。

複製程式碼 程式碼如下:
答:mb_substr()

16.使用php寫一段簡單查詢,查出所有姓名為「張三」的內容並列印出來

表名User

Name Tel Content Date

張三 13333663366 大專畢業 2006-10-11

張三 13612312331 本科畢業 2006-10-15

張四 021-55665566 中專畢業 2006-10-15

複製程式碼 程式碼如下:
答:SELECT Name,Tel,Content,Date FROM User WHERE Name='張三'

17.如何使用下面的類別,並解釋下面什麼意思?

class test
{
Get_test($num)
{
$num=md5(md5($num)."En");
return $num;
}
}

答:用法:

複製程式碼 程式碼如下:
$get_test = new test();
$result = $get_test->Get_test(2);

將$num變數進行兩次md5後回傳,第2次的md5中的參數,在第一次md5($num)後多加了En

18.使用五種以上方式取得一個檔案的副檔名

要求:dir/upload.image.jpg,找出 .jpg 或 jpg ,

複製程式碼 程式碼如下:
答:使用五種以上方式取得一個檔案的副檔名
1)
get_ext1($file_name)
{
return strrchr($file_name, '.');
}
2)
get_ext2($file_name)
{
return substr($file_name, strrpos($file_name, '.'));
}
3)
get_ext3($file_name)
{
return array_pop(explode('.', $file_name));
}
4)
get_ext4($file_name)
{
$p = pathinfo($file_name);
return $p['extension'];
}
5)
get_ext5($file_name)
{
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));
}

19.如何修改SESSION的生存時間

這個函式函式庫讓你處理和顯示各式格式的圖檔,它的另一個常見用途是製作所圖檔。 GD 以外的另一個選擇是ImageMagick,但這個函式函式庫並不內建在PHP 之中,必須由系統管理員安裝在伺服器上答:其實Session 還提供了一個函數session_set_cookie_params(); 來設定Session 的生存期的,函數必須在session_start() 函數呼叫之前呼叫:

<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>

20. 請寫一個函數,實現以下函數: 字串「open_door」 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”。

複製程式碼 程式碼如下:
答:
Function test($str){
$arr1=explode('_',$str);
//$arr2=array_walk($arr1,ucwords( ));
$str = implode(' ',$arr1);
return ucwords($str);
}
$aa='open_door';
echo test($aa);
?>

21. 如何用php的環境變數得到一個網頁位址的內容? ip位址又要怎麼得到?

複製程式碼 程式碼如下:
答:$_SERVSR[‘REQUEST_URI']
$_SERVER[‘REMOTE_ADDR']

22.求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數

複製程式碼 程式碼如下:
答:(strtotime(‘2007-3-6')-strtotime(‘2007-2-5'))/3600*24

23.表中有A B C三列,用SQL語句實現:當A列大於B列時選擇A列否則選擇B列,當B列大於C列時選擇B列否則選擇C列。

複製程式碼 程式碼如下:
答:select case when A>B then A else B end,
case when B>C then B else C end
From test

24.請簡述專案中最佳化sql語句執行效率的方法,從哪些面向,sql語句效能如何分析?

複製程式碼 程式碼如下:
答:(1)選擇最有效率的表名順序
(2)WHERE子句中的連接順序
(3)SELECT子句中避免使用‘*'
(4)用Where子句取代HAVING子句
(5)透過內部函數提高SQL效率
(6)避免在索引列上使用計算。
(7)提高GROUP BY 語句的效率, 可以透過將不需要的記錄在GROUP BY 之前過濾掉。

25.mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?

複製程式碼 程式碼如下:
mysql_fetch_row() 把資料庫的一列儲存在一個以零為基數的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。 mysql_fetch_assoc() 把資料庫的一列儲存在一個關聯陣列中,陣列的索引就是欄位名稱,例如我的資料庫查詢送回「first_name」、「last_name」、 「email」三個欄位,陣列的索引就是「first_name」、「last_name」和「email」。 mysql_fetch_array() 可以同時送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

26.下面的程式碼用來做什麼?請解釋。

$date='08/26/2003';print ereg_replace("([0-9] )/([0-9] )/([0-9] )","\2/\1/ \3",$date);

複製程式碼 程式碼如下:
這是把一個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。我的一個好朋友告訴我可以把這個正規表達式拆解為以下的語句,對於如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:
// 對應一個或更多0-9,後面緊跟著一個斜號$regExpression = "([0-9] )/";// 應一個或更多0-9,後面緊接著另一個斜號$ regExpression .= "([0-9] )/";// 再次對應一個或更多0-9$regExpression .= "([0-9] )";至於\2/\1/\3 則是用來對應括號,第一個括號對的是月份,

27.GD 函式庫用來做什麼?

複製程式碼 程式碼如下:
答:這個函式函式庫讓你處理和顯示各式格式的圖檔,它的另一個常見用途是製作所圖檔。 GD 以外的另一個選項是 ImageMagick,但這個函式庫並非內建於 PHP 之中,必須由系統管理員安裝在伺服器上

28.請舉例說明在你的開發過程中用什麼方法來加快頁面的載入速度

複製程式碼 程式碼如下:
答:要用到伺服器資源時才打開,及時關閉伺服器資源,資料庫新增索引,頁面可產生靜態,圖片等大檔案單獨伺服器。使用程式碼最佳化工具啦

29.防止SQL注射漏洞一般用__addslashes___函數。

30.PHP中傳值和傳引用、傳送位址的差別是什麼?

複製程式碼 程式碼如下:
答:傳值是把實參的值賦值給行參 那麼對行參的修改,不會影響實參的值
傳送地址 是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的如int 那麼傳地址以後,實參和行參都指向同一個物件

31.如何透過javascript判斷一個視窗是否已經被封鎖

複製程式碼 程式碼如下:
答:取得open()的回傳值,如果是null,就是屏蔽了

33.對於大流量的網站,您採用什麼樣的方法來解決訪問量問題

複製程式碼 程式碼如下:
答:首先,確認伺服器硬體是否足夠支援目前的流量
其次,優化資料庫存取。
第三,禁止外部的盜鏈。
第四,控制大檔案的下載。
第五,使用不同主機分流主要流量
第六,使用流量分析統計軟體

以上所述就是本文的全部內容了,希望能夠對大家學習php有所幫助。

面試題, php


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn