多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > php面試寶典

php面試寶典

來源:程序員人生   發布時間:2016-07-11 09:03:25 閱讀次數:3686次

Php

 

1、表單中 get與post提交方法的區分?

答:get是發送要求HTTP協議通過url參數傳遞進行接收,而post是實體數據,可以通過表單提交大量信息.

2、session與cookie的區分?

答:session:貯存用戶訪問的全局唯1變量,存儲在服務器上的php指定的目錄中的(session_dir)的位置進行的寄存

   cookie:用來存儲連續訪問1個頁面時所使用,是存儲在客戶端,對Cookie來講是存儲在用戶WIN的Temp目錄中的。

二者都可通過時間來設置時間長短

3、數據庫中的事務是甚么?

答:事務(transaction)是作為1個單元的1組有序的數據庫操作。如果組中的所有操作都成功,則認為事務成功,即便只有1個操作失敗,事務也不成功。如果所有操作完成,事務則提交,其修改將作用于所有其他數據庫進程。如果1個操作失敗,則事務將回滾,該事務所有操作的影響都將取消。

4、用PHP打印出前1天的時間格式是2006⑸⑴0 22:21:21(2分)

答:echo date('Y-m-d H:i:s', strtotime('⑴ days'));

5、echo(),print(),print_r()的區分(3分)

答:echo是PHP語句, print和print_r是函數,語句沒有返回值,函數可以有返回值(即使沒有用)  

   print()只能打印出簡單類型變量的值(如int,string)  

   print_r()可以打印出復雜類型變量的值(如數組,對象)  

   echo     輸出1個或多個字符串

6、能夠使HTML和PHP分離開使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

10、PHP的意思(送1分)

答:PHP是1個基于服務端來創建動態網站的腳本語言,您可以用PHP和HTML生成網站主頁

11、MYSQL獲得當前時間的函數是?,格式化日期的函數是(2分)

答:now(),date()

12、實現中文字串截取無亂碼的方法。(3)

:function GBsubstr($string, $start, $length) {

if(strlen($string)>$length){

     $str=null;

     $len=$start+$length;

for($i=$start;$i<$len;$i++){

if(ord(substr($string,$i,1))>0xa0){

     $str.=substr($string,$i,2);

     $i++;

}else{

     $str.=substr($string,$i,1);

     }

    }

return $str.'...';

}else{

return $string;

   }

}

13、您是不是用過模板引擎? 如果有您用的模板引擎的名字是?(1分)

答:用過,smarty

14、對大流量的網站,您采取甚么樣的方法來解決訪問量問題?(4分)

答:確認服務器硬件是不是足夠支持當前的流量,數據庫讀寫分離,優化數據表,

程序功能規則,制止外部的盜鏈,控制大文件的下載,使用不同主機分流主要流量

15、用PHP寫出顯示客戶端IP與服務器IP的代碼1分)

答:打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或: getenv('REMOTE_ADDR');

打印服務器IP:echo gethostbyname("www.bolaiwu.com")

16、語句include和require的區分是甚么?為避免屢次包括同1文件,可用(?)語句代替它們? (2分)

答:require->require是無條件包括也就是如果1個流程里加入require,不管條件成立與否都會先履行require

  include->include有返回值,而require沒有(可能由于如此require的速度比include快)

注意:包括文件不存在或語法毛病的時候require是致命的,include不是

17、如何修改SESSION的生存時間(1分).

答:方法1:將php.ini中的session.gc_maxlifetime設置為9999重啟apache

方法2:$savePath = "./session_save_dir/";

      $lifeTime = 小時 * 秒;

      session_save_path($savePath);

      session_set_cookie_params($lifeTime);

      session_start();

方法3:setcookie() and session_set_cookie_params($lifeTime);

18、有1個網頁地址, 比如PHP開發資源網主頁: http://www.phpres.com/index.html,如何得到它的內容?($1分)

答:方法1(對PHP5及更高版本):

$readcontents = fopen("http://www.phpres.com/index.html", "rb");

$contents = stream_get_contents($readcontents);

fclose($readcontents);

echo $contents;

方法2:

echo file_get_contents("http://www.phpres.com/index.html");

19、在HTTP 1.0中,狀態碼401的含義是(?);如果返回“找不到文件”的提示,則可用 header 函數,其語句為(?);(2分)

答:狀態401代表未被授權,header("Location:www.xxx.php");

20、在PHP中,heredoc是1種特殊的字符串,它的結束標志必須?(1分)

答:heredoc的語法是用"<<<"加上自己定義成對的標簽,在標簽范圍內的文字視為1個字符串

例子:

$str = <<<SHOW

my name is Jiang Qihui!

SHOW;

21、談談asp,php,jsp的優缺點(1分)

答:ASP全名Active Server Pages,是1個WEB服務器真個開發環境,利用它可以產生和運行動態的、交互的、高性能的WEB服務利用程序。ASP采取腳本語言VB Script(Java script)作為自己的開發語言。

