php筆試面試題

轉載鏈接:http://www.yaojinbu.com/p/139.html


常見的php筆試題(附答案)蒐集整理

1.在PHP中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在哪個預定義變量中?而鏈接到當前頁面的URL又記錄在哪個預定義變量中?

答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];

2.執行程序段<?php echo 8%(-2) ?>將輸出什麼?

答:0

3.在HTTP 1.0中,狀態碼 401 的含義是什麼;如果返回“找不到文件”的提示,則可用 header 函數,其語句是什麼?

答:狀態碼401的含義是未授權; header(“HTTP/1.0 404 Not Found”)。

4.數組函數 arsort 的作用是什麼;語句 error_reporting(2047)的作用是什麼?

答:arsort的作用是對數組進行逆向排序並保持索引關係;All errors and warnings。

5.寫出一個正則表達式,過慮網頁上的所有JS腳本(即把標記及其內容都去掉)?

答:/<[^>].*?>.*?<\/>/si

6.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用什麼語句動態裝載PHP模塊,然後再用什麼語句使得Apache把所有擴展名爲php的文件都作爲PHP腳本處理?

答:LoadModule php5_module “D:/xampp/apache/bin/php5apache2.dll”;

AddType application/x-httpd-php-source .phps

AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml

7.語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區別是什麼?爲了避免多次包含同一文件,可以用什麼語句來代替它們?

答:發生異常時include產生警告,require產生致命錯誤;可以用require_once()/include_once()來替代他們。

8.類的屬性可以序列化後保存到 session 中,從而以後可以恢復整個類,這要用到哪個函數?

答:serialize() /unserialize()

9.要使得一個函數的參數可以是對變量的引用,那麼需要在php.ini中做何設置?

答:allow_call_time_pass_reference 設置爲 on 即可。

10.SQL 中LEFT JOIN的含義是什麼?如果 tbl_user記錄了學生的姓名(name)和學號(ID),tbl_score記錄了學生(有的學生考試以後被開除了,沒有其記錄)的學號(ID)和考試成績(score)以及考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,其SQL語句是什麼?

答:自然左外連接;

對應的SQL語句是: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是一種特殊的字符串,它的結束標誌有什麼要求?

答:結束標識符所在的行不能包含除”;”外的任何其它字符。

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內置函數的話還自己寫:

[php] view plain copy
  1. strrev($str){  
  2.     $len=strlen($str);  
  3.     $newstr = '';  
  4.     for($i=$len;$i>=0;$i--)  
  5.     {  
  6.         $newstr .= $str{$i};  
  7.     }  
  8.     return $newstr;  
  9. }  

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.如何使用下面的類,並解釋下面的代碼想要完成的任務?

[php] view plain copy
  1. class test  
  2. {  
  3.     get_test($num)  
  4.     {  
  5.         $num=md5(md5($num)."En");  
  6.         return $num;  
  7.     }  
  8. }  

答:用法:

$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)

[php] view plain copy
  1. get_ext1($file_name)  
  2. {  
  3.     return strrchr($file_name'.');  
  4. }  

2)

[php] view plain copy
  1. get_ext2($file_name)  
  2. {  
  3.     return substr($file_namestrrpos($file_name'.'));  
  4. }  

3)

[php] view plain copy
  1. get_ext3($file_name)  
  2. {  
  3.     return array_pop(explode('.'$file_name));  
  4. }  

4)

[php] view plain copy
  1. get_ext4($file_name)  
  2. {  
  3.     $p = pathinfo($file_name);  
  4.     return $p['extension'];  
  5. }  

5)

[php] view plain copy
  1. get_ext5($file_name)  
  2. {  
  3.     return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));  
  4. }  

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

答:其實 Session 還提供了一個函數 session_set_cookie_params(); 來設置 Session 的生存時間,該函數必須在 session_start() 函數調用之前調用:

[php] view plain copy
  1. <?php  
  2.     // 保存一天  
  3.     $lifeTime = 24 * 3600;  
  4.     session_set_cookie_params($lifeTime);  
  5.     session_start();  
  6.     $_SESSION["admin"] = true;  
  7. ?>  

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

答:代碼如下:

[php] view plain copy
  1. <?php  
  2.     function test($str){  
  3.          $arr = explode('_',$str);  
  4.          array_walk($arr,function(&$item,$key){  
  5.                 $item = ucfirst($item);  
  6.          });  
  7.          return implode($arr);  
  8.     }  
  9.     $aa='open_door';  
  10.     echo test($aa);  
  11. ?>  

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.下面的代碼用來做什麼?請解釋。

[php] view plain copy
  1. $date='08/26/2003';  
  2. 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或者GMagick,但這兩個函數庫並不內建於 PHP 之中,必須由系統管理員安裝在服務器上。

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

答:要用到服務器資源時纔打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器等。

29.防止SQL注入漏洞一般用addslashes函數。

30.PHP中傳值和傳引用、傳地址的區別是什麼?

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

31.如何通過javascript判斷一個窗口是否已經被屏蔽?

答:獲取open()的返回值,如果是null,就是屏蔽了。

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

答:首先,確認服務器硬件是否足夠支持當前的流量;其次,優化數據庫訪問;第三,禁止外部的盜鏈;第四,控制大文件的下載;第五,使用不同主機分流主要流量;第六,使用流量分析統計軟件。

本文整理自網絡,轉載請註明出處:http://www.yaojinbu.com/p/139.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章