<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. PHP常見面試題及解析

    時間:2025-10-08 02:45:51 林惜 php語言

    PHP常見面試題及解析

      PHP程序員在面試的時候時常會遇到操作面試題這樣的問題,那么PHP程序員面試有哪些有價值的試題值得推薦呢?以下是小編為大家搜索整理的PHP常見面試題及解析,歡迎閱讀!

    PHP常見面試題及解析

      PHP常見面試題及解析

      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() 函數調用之前調用:

      /pic/p>

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

      /pic/p>

      $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 格式。我的一個好朋友告訴我可以把這個正規表達式拆解為以下的語句,對于如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:

      /pic/";/pic/";/pic/\\1/\\3 則是用來對應括號,第一個括號對的是月份,

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

      復制代碼代碼如下:

      答:這個函式庫讓你處理和顯示各式格式的圖檔,它的另一個常見用途是制作所圖檔。GD 以外的另一個選擇是 ImageMagick,但這個函式庫并不內建于 PHP 之中,必須由系統管理員安裝在伺服器上

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

      復制代碼代碼如下:

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

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

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

      復制代碼代碼如下:

      答:傳值是把實參的值賦值給行參 那么對行參的修改,不會影響實參的值

      傳地址 是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的如int 那么傳地址以后,實參和行參都指向同一個對象

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

      復制代碼代碼如下:

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

      33.對于大流量的網站,您采用什么樣的方法來解決訪問量問題

      復制代碼代碼如下:

      答:首先,確認服務器硬件是否足夠支持當前的流量

      其次,優化數據庫訪問。

      第三,禁止外部的盜鏈。

      第四,控制大文件的下載。

      第五,使用不同主機分流主要流量

      第六,使用流量分析統計軟件

      5道PHP面試題

      1、__FILE__表示什么意思?(5分)

      文件的完整路徑和文件名。如果用在包含文件中,則返回包含文件名。自 PHP 4.0.2 起,__FILE__ 總是包含一個絕對路徑,而在此之前的版本有時會包含一個相對路徑。

      2、如何獲取客戶端的IP地址?(5分)

      $_SERVER[‘REMOTE_ADDR’]

      3、寫出使用header函數跳轉頁面的語句(5分)

      Header(‘location:index.php’);

      4、$str是一段html文本,使用正則表達式去除其中的所有js腳本(5分)

      $pattern = ‘/<script.*>.+</script>/’; Preg_replace($pattern,’’,$str);

      5、寫出將一個數組里的空值去掉的語句(5分)

      $arr = array(‘’,1,2,3,’’,19);

      第一種方法:

      $array1 = array( ,1,,2,3); print_r(array_filter($array1, "del")); function del($var) { return(trim($var)); }

      第二種方法:

      $arr=array("",1,2,3,""); $ptn="/\S+/i"; print_r(preg_grep($ptn,$arr));

      6、寫出獲取當前時間戳的函數,及打印前一天的時間的方法(格式:年-月-日 時:分:秒) (5分)

      Time(); Date(“Y-m-d H:i:s”,Strtotime(“-1 day”));

      7、寫出php進行編碼轉換的函數(5分)

      Iconv(‘utf-8’,’gb2312’,$str);

      8、$str = “1,3,5,7,9,10,20”,使用什么函數可以把字符串str轉化為包含各個數字的數組?(5分)

      $arr = explode(“,”,$str);

      9、serialize() /unserialize()函數的作用(5分) serialize()和unserialize()在php手冊上的解釋是: serialize — 產生一個可存儲的值的表示,返回值為字符串,此字符串包含了表示 value 的字節流,不丟失其類型和結構,可以存儲于任何地方。 unserialize — 從已存儲的表示中創建 PHP 的值 具體用法:

      $arr = array(“測試1″,”測試2″,”測試3″);/pic/pic/p>

      /pic/p>

      $unsarr=unserialize($newarr);/pic/p>

      10、寫出一個函數,參數為年份和月份,輸出結果為指定月的天數(5分)

      Function day_count($year,$month){ Echo date(“t”,strtotime($year.”-”.$month.”-1”)); }

      11、一個文件的路徑為/wwwroot/include/page.class.php,寫出獲得該文件擴展名的方法(5分)

      $arr = pathinfo(“/wwwroot/include/page.class.php”); $str = substr($arr[‘basename’],strrpos($arr[‘basename’],’.’));

      12、你使用過哪種PHP的模板引擎?(5分) Smarty,thinkphp自帶的模板引擎

      13、請簡單寫一個類,實例化這個類,并寫出調用該類的屬性和方法的語句(5分)

      Class myclass{

      Public $aaa; Public $bbb; Public function myfun(){ Echo “this is my function”; }

      }

      $myclass = new myclass(); $myclass->$aaa; $myclass->myfun();

      14、本地mysql數據庫db_test里已建有表friend,數據庫的連接用戶為root,密碼為123 friend表字段為:id,name,age,gender,phone,email 請使用php連接mysql,選擇出friend表里age > 20的所有記錄打印結果,并統計出查詢出的結果總數。(5分)

      <?php $link = Mysql_connect(“local host”,”root”,”123”) or die(“數據庫連接失敗!”); Mysql_select_db(“db_test”,$link) or die(“選擇數據庫失敗!”); $sql = “select id,name,age,gender,phone,email from friend where age>20”; $result = mysql_query($sql); $count = mysql_num_rows($result); While($row = mysql_fetch_assoc($result)){ Echo $row[‘id’]; }

      15、以下有兩個表 user表 字段id (int),name (varchar) score表 字段uid (int),subject (varchar) ,score (int) score表的uid字段與user表的id字段關聯 要求寫出以下的sql語句 1)在user表里新插入一條記錄,在score表里插入與新加入的記錄關聯的兩條記錄(5分) 2)獲取score表里uid為2的用戶score最高的5條記錄(5分) 3)使用聯合查詢獲取name為“張三”的用戶的總分數(5分) 4)刪除name為“李四”的用戶,包括分數記錄(5分) 5)清空score表(5分) 6)刪除user表(5分)

      1). mysql_query(“ into user(name) values(‘test’)”); $id = mysql__id(); Mysql_query(“ into score(uid,subjext,score) values(“.$id.”,’english’,’99’)”);

      2).$sql = select uid,sunjext,score from score where uid=2 order by score desc limit 0,5;

      3).select s.score from score s RIGHT JOIN user u ON u.id=s.uid where u.name=’張三;

      4). from score where uid in(select id from user where name=’李四’);

      Delete from user where name=’李四’;

      5). from score;

      6). user;

    【PHP常見面試題及解析】相關文章:

    PHP常見面試題詳解02-28

    PHP常見面試題及答案11-04

    常見的PHP中級程序員面試題08-21

    php常見面試題及答案(33道)11-30

    php面試題08-10

    PHP經典面試題11-16

    PHP經典面試題集錦01-12

    PHP面試題集12-18

    PHP面試題及答案03-05

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人