PHP是1種跨平臺的服務器真個嵌入式腳本語言. 它大量地借用C,Java和Perl語言的語法, 并耦合PHP自己的特性,使WEB開發者能夠快速地寫出動態生成頁面.它支持目前絕大多數數據庫。還有1點,PHP是完全免費的,不用花錢,你可以從PHP官方站點(http://www.php.net)自由下載。而且你可以不受限制地取得源碼,乃至可以從中加進你自己需要的特點。

JSP 是Sun公司推出的新1代站點開發語言,他完全解決了目前ASP,PHP的1個通病--腳本級履行(聽說PHP4 也已在Zend 的支持下,實現編譯運行).Sun 公司借助自己在Java 上的非凡成就,將Java 從Java 利用程序和 Java Applet 以外,又有新的碩果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序。

3者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋履行程序代碼的能力。但JSP代碼被編譯成 Servlet 并由 Java 虛擬機解釋履行,這類編譯操作僅在對 JSP 頁面的第1次要求時產生。在 ASP 、PHP、JSP 環境下, HTML 代碼主要負責描寫信息的顯示樣式,而程序代碼則用來描寫處理邏輯。普通的 HTML 頁面只依賴于 Web 服務器,而 ASP 、PHP、JSP 頁面需要附加的語言引擎分析和履行程序代碼。程序代碼的履行結果被重新嵌入到HTML 代碼中,然后1起發送給閱讀器。 ASP 、PHP、 JSP3者都是面向 Web 服務器的技術,客戶端閱讀器不需要任何附加的軟件支持。

22、談談對mvc的認識(1分)

答:由模型(model),視圖(view),控制器(controller)完成的利用程序由模型發出要實現的功能到控制器,控制器接收組織功能傳遞給視圖;

23、寫動身貼數最多的10個人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

24、 請說明php中傳值與傳援用的區分。甚么時候傳值甚么時候傳援用?(2分)  以題的情勢 出

答:按值傳遞:函數范圍內對值的任何改變在函數外部都會被疏忽

按援用傳遞:函數范圍內對值的任何改變在函數外部也能反應出這些修改

優缺點:按值傳遞時,php必須復制值。特別是對大型的字符串和對象來講,這將會是1個代價很大的操作。

按援用傳遞則不需要復制值,對性能提高很有好處。

25、 在PHP中error_reporting這個函數有甚么作用? (1分)

答:設置毛病級別與毛病信息回報

26、請寫1個函數驗證電子郵件的格式是不是正確 (2分)

答:function checkEmail($email)

  {

    $pregEmail = "/([a-z0⑼]*[-_\.]?[a-z0⑼]+)*@([a-z0⑼]*[-_]?[a-z0⑼]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";

return preg_match($pregEmail,$email);  

  }

27、 簡述如何得到當前履行腳本路徑,包括所得到參數。(2分)

答:$script_name = basename(__file__); print_r($script_name);

28、JS表單彈出對話框函數是?取得輸入焦點函數是? (2分)

答:彈出對話框: alert(),prompt(),confirm()

取得輸入焦點 focus()

29、JS的轉向函數是?怎樣引入1個外部JS文件?(2分)

答:window.location.href,<script type="text/javascript" src="js/js_function.js"></script>

30、foo()和@foo()之間有甚么區分?(1分)

答:@foo()控制毛病輸出

31、如何聲明1個名為”myclass”的沒有方法和屬性的類? (1分)

答:class myclass{ }

32、如何實例化1個名為”myclass”的對象?(1分)

答:new myclass()

33、你如何訪問和設置1個類的屬性? (2分)

答:$object = new myclass();

   $newstr = $object->test;

   $object->test = "info";     sxhj_lzd@163

34、mysql_fetch_row() 和mysql_fetch_array之間有甚么區分? (1分)

答:mysql_fetch_row是從結果集取出1行數組,作為枚舉

   mysql_fetch_array是從結果集取出1行數組作為關聯數組,或數字數組,二者兼得

35、GD庫是做甚么用的? (1分)

答:gd庫提供了1系列用來處理圖片的API,使用GD庫可以處理圖片,或生成圖片。

在網站上GD庫通經常使用來生成縮略圖或用來對圖片加水印或對網站數據生成報表。

36、指出1些在PHP輸入1段HTML代碼的辦法。(1分)

答:echo "<a href='index.php'>aaa</a>";

37、下面哪一個函數可以打開1個文件,以對文件進行讀和寫操作?(1分)

    (a) fget() (b) file_open() (c) fopen() (d) open_file()  [  c  ]

38、下面哪一個選項未將 john 添加到users 數組中? (1分)

  (a) $users[] = ‘john’;

  (b) array_add($users,’john’);

  (c) array_push($users,‘john’);

  (d) $users ||= ‘john’;  [  a , c  ]

39、下面的程序會輸入是不是?(1分)

  $num = 10;

  function multiply(){

  $num = $num * 10;

  }

  multiply();

  echo $num;

  ?>

輸出:10

40、使用php寫1段簡單查詢,查出所有姓名為“張3”的內容并打印出來 (2分)

  表名User

  Name Tel Content Date

  張3 13333663366 大專畢業 2006⑴0⑴1

  張3 13612312331 本科畢業 2006⑴0⑴5

  張4 021⑸5665566 中專畢業 2006⑴0⑴5

  請根據上面的題目完成代碼:

  $mysql_db=mysql_connect("local","root","pass");

  @mysql_select_db("DB",$mysql_db);

    $result = mysql_query("SELECT * FROM `user` WHERE name='張3'");

while($rs = mysql_fetch_array($result)){

echo $rs["tel"].$rs["content"].$rs["date"];

    }   

41、如何使用下面的類,并解釋下面甚么意思?(3)

  class test{

function Get_test($num){

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

       return $num;

    }

  }

答:$testnum = "123";

   $object = new test();

   $encrypt = $object->Get_test($testnum);

echo $encrypt;

類test里面包括Get_test方法,實例化類調用方法多字符串加密

42、寫出 SQL語句的格式 : 插入,更新,刪除 (4分)

  表名User

  Name Tel Content Date

  張3 13333663366 大專畢業 2006⑴0⑴1

  張3 13612312331 本科畢業 2006⑴0⑴5

  張4 021⑸5665566 中專畢業 2006⑴0⑴5

  (a) 有1新記錄(小王 13254748547 高中畢業 2007-05-06)請用SQL語句新增至表中

    mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES

    ('小王','13254748547','高中畢業','2007-05-06')")

  (b) 請用sql語句把張3的時間更新成為當前系統時間

    $nowDate = date("Ymd");

    mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='張山'");

  (c) 請寫出刪除名為張4的全部記錄

    mysql_query("DELETE FROM `user` WHERE name='張4'");

43、請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有甚么區分(2分)

答:int是數字類型,char固定長度字符串,varchar實際長度字符串,datetime日期時間型,text文本字符串

   char的場地固定為創建表設置的長度,varchar為可變長度的字符

44、寫出以下程序的輸出結果 (1分)

  $b=201;

  $c=40;

    $a=$b>$c?4:5;

  echo $a;

  ?>

答:4

45、檢測1個變量是不是有設置的函數是不是?是不是為空的函數是?(2分)

答:isset($str),empty($str);

46、獲得查詢結果集總數的函數是?(1分)

答:mysql_num_rows($result);

47、$arr = array('james', 'tom', 'symfony'); 請打印出第1個元素的值 (1分)

答:echo $array[0];

48、請將41題的數組的值用','號分隔并合并成字串輸出(1分)

答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}

