av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語(yǔ)言

PHP常見(jiàn)面試題及解析

時(shí)間:2025-04-26 03:37:10 林惜 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

PHP常見(jiàn)面試題及解析

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

PHP常見(jiàn)面試題及解析

  PHP常見(jiàn)面試題及解析

  1.在PHP中,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量(1)中;而鏈接到當(dāng)前頁(yè)面的URL記錄在預(yù)定義變量(2)中。

  復(fù)制代碼代碼如下:

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

  2.執(zhí)行程序段將輸出(3)。

  復(fù)制代碼代碼如下:

  答:0

  3.在HTTP 1.0中,狀態(tài)碼 401 的含義是(4);如果返回“找不到文件”的提示,則可用 header 函數(shù),其語(yǔ)句為(5)。

  復(fù)制代碼代碼如下:

  答:(4)未授權(quán) (5) header("HTTP/1.0 404 Not Found");

  4.數(shù)組函數(shù) arsort 的作用是(6);語(yǔ)句 error_reporting(2047)的作用是(7)。

  復(fù)制代碼代碼如下:

  答:(6)對(duì)數(shù)組進(jìn)行逆向排序并保持索引關(guān)系 (7)All errors and warnings

  5.寫(xiě)出一個(gè)正則表達(dá)式,過(guò)慮網(wǎng)頁(yè)上的所有JS/VBS腳本(即把標(biāo)記及其內(nèi)容都去掉):(9)。

  復(fù)制代碼代碼如下:

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

  6.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語(yǔ)句(10)動(dòng)態(tài)裝載PHP模塊,

  然后再用語(yǔ)句(11)使得Apache把所有擴(kuò)展名為php的文件都作為PHP腳本處理。

  復(fù)制代碼代碼如下:

  答:(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.語(yǔ)句 include 和 require 都能把另外一個(gè)文件包含到當(dāng)前文件中,它們的區(qū)別是(12);為了避免多次包含同一文件,可以用語(yǔ)句(13)來(lái)代替它們。

  復(fù)制代碼代碼如下:

  答:(12) 發(fā)生異常時(shí)include產(chǎn)生警告require產(chǎn)生致命錯(cuò)誤 (13) require_once()/include_once()

  8.類的屬性可以序列化后保存到 session 中,從而以后可以恢復(fù)整個(gè)類,這要用到的函數(shù)是(14)。

  復(fù)制代碼代碼如下:

  答:serialize() /unserialize()

  9.一個(gè)函數(shù)的參數(shù)不能是對(duì)變量的引用,除非在php.ini中把(15)設(shè)為on.

  復(fù)制代碼代碼如下:

  答:allow_call_time_pass_reference

  10.SQL 中LEFT JOIN的含義是(16)。

  如果 tbl_user記錄了學(xué)生的姓名(name)和學(xué)號(hào)(ID),

  tbl_score記錄了學(xué)生(有的學(xué)生考試以后被開(kāi)除了,沒(méi)有其記錄)的學(xué)號(hào)(ID)和考試成績(jī)(score)以及考試科目(subject),

  要想打印出各個(gè)學(xué)生姓名及對(duì)應(yīng)的的各科總成績(jī),則可以用SQL語(yǔ)句(17)。

  復(fù)制代碼代碼如下:

  答:(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是一種特殊的字符串,它的結(jié)束標(biāo)志必須(18)。

  復(fù)制代碼代碼如下:

  答:結(jié)束標(biāo)識(shí)符所在的行不能包含任何其它字符除";"

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

  復(fù)制代碼代碼如下:

  答:echo date(Y-m-d H:i:s, strtotime(-1 day));

  13.echo(),print(),print_r()的區(qū)別

  復(fù)制代碼代碼如下:

  答:echo是語(yǔ)言結(jié)構(gòu),無(wú)返回值;print功能和echo基本相同,不同的是print是函數(shù),有返回值;print_r是遞歸打印,用于輸出數(shù)組對(duì)象

  14.如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?

  復(fù)制代碼代碼如下:

  答:.用strrev函數(shù)唄,不準(zhǔn)用PHP內(nèi)置的就自己寫(xiě):

  strrev($str)

  {

  $len=strlen($str);

  $newstr = ;

  for($i=$len;$i>=0;$i--)

  {

  $newstr .= $str{$i};

  }

  return $newstr;

  }

  15.實(shí)現(xiàn)中文字串截取無(wú)亂碼的方法。

  復(fù)制代碼代碼如下:

  答:mb_substr()

  16.使用php寫(xiě)一段簡(jiǎn)單查詢,查出所有姓名為“張三”的內(nèi)容并打印出來(lái)

  表名User

  Name Tel Content Date

  張三 13333663366 大專畢業(yè) 2006-10-11

  張三 13612312331 本科畢業(yè) 2006-10-15

  張四 021-55665566 中專畢業(yè) 2006-10-15

  復(fù)制代碼代碼如下:

  答:SELECT Name,Tel,Content,Date FROM User WHERE Name=張三

  17.如何使用下面的類,并解釋下面什么意思?

  class test

  {

  Get_test($num)

  {

  $num=md5(md5($num)."En");

  return $num;

  }

  }

  答:用法:

  復(fù)制代碼代碼如下:

  $get_test = new test();

  $result = $get_test->Get_test(2);

  將$num變量進(jìn)行兩次md5后返回,第2次的md5中的參數(shù),在第一次md5($num)后多加了En

  18.使用五種以上方式獲取一個(gè)文件的擴(kuò)展名

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

  復(fù)制代碼代碼如下:

  答:使用五種以上方式獲取一個(gè)文件的擴(kuò)展名

  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的生存時(shí)間

  這個(gè)函式庫(kù)讓你處理和顯示各式格式的圖檔,它的另一個(gè)常見(jiàn)用途是制作所圖檔。GD 以外的另一個(gè)選擇是 ImageMagick,但這個(gè)函式庫(kù)并不內(nèi)建于 PHP 之中,必須由系統(tǒng)管理員安裝在伺服器上答:其實(shí) Session 還提供了一個(gè)函數(shù) session_set_cookie_params(); 來(lái)設(shè)置 Session 的生存期的,該函數(shù)必須在 session_start() 函數(shù)調(diào)用之前調(diào)用:

  // 保存一天

  $lifeTime = 24 * 3600;

  session_set_cookie_params($lifeTime);

  session_start();

  $_SESSION["admin"] = true;

  

  20. 請(qǐng)寫(xiě)一個(gè)函數(shù),實(shí)現(xiàn)以下功能: 字符串“open_door” 轉(zhuǎn)換成 “OpenDoor”、”make_by_id” 轉(zhuǎn)換成 ”MakeById”。

  復(fù)制代碼代碼如下:

  答:

  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的環(huán)境變量得到一個(gè)網(wǎng)頁(yè)地址的內(nèi)容?ip地址又要怎樣得到?

  復(fù)制代碼代碼如下:

  答:$_SERVSR[‘REQUEST_URI]

  $_SERVER[‘REMOTE_ADDR]

  22.求兩個(gè)日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)

  復(fù)制代碼代碼如下:

  答:(strtotime(‘2007-3-6)-strtotime(‘2007-2-5))/3600*24

  23.表中有A B C三列,用SQL語(yǔ)句實(shí)現(xiàn):當(dāng)A列大于B列時(shí)選擇A列否則選擇B列,當(dāng)B列大于C列時(shí)選擇B列否則選擇C列。

  復(fù)制代碼代碼如下:

  答:select case when A>B then A else B end,

  case when B>C then B else C end

  From test

  24.請(qǐng)簡(jiǎn)述項(xiàng)目中優(yōu)化sql語(yǔ)句執(zhí)行效率的方法,從哪些方面,sql語(yǔ)句性能如何分析?

  復(fù)制代碼代碼如下:

  答:(1)選擇最有效率的表名順序

  (2)WHERE子句中的連接順序

  (3)SELECT子句中避免使用‘*

  (4)用Where子句替換HAVING子句

  (5)通過(guò)內(nèi)部函數(shù)提高SQL效率

  (6)避免在索引列上使用計(jì)算。

  (7)提高GROUP BY 語(yǔ)句的效率, 可以通過(guò)將不需要的記錄在GROUP BY 之前過(guò)濾掉。

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

  復(fù)制代碼代碼如下:

  mysql_fetch_row() 把數(shù)據(jù)庫(kù)的一列儲(chǔ)存在一個(gè)以零為基數(shù)的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把數(shù)據(jù)庫(kù)的一列儲(chǔ)存在一個(gè)關(guān)聯(lián)陣列中,陣列的索引就是欄位名稱,例如我的數(shù)據(jù)庫(kù)查詢送回“first_name”、“l(fā)ast_name”、 “email”三個(gè)欄位,陣列的索引便是“first_name”、“l(fā)ast_name”和“email”。mysql_fetch_array() 可以同時(shí)送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

  26.下面的代碼用來(lái)做什么?請(qǐng)解釋。

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

  復(fù)制代碼代碼如下:

  這是把一個(gè)日期從 MM/DD/YYYY 的格式轉(zhuǎn)為 DD/MM/YYYY 格式。我的一個(gè)好朋友告訴我可以把這個(gè)正規(guī)表達(dá)式拆解為以下的語(yǔ)句,對(duì)于如此簡(jiǎn)單的表示是來(lái)說(shuō)其實(shí)無(wú)須拆解,純粹為了解說(shuō)的方便:

  // 對(duì)應(yīng)一個(gè)或更多 0-9,后面緊隨一個(gè)斜號(hào)$regExpression = "([0-9]+)/";// 應(yīng)一個(gè)或更多 0-9,后面緊隨另一個(gè)斜號(hào)$regExpression .= "([0-9]+)/";// 再次對(duì)應(yīng)一個(gè)或更多 0-9$regExpression .= "([0-9]+)";至于 \\2/\\1/\\3 則是用來(lái)對(duì)應(yīng)括號(hào),第一個(gè)括號(hào)對(duì)的是月份,

  27.GD 函式庫(kù)用來(lái)做什么?

  復(fù)制代碼代碼如下:

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

  28.請(qǐng)舉例說(shuō)明在你的開(kāi)發(fā)過(guò)程中用什么方法來(lái)加快頁(yè)面的加載速度

  復(fù)制代碼代碼如下:

  答:要用到服務(wù)器資源時(shí)才打開(kāi),及時(shí)關(guān)閉服務(wù)器資源,數(shù)據(jù)庫(kù)添加索引,頁(yè)面可生成靜態(tài),圖片等大文件單獨(dú)服務(wù)器。使用代碼優(yōu)化工具啦

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

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

  復(fù)制代碼代碼如下:

  答:傳值是把實(shí)參的值賦值給行參 那么對(duì)行參的修改,不會(huì)影響實(shí)參的值

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

  31.如何通過(guò)javascript判斷一個(gè)窗口是否已經(jīng)被屏蔽

  復(fù)制代碼代碼如下:

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

  33.對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來(lái)解決訪問(wèn)量問(wèn)題

  復(fù)制代碼代碼如下:

  答:首先,確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量

  其次,優(yōu)化數(shù)據(jù)庫(kù)訪問(wèn)。

  第三,禁止外部的盜鏈。

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

  第五,使用不同主機(jī)分流主要流量

  第六,使用流量分析統(tǒng)計(jì)軟件

  5道PHP面試題

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

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

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

  $_SERVER[‘REMOTE_ADDR’]

  3、寫(xiě)出使用header函數(shù)跳轉(zhuǎn)頁(yè)面的語(yǔ)句(5分)

  Header(‘location:index.php’);

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

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

  5、寫(xiě)出將一個(gè)數(shù)組里的空值去掉的語(yǔ)句(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、寫(xiě)出獲取當(dāng)前時(shí)間戳的函數(shù),及打印前一天的時(shí)間的方法(格式:年-月-日 時(shí):分:秒) (5分)

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

  7、寫(xiě)出php進(jìn)行編碼轉(zhuǎn)換的函數(shù)(5分)

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

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

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

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

  $arr = array(“測(cè)試1″,”測(cè)試2″,”測(cè)試3″);//數(shù)組 $sarr = serialize($arr);//產(chǎn)生一個(gè)可存儲(chǔ)的值(用于存儲(chǔ))

  //用任意方法(例如:你要是吧$sarr存在一個(gè)文本文件中你就可以用file_get_contents取得)得到存儲(chǔ)的值保存在$newarr中;

  $unsarr=unserialize($newarr);//從已存儲(chǔ)的表示中創(chuàng)建 PHP 的值

  10、寫(xiě)出一個(gè)函數(shù),參數(shù)為年份和月份,輸出結(jié)果為指定月的天數(shù)(5分)

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

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

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

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

  13、請(qǐng)簡(jiǎn)單寫(xiě)一個(gè)類,實(shí)例化這個(gè)類,并寫(xiě)出調(diào)用該類的屬性和方法的語(yǔ)句(5分)

  Class myclass{

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

  }

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

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

 。?php $link = Mysql_connect(“l(fā)ocal host”,”root”,”123”) or die(“數(shù)據(jù)庫(kù)連接失敗!”); Mysql_select_db(“db_test”,$link) or die(“選擇數(shù)據(jù)庫(kù)失敗!”); $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、以下有兩個(gè)表 user表 字段id (int),name (varchar) score表 字段uid (int),subject (varchar) ,score (int) score表的uid字段與user表的id字段關(guān)聯(lián) 要求寫(xiě)出以下的sql語(yǔ)句 1)在user表里新插入一條記錄,在score表里插入與新加入的記錄關(guān)聯(lián)的兩條記錄(5分) 2)獲取score表里uid為2的用戶score最高的5條記錄(5分) 3)使用聯(lián)合查詢獲取name為“張三”的用戶的總分?jǐn)?shù)(5分) 4)刪除name為“李四”的用戶,包括分?jǐn)?shù)記錄(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常見(jiàn)面試題及解析】相關(guān)文章:

PHP常見(jiàn)面試題及答案04-04

PHP常見(jiàn)面試題詳解08-09

常見(jiàn)的PHP中級(jí)程序員面試題04-20

php常見(jiàn)面試題及答案(33道)07-12

php面試題05-18

PHP經(jīng)典面試題07-28

精選php面試題及答案06-01

最新PHP面試題05-27

PHP面試題及答案06-27