49、$a = 'abcdef'; 請取出$a的值并打印出第1個字母(1分)

答:echo $a{0} 或 echo substr($a,0,1)

50、PHP可以和sql server/oracle等數據庫連接嗎?(1分)

答:固然可以

51、請寫出PHP5權限控制修飾符(3分)

答:public(公共),private(私用),protected(繼承)

52、請寫出php5的構造函數和析構函數(2分)

答:__construct , __destruct

53、完成以下:

54、 

(1)創建新聞發布系統,表名為message有以下字段 (3分)

  id 文章id

  title 文章標題

  content 文章內容

  category_id 文章分類id

    hits 點擊量

答:CREATE TABLE 'message'(

   'id' int(10) NOT NULL auto_increment,

   'title' varchar(200) default NULL,

   'content' text,

   'category_id' int(10) NOT NULL,

   'hits' int(20),

   PRIMARY KEY('id');

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2)一樣上述新聞發布系統:表comment記錄用戶回復內容,字段以下 (4分)

  comment_id 回復id

  id 文章id,關聯message表中的id

  comment_content 回復內容

  現通過查詢數據庫需要得到以下格式的文章標題列表,并依照回復數量排序,回復最高的排在最前面

  文章id 文章標題點擊量回復數量

  用1個SQL語句完成上述查詢,如果文章沒有回復則回復數量顯示為0

答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,

IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN

comment ON message.id=comment.id GROUP BY message.`id`;

  (3)上述內容管理系統,表category保存分類信息,字段以下 (3分)

  category_id int(4) not null auto_increment;

  categroy_name varchar(40) not null;

  用戶輸入文章時,通過選擇下拉菜單選定文章分類

  寫出如何實現這個下拉菜單

答:function categoryList()

{

    $result=mysql_query("select category_id,categroy_name from category")

or die("Invalid query: " . mysql_error());

print("<select name='category' value=''>\n");

while($rowArray=mysql_fetch_array($result))

    {

print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>\n");

    }

print("</select>");

}

 

54、 寫1個函數,盡量高效的,從1個標準 url 里取出文件的擴大名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

答案1:

function getExt($url){

   $arr = parse_url($url);

 

   $file = basename($arr['path']);

   $ext = explode(".",$file);

return $ext[1];

}

答案2:

function getExt($url) {

    $url = basename($url);

    $pos1 = strpos($url,".");

    $pos2 = strpos($url,"?");

if(strstr($url,"?")){

return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);

    } else {

return substr($url,$pos1);

    }

}

 

55、 在 HTML 語言中,頁面頭部的 meta 標記可以用來輸出文件的編碼格式,以下是1個標準的 meta 語句

  請使用 PHP 語言寫1個函數,把1個標準 HTML 頁面中的類似 meta 標記中的 charset 部份值改成 big5

  請注意:

  1. 需要處理完全的 html 頁面,即不光此 meta 語句

  2. 疏忽大小寫

    3. ' 和 " 在此處是可以互換的

    4. 'Content-Type' 兩側的引號是可以疏忽的,但 'text/html; charset=gbk' 兩側的不行

  5. 注意處理過???#26684;

56、寫1個函數,算出兩個文件的相對路徑

  如 $a = '/a/b/c/d/e.php';

  $b = '/a/b/12/34/c.php';

  計算出 $b 相對 $a 的相對路徑應當是 ../../c/d將()添上

答:function getRelativePath($a, $b) {   

    $returnPath = array(dirname($b));   

    $arrA = explode('/', $a);   

    $arrB = explode('/', $returnPath[0]);   

for ($n = 1, $len = count($arrB); $n < $len; $n++) {   

if ($arrA[$n] != $arrB[$n]) {   

break;   

        }    

    }   

if ($len - $n > 0) {   

        $returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));   

    }   

 

    $returnPath = array_merge($returnPath, array_slice($arrA, $n));   

return implode('/', $returnPath);   

   }   

echo getRelativePath($a, $b);

 

 

57、如何實現PHP、JSP交互?

  題目有點含糊不清,SOAP,XML_RPC,Socket function,CURL都可以實現這些,如果是考PHP和Java的整合,PHP內置了這類機制(如果考PHP和.NET的整合,也能夠這么回答),例如$foo = new Java('java.lang.System');

58、使用哪些工具進行版本控制?

  CVS和SVN,SVN號稱下1代CVS,功能強大,不過CVS是老牌,市占率很高.我1直用SVN,題目是問用甚么工具,呃,這個可能需要這么回答:CVS Server on Apache作服務端,WinCVS作客戶端;Subversion on Apache/DAV 做服務端,TortoiseSVN做客戶端,或Subclipse做客戶端

59、如何實現字符串翻轉?

  其實PHP本身就有字符串翻轉的函數:strrev(),無妨試試echo strrev($str);不過所有的這3種方法都不能解決中文字符串翻轉的問題,會出錯的。

代碼

<?php

function reverse($var)

{

    $res="";

for($i=0,$j=strlen($var);$i<$j;$i++)

     {

        $res=$var[$i].$res;

     }

return $res;

}

$tmpvar="wofang";

$res=reverse($tmpvar);

echo $res;

?>

60、優化MYSQL數據庫的方法。

  (1).數據庫設計方面,這是DBA和Architect的責任,設計結構良好的數據庫,必要的時候,去正規化(英文是這個:denormalize,中文翻譯成啥我不知道),允許部份數據冗余,避免JOIN操作,以提高查詢效力

  (2).系統架構設計方面,表散列,把海量數據散列到幾個不同的表里面.快慢表,快表只留最新數據,慢表是歷史存檔.集群,主服務器Read & write,從服務器read only,或N臺服務器,各機器互為Master

  (3).(1)和(2)超出PHP Programmer的要求了,會更好,不會沒關系.檢查有無少加索引

  (4).寫高效的SQL語句,看看有無寫低效的SQL語句,比如生成笛卡爾積的全連接啊,大量的Group By和order by,沒有limit等等.必要的時候,把數據庫邏輯封裝到DBMS真個存儲進程里面.緩存查詢結果,explain每個sql語句

  (5).所得皆必須,只從數據庫取必須的數據,比如查詢某篇文章的評論數,select count(*) ... where article_id = ? 就能夠了,不要先select * ... where article_id = ?然后msql_num_rows.

只傳送必須的SQL語句,比如修改文章的時候,如果用戶只修改了標題,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)

  (6).必要的時候用不同的存儲引擎.比如InnoDB可以減少死鎖.HEAP可以提高1個數量級的查詢速度

61、談談事務處理

  A給B的賬戶轉賬50美元的例子

62、apache+mysql+php實現最大負載的方法

見7

63、實現中文字串截取無亂碼的方法。

  mb_substr()

?>

64、用PHP寫出顯示客戶端IP與服務器IP的代碼:

打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或: getenv('REMOTE_ADDR');

打印服務器IP:echo gethostbyname("http://www.baidu.com/")

 

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

<?php

//本頁地址,SCRIPT_NAME也能夠:php/test.php

echo $_SERVER['PHP_SELF']."<br />";

//鏈接到當前頁面的前1頁面的 URL 地址:

echo $_SERVER['HTTP_REFERER']."<br />";

//其它的見參考手冊:語言參考》變量》預定義變量

//前履行腳本的絕對路徑名:D:Inetpubwwwrootphp est.php

echo $_SERVER["SCRIPT_FILENAME"]."<br />";

//正在閱讀當前頁面用戶的 IP 地址:127.0.0.1

echo $_SERVER["REMOTE_ADDR"]."<br />";

//查詢(query)的字符串(URL 中第1個問號 ? 以后的內容):id=1&bi=2

echo $_SERVER["QUERY_STRING"]."<br />";

//當前運行腳本所在的文檔根目錄:d:inetpubwwwroot

echo $_SERVER["DOCUMENT_ROOT"]."<br />";

?>

66、履行程序段<?php echo 8%(⑵) ?>將輸出__。

<?php

//參考手冊》語言參考》運算符》算術運算符》%為取模運算,輸出0

echo 8%(⑵)."<br />";

//取模 $a % $b 在 $a 為負值時的結果也是負值。輸出⑵

echo ((⑻)%3)."<br />";

//輸出2

echo (8%(⑶))."<br />";

?>

67、在HTTP 1.0中,狀態碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數,其語句為____。

答:401表示未授權;header("HTTP/1.0 404 Not Found");[見參考手冊》函數參考》HTTP函數》header]

68、數組函數 arsort 的作用是____;語句 error_reporting(2047)的作用是____。

答:arsort:對數組進行逆向排序并保持索引關系 error_reporting(2047)的作用是:report All errors and warnings

69、寫出1個正則表達式,過慮網頁上的所有JS/VBS腳本(即把script標記及其內容都去掉):

<?php

$script="以下內容不顯示:<script language='javascript'>alert('cc');</script>";

echo preg_replace("/<script[^>].*?>.*?</script>/si", "替換內容", $script);

?>

70、以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語句____動態裝載PHP模塊,

然后再用語句____使得Apache把所有擴大名為php的文件都作為PHP腳本處理。

答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php

見參考手冊》目錄》II. 安裝與配置》6. Windows 系統下的安裝》Microsoft Windows 下的 Apache 2.0.x

71、語句 include 和 require 都能把另外1個文件包括到當前文件中,它們的區分是____;為了不屢次包括同1文件,可以用語句____來代替它們。

答:在如何處理失敗時,include() 產生1個正告而 require() 則致使1個致命毛病;require_once()/include_once()

72、1個函數的參數不能是對變量的援用,除非在php.ini中把____設為on.

答:allow_call_time_pass_reference boolean :是不是啟用在函數調用時強迫參數被依照援用傳遞, 見參考手冊》附錄G

73、SQL 中LEFT JOIN的含義是__,如果 tbl_user記錄了學生的姓名(name)和學號(ID),

tbl_score記錄了學生(有的學生考試以后被開除,沒有其記錄)的學號(ID)和考試成績(score)和考試科目(subject),要想打印出各個學生姓名及對應的的各科總成績,則可以用SQL語句____.

答:自然左外連接

create database phpinterview;

use phpinterview

create table tbl_user

(

    ID                             int                            not null,

name                           varchar(50)                    not null,

primary key (ID)

);

create table tbl_score

(

    ID                             int                            not null,

score                          dec(6,2)                       not null,

subject                        varchar(20)                    not null

);

 

insert into tbl_user (ID, name) values (1, 'beimu');

insert into tbl_user (ID, name) values (2, 'aihui');

insert into tbl_score (ID, score, subject) values (1, 90, '語文');

insert into tbl_score (ID, score, subject) values (1, 80, '數學');

insert into tbl_score (ID, score, subject) values (2, 86, '數學');

insert into tbl_score (ID, score, subject) values (2, 96, '語文');

 

select A.id,sum(B.score) as sumscore

from tbl_user A left join tbl_score B

on A.ID=B.ID

group by A.id

74、 在PHP中,heredoc是1種特殊的字符串,它的結束標志必須____

答:結束標識符所在的行不能包括任何其它字符除";"

75、寫1個函數,能夠遍歷1個文件夾下的所有文件和子文件夾。

<?php

function my_scandir($dir)

{

    $files=array();

if(is_dir($dir))

     {

if($handle=opendir($dir))

         {

while(($file=readdir($handle))!==false)

             {

if($file!="." && $file!="..")

                 {

if(is_dir($dir."/".$file))

                     {

                        $files[$file]=my_scandir($dir."/".$file);

                     }

else

                     {

                        $files[]=$dir."/".$file;

                     }

                 }

             }

closedir($handle);

return $files;

         }        

     }    

}

print_r(my_scandir("D:Program FilesInternet ExplorerMUI"));

?>

 

 

76、以下哪1句不會把 John 新增到 users 陣列?

$users[] = 'john';

成功把 John 新增到陣列 users。

array_add($users,’john’);

函式 array_add() 無定義。

array_push($users,‘john’);

成功把 John 新增到陣列 users。

$users ||= 'john';

語法毛病。

77、sort()、assort()、和 ksort() 有甚么分別?它們分別在甚么情況下使用?

sort()

根據陣列中元素的值,以英文字母順序排序,索引鍵會由 0 到 n⑴ 重新編號。主要是當陣列索引鍵的值無關疼癢時用來把陣列排序。

assort()

PHP 沒有 assort() 函式,所以多是 asort() 的筆誤。

asort()

與 sort() 1樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都取得保存,特別合適替聯想陣列排序。

ksort()

根據陣列中索引鍵的值,以英文字母順序排序,特別合適用于希望把索引鍵排序的聯想陣列。

78、以下的代碼會產生甚么?為何?

$num =10;

function multiply(){

$num =$num *10;

}

multiply();

echo $num;

由于函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或 $_GLOBALS['num']),所以 $num 的值是 10。

79、 reference 跟1個正規的變量有甚么分別?如何 pass by reference?在甚么情況下我們需要這樣做?

Reference 傳送的是變量的地址而非它的值,所以在函式中改變1個變量的值時,全部利用都見到這個變量的新值。

1個正規變量傳送給函式的是它的值,當函式改變這個變量的值時,只有這個函式才見到新值,利用的其他部份依然見到舊值。

$myVariable = "its' value";

Myfunction(&$myVariable); // 以 reference 傳送參數

以 reference 傳送參數給函式,可使函式改變了的變量,即便在函式結束后依然保存新值。

80、些函式可以用來在現正履行的腳本中插入函式庫?

對這道題目不同的理解會有不同的答案,我的第1個想法是插入 PHP 函式庫不外乎 include()、include_once()、require()、require_once(),但仔細再想,“函式庫”也應當包括 com 物件和 .net 函式庫,所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起“函式庫”的時候,別忘記這兩個函式。

81、foo() 與 @foo() 有甚么分別?

foo() 會履行這個函式,任何解譯毛病、語法毛病、履行毛病都會在頁面上顯示出來。

@foo() 在履行這個函式時,會隱藏所有上述的毛病訊息。

很多利用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的毛病訊息,我認為這是很嚴重的失誤,由于毛病不該被隱藏,你必須妥善處理它們,可能的話解決它們。

82、你如何替 PHP 的利用程式偵錯?

我其實不常這樣做,我曾試過很多不同的偵錯工具,在 Linux 系統中設定這些工具1點也不容易。不過以下我會介紹1個近來頗受注視的偵錯工具。

PHP - Advanced PHP Debugger 或稱 PHP - APD,第1步是履行以下的指令安裝:

pear install apd安裝后在你的腳本的開頭位置加入以下的語句開始進行偵錯:

apd_set_pprof_trace();履行終了,打開以下檔案來查閱履行日志:

apd.dumpdir

你也能夠使用 pprofp 來格式化日志。

詳細的資料可以參閱 http://us.php.net/manual/en/ref.apd.php。

83、“===”是甚么?試舉1個“==”是真但“===”是假的例子。

“===”是給既可以送回布爾值“假”,也能夠送回1個不是布爾值但卻可以賦予“假”值的函式,strpos() 和 strrpos() 便是其中兩個例子。

問題的第2部分有點困難,想1個“==”是假,但是“===”是真的例子卻很容易,相反的例子卻很少。但我終究找到以下的例子:

if (strpos("abc", "a") == true){    // 這部份永不會被履行,由于 "a" 的位置是 0,換算成布爾值“假”}if (strpos("abc", "a") === true){    // 這部分會被履行,由于“===”保證函式 strpos() 的送回值不會換算成布爾值.}

84、你會如何定義1個沒有成員函式或特性的種別 myclass?

class myclass{}

85、你如何產生1個 myclass 的物件?

$obj = new myclass();

86、在1個種別內如何存取這個種別的特性及變改它的值?

使用語句:$this->propertyName,例如:

class myclass{ private $propertyName; public function __construct() {   $this->propertyName = "value"; }}

87、include 和 include_once 有甚么分別?require 又如何?

3者都是用來在腳本中插入其他檔案,視乎 url_allow_fopen 是不是核準,這個檔案可以從系統內部或外部獲得。但他們之間也有微細的分別:

include():這個函式容許你在腳本中把同1個檔案插入屢次,若果檔案不存在,它會發出系統正告并繼續履行腳本。

include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的履行期間,有關檔案只會被插入1次。

require():跟 include() 差不多,它也是用來在腳本中插入其他檔案,但如果果檔案不存在,它會發出系統正告,這個正告會引致致命毛病令腳本中斷履行

88、以下哪個函式可以把閱讀器轉向到另外一個頁面?

redir()

這不是1個 PHP 函式,會引致履行毛病。

header()

這個是正確答案,header() 用來插入卷頭資料,可以用來使閱讀器轉向到另外一個頁面,例如:

header("Location: http://www.search-this.com/");

location()

這不是1個 PHP 函式,會引致履行毛病。

redirect()

這不是1個 PHP 函式,會引致履行毛病。

89、以下哪個函式可以用來開啟檔案以便讀/寫?

fget()

這不是1個 PHP 函式,會引致履行毛病。

file_open()

這不是1個 PHP 函式,會引致履行毛病。

fopen()

這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實上這個函式還有很多選項,詳細資料請參閱 php.net。

open_file()

這不是1個 PHP 函式,會引致履行毛病。

90、mysql_fetch_row() 和 mysql_fetch_array() 有甚么分別?

mysql_fetch_row() 把數據庫的1列貯存在1個以零為基數的陣列中,第1欄在陣列的索引 0,第2欄在索引 1,如此類推。mysql_fetch_assoc() 把數據庫的1列貯存在1個關聯陣列中,陣列的索引就是欄位名稱,例如我的數據庫查詢送回“first_name”、“last_name”、“email”3個欄位,陣列的索引便是“first_name”、“last_name”和“email”。mysql_fetch_array() 可以同時送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

91、下面的代碼用來做甚么?請解釋。

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

這是把1個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。我的1個好朋友告知我可以把這個正規表達式拆解為以下的語句,對如此簡單的表示是來講其實不必拆解,純潔為了解說的方便:

// 對應1個或更多 0⑼,后面緊隨1個斜號$regExpression = "([0⑼]+)/";// 應1個或更多 0⑼,后面緊隨另外一個斜號$regExpression .= "([0⑼]+)/";// 再次對應1個或更多 0⑼$regExpression .= "([0⑼]+)";至于 \\2/\\1/\\3 則是用來對應括號,第1個括號對的是月份,第2個括號對應的是日期,第3個括號對應的是年份。

92、給你1行文字 $string,你會如何編寫1個正規表達式,把 $string 內的 HTML 標簽除去?

首先,PHP 有內建函式 strip_tags() 除去 HTML 標簽,為什么要自行編寫正規表達式?好了,便當作是面試的1道考題吧,我會這樣回答:

$stringOfText = "<p>This is a test</p>";$expression = "/<(.*?)>(.*?)<\/(.*?)>/";echo preg_replace($expression, "\\2", $stringOfText);// 有人說也能夠使用 /(<[^>]*>)/ $expression = "/(<[^>]*>)/";echo preg_replace($expression, "", $stringOfText);

93、PHP 和 Perl 分辨陣列和散列表的方法有甚么差異?

這正是為什么我總是告知他人選擇適當的編程語言,若果你只用1種語言的話你怎樣能回答這道問題?這道問題很簡單,Perl 所有陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開頭,例如 $myArray。

至于 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒有分別,還是使用 $,例如 $myHash。

94、你如何利用 PHP 解決 HTTP 的無狀態本質?

最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每頁的開始加上 session_start(),然后利用 $_SESSION 散列表來貯存 session 變量。至于 cookie 你只需記著1個原則:在輸出任何文字之前調用 set_cookie() 函式,另外只需使用 $_COOKIE 散列表即可以存取所有 cookie 變量。

還有1個不那末可靠的方法,就是利用訪客的 IP 地址,這個方法有特定的危險性。

95、GD 函式庫用來做甚么?

這個多是我最喜歡的函式庫,自從 PHP 4.3.0 版本后 GD 便內建在 PHP 系統中。這個函式庫讓你處理和顯示各式格式的圖檔,它的另外一個常見用處是制作所圖檔。GD 之外的另外一個選擇是 ImageMagick,但這個函式庫其實不內建于 PHP 當中,必須由系統管理員安96、試寫出幾個輸出1段 HTML 代碼的方法。

嗯,你可使用 PHP 中任何1種輸出語句,包括 echo、print、printf,大部份人都使用以下例的 echo:

echo "My string $variable";你也能夠使用這類方法:

echo<<<ENDThis text is written to the screen as output and this $variable is parsed too. If you wanted you can have <span> HTML tags in here as well.</span> The END; remarks must be on a line of its own, and can't contain any extra white space.END;

97、PHP 比 Perl 好嗎?請討論。

我們不要為1個簡單的問題引發1場舌戰,正如我常常說的:“為工作選擇合適的語言,不要把工作遷就語言。”我個人認為 Perl 10分合適用作命令行工具,雖然它在網頁利用上也有不錯的表現,但是它的真正實力在命令行上才能充分發揮。一樣地,PHP 雖然可以在控制臺的環境中使用,但是個人認為它在網頁利用上有更好的表現,PHP 有大量專門為網頁利用而設計的函式,Perl 則似乎以命令行動設計之本。

個人來講兩種語言我都喜歡,在大學期間我常常使用 Perl、PHP 和 Java,惋惜工作上我使用 C#,但在家里我花很多時間操練 PHP、Perl、Ruby(現正學習)和 Java,保持我的技能知識在最新狀態。很多人問我 C 和 C++ 怎樣樣,它們是不是仍有機會在我的利用中占1席位,我的答案基本上是“否”,我近來的工作主要集中在網頁開發,雖然 C 和 C++ 也能夠用來寫網頁,但它們到底不是為這類工作而設計的,“為工作選擇合適的語言”,若果我需要編寫1個控制臺利用,用來展現 bubble sort、quick sort 和 merge sort 的效能比較,我1定會使用 C / C++。若果我需要編寫1個相片簿系統,我會使用 PHP 或 C#(我認為制作用戶介面方面 .NET 語言比網頁更加)。

 

98、請說明 PHP 中傳值與傳援用的區分。甚么時候傳值甚么時候傳援用?

答:傳值只是把某1個變量的值傳給了另外一個變量,而援用則說明二者指向了同1個地方。

99、在PHP中error_reporting這個函數有甚么作用?

答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.

100、 請用正則表達式(Regular Expression)寫1個函數驗證電子郵件的格式是不是正確。

答:

<?php

if(isset($_POST['action']) && $_POST['action']=='submitted')

{

    $email=$_POST['email'];

if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))

     {

        echo "電子郵件檢測失敗";

     }

else

     {

        echo "電子郵件檢測成功";

     }

}

else

{

?>

<html>

<head><title>EMAIL檢測</title>

<script type="text/javascript">

function checkEmail(sText)

     {

var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;

var email=document.getElementById(sText).value;

if(!reg.test(email))

         {

             alert("電子郵件檢測失敗");

         }

else

         {

             alert("電子郵件格式正確");

         }

     }

</script>

</head>

<body>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">

電子郵件:<input type="text" id="email" name="email" /><br />

<input type="hidden" name="action" value="submitted" />

<input type="button" name="button" value="客戶端檢測" onclick="checkEmail('email')" />

<input type="submit" name="submit" value="服務器端檢測" />

</form>

</body>

</html>

<?php

}

?>

101、 簡述如何得到當前履行腳本路徑,包括所得到參數。

<?php

echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];

//echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

?>

102、有1個1維數組,里面存儲整形數據,請寫1個函數,將他們按從大到小的順序排列。要求履行效力高。并說明如何改良履行效力。(該函數必須自己實現,不能使用php函數)

<?php

function BubbleSort(&$arr)

{

    $cnt=count($arr);

    $flag=1;

for($i=0;$i<$cnt;$i++)

     {

if($flag==0)

         {

return;

         }

        $flag=0;

for($j=0;$j<$cnt-$i⑴;$j++)

         {

if($arr[$j]>$arr[$j+1])

             {

                $tmp=$arr[$j];

                $arr[$j]=$arr[$j+1];

                $arr[$j+1]=$tmp;

                $flag=1;

             }

         }

     }

}

$test=array(1,3,6,8,2,7);

BubbleSort($test);

var_dump($test);

?>

103、請舉例說明在你的開發進程中用甚么方法來加快頁面的加載速度

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

 

Mysql部份

104、 創建poll表,用于記錄單選投票用戶的數據

字段包括 id[ Autoincreace ] , ip , time , iid(用戶選則的選項,int型)

寫出create上述table的完全sql語句

drop table if exists poll;

 

/*==============================================================*/

/* Table: poll                                                  */

/*==============================================================*/

create table poll

(

id                             int unsigned                   not null auto_increment,

ip                             varchar(15)                    not null,

time                           datetime                       not null,

iid                            int                            not null,

primary key (id)

)

105、   寫出將1個選擇2號選項的ip為127.0.0.1的用戶在當前時間的投票記錄到數據庫的SQL

insert into poll (ip,time,iid) values('127.0.0.1',now(),2);

106、 寫出滿足下邊條件的SQL語句

  item表的結構為 id(就是poll表中的iid) , descp(用戶選擇的選項的文字)

  請查詢并返回10條記錄,包括ip和用戶選擇的選項的文字

107、  現在由于投票人數太多,網站經常出現too many connection的毛病,請提供解決方案

方法1:加大MySql的最大連接數

   mysql的最大連接數默許是100, 這個數值對并發連接很多的數據庫利用是遠遠不夠的,當連接要求大于默許連接數后,就會出現沒法連接數據庫的毛病,因此我們需要把它適當調大1些,編輯my.ini

修改 max_connections=1000

方法2,不用mysql數據庫,改成直接寫文件,詳細方法參照問題5

若非要用 mysql,還可

方法3:由于用mysql語句調用數據庫時,在每次之履行語句前,會做1個臨時的變量用來打開數據庫,所以你在使用mysql語句的時候,記得在每次調用完mysql以后就關閉mysql臨時變量

108、 在成功解決連接數的問題后,發現程序運行緩慢,經查發現是mysql并發太多,表被鎖定的現象嚴重,請提供解決方案

對訪問量大的,本來就不推薦使用數據庫,可以斟酌直接寫到文本中,根據預測的訪問量,先定義假若是100個文件文件名順次為1.txt,2.txt…100.txt,每有用戶投票的時候,隨機往其中的1個文件中寫入投票信息。統計的時候,再對所有文本文件中的數據進行分析。必要的時候,再導入數據庫

drop table if exists item;

 

/*==============================================================*/

/* Table: item                                                  */

/*==============================================================*/

create table item

(

id                             int                            not null,

descp                          varchar(200)                   not null,

primary key (id)

);

select A.ip,b.descp

from poll A,item B

where A.id=B.id

limit 10

 

109、 由于用戶實在太多,所以又分配給你兩臺服務器,你會如何來安排這3臺服務器

服務器分配,其實有好幾種方案(建議采取LINUX主機),先列出1個解決方案。

1.斟酌到電信,網通(南北差異)互訪問速度慢的問題,可讓電信的用戶走電信的線,網通的走網通的線。大致可以這樣分配,國內南方用戶(電信譽戶)具有1臺服務器A;北方用戶(網通用戶)具有1臺服務器B。國外的用戶也能夠斟酌給1臺服務器C。用戶訪問的時候,首先訪問的是針對國外的服務器,那臺機器是電信網通的用戶訪問速度都差不多的(可以斟酌就租用香港或是甚么地方的),經過服務器C判斷后直接跳到相應的服務器。統計時3臺機器的數據合起來。

110、 現在開始要求同1ip不能重復投票,請指出如何對數據表進行相應的修改

ALTER TABLE `phpinterview`.`poll` ADD unique INDEX `IX_poll_ip`(`ip`);

111、   原有數據已有很多重復ip的數據了,所以我們把它導出為1個txt,格式和上邊的poll1致,用TAB鍵間隔,請寫1段程序,刪除ip有重復的記錄,并統計每一個投票選項的投票數

<?php

//讀取文本并放入數組

$apoll = file("c:\1.txt");

//對每行數據進行分割,從而獲得了1個2維數組

for ($i=0;$i<count($apoll);$i++)

{

    $poll[$i] = split("    ",$apoll[$i]);

}

 

//獲得IP、出現的次數數據

$arrIP=array();

for($i=0;$i<count($poll);$i++)

{

    $arrIP[$poll[$i][1]]=isset($arrIP[$poll[$i][1]])?$arrIP[$poll[$i][1]]+1:1;

}

 

//獲得選項、投票個數

$arrRes=array();

for($i=0;$i<count($poll);$i++)

{

if($arrIP[$poll[$i][1]]==1)

     {

        $arrRes[$poll[$i][3]]=isset($arrRes[$poll[$i][3]])?$arrRes[$poll[$i][3]]+1:1;

     }

}

var_dump($arrRes);

?>

mysql5.0測試版:

/*========================得到測試數據c: .txt=========*/

SELECT *

into outfile 'c: .txt'

FROM `testok`;

/*========================載入臨<

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久精品视频6 | 免费播放成人生活片 | 老司机午夜精品 | 波多野结衣99 | 亚洲国产日韩欧美在线a乱码 | 欧美成人精品一区二三区在线观看 | www国产永久免费视频看看 | 亚洲欧美国产精品专区久久 | 亚洲最大在线观看 | 久久精品123 | 亚洲高清免费观看 | 91久久综合九色综合欧美亚洲 | 亚洲韩国日本一级二级r级 亚洲韩精品欧美一区二区三区 | 亚洲精品高清久久 | 国产精品欧美一区二区三区不卡 | 欧美精品福利视频 | 久久xxx| 亚洲精品一区二区三区四区五区 | 亚洲在线中文字幕 | 国产亚洲综合激情校园小说 | 亚洲精品区一区二区三区四 | 久久精品视频一区二区三区 | 欧美日韩在线视频观看 | 久久精品九九亚洲精品天堂 | 欧美色图俺去了 | 中文字幕日本不卡一二三区 | 五月天视频网站 | 伊人五月在线 | 国产精品久久久久久麻豆一区 | 久久久久国产精品美女毛片 | 成人看片毛片免费播放器 | 亚洲在线不卡 | 波多野结中文字幕在线69视频 | 国产精品久久一区二区三区 | 日韩高清片 | 日本视频中文字幕 | 日本动漫片b站免费观看 | 91精品日韩 | 欧美一级高清在线观看 | 看一级毛片一区二区三区免费 | 欧美.亚洲.日本一区二区三区 |