国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP新浪面試題全部題目與答案

2024-05-04 23:06:33
字體:
來源:轉載
供稿:網友

這是一個朋友在新浪面試之后把所有面試題與答案都拿出來了,下面我把東西記錄一下,有用得上的兄弟們可先看一次,對過去面試有個底.

1.寫一個函數,盡可能高效的,從一個標準 url 里取出文件的擴展名,例如:/abc/de/fg.php?id=1 需要取出 php 或 .php

答:我是直接用PHP內置函數搞定的,不重復造輪子,估計出題者也是想考察基礎知識,主要是解析url和一個返回文件信息的函數,擴展:取得文件后綴名的多種方法;代碼如下:

  1. <?php 
  2.     /** by  */ 
  3.     $url = "/abc/de/fg.php?id=1"
  4.     $path = parse_url($url); 
  5.     echo pathinfo($path['path'],PATHINFO_EXTENSION);  //php 
  6. ?> 

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

<META http-equiv='Content-Type' content='text/html; charset=gbk'>

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

請注意:

(1) 需要處理完整的 html 頁面,即不光此 meta 語句

(2) 忽略大小寫

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

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

(5) 注意處理多余空格

答:表示我正則表達式(PHP正則詳解)忘記差不多了,弄了半天,代碼如下:

  1. <?php 
  2.     /**  */ 
  3.     $html = "<meta http-equiv='Content-Type' content='text/html; charset=gbk'>"
  4.     //匹配標準的meta標簽 
  5.     $pattern = "/<metas+http-equiv=('|")?Content-Type('|")?s+content=('|")text/html;s+charset=(.*)('|")>/i"
  6.     $replacement = "<meta http-equiv='Content-Type' content='text/html; charset=big5'>"
  7.     $result = preg_replace($pattern$replacement$html); 
  8.     echo htmlspecialchars($result); 
  9. ?> 

3.寫一個函數,算出兩個文件的相對路徑,如 $a = '/a/b/c/d/e.php';$b = '/a/b/12/34/c.php';計算出 $b 相對于 $a 的相對路徑應該是 ../../c/d將()添上.

答案:代碼如下:

  1. <?php 
  2.     /** by  */ 
  3.     $a = '/a/b/c/d/e.php'
  4.     $b = '/a/b/13/34/c.php'
  5.     echo getRelativePath($a$b); //"../../12/34/" 
  6.     function getRelativePath($a,$b){ 
  7.         $a2array = explode('/'$a); 
  8.         $b2array = explode('/'$b); 
  9.         $relativePath   = ''
  10.         for$i = 1; $i <= count($b2array)-2; $i++ ) { 
  11.             $relativePath .= $a2array[$i] == $b2array[$i] ? '../' : $b2array[$i].'/'
  12.         } 
  13.         return $relativePath
  14.     } 
  15. ?> 

4.寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾.

答:這個我之前就在博客中寫過(PHP文件遍歷及文件拷貝),只是實現的方法很多,效率不一定最高,代碼如下:

  1. /* 
  2.  *@blog   
  3.  */ 
  4. function listDir($dir = '.'){ 
  5.  if ($handle = opendir($dir)) { 
  6.   while (false !== ($file = readdir($handle))) { 
  7.    if($file == '.' || $file == '..'){ 
  8.     continue
  9.    } 
  10.    if(is_dir($sub_dir = realpath($dir.'/'.$file))){ 
  11.     echo 'FILE in PATH:'.$dir.':'.$file.'<br>'
  12.     listDir($sub_dir); 
  13.    }else
  14.     echo 'FILE:'.$file.'<br>'
  15.    } 
  16.   } 
  17.   closedir($handle); 
  18.  } 
  19.  
  20. listDir('e:wwwabc'); 

5.簡述論壇中無限分類的實現原理.

答:無限極分類,那么應該是考察遞歸函數吧!

第一步:建立測試數據庫,代碼如下:

  1. CREATE TABLE `category` ( 
  2.  `id` smallint(5) unsigned NOT NULL auto_increment, 
  3.  `fid` smallint(5) unsigned NOT NULL default '0'
  4.  `value` varchar(50) NOT NULL default ''
  5.  PRIMARY KEY (`id`) 
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

第二步:插入測試數據,代碼如下:

  1. INSERT INTO `category` ( `fid`, `value`) VALUES  
  2. (0, 'PHP點點通博客Pxx.COM'), 
  3. (1,'a'), 
  4. (1,'b'), 
  5. (2,'c'), 
  6. (2,'d'), 
  7. (4,'e'

第三步:遞歸輸出分類,代碼如下:

  1. <?php 
  2. /** by  */ 
  3. $conn = mysql_connect("localhost""root""mckee"); 
  4. mysql_select_db("test",$conn); 
  5. mysql_query("set names utf8"); 
  6. $sql = "SELECT * FROM category"
  7. $res = mysql_query($sql); 
  8. while($row = mysql_fetch_assoc($res)){ 
  9.     $arr[] = array($row[id],$row[fid],$row[value]); 
  10. getCate(0); 
  11. function getCate($fid = 0) {    
  12.     global $arr;  
  13.     for ($i = 0; $i < count($arr); $i++) {    
  14.         if ($arr[$i][1] == $fid) {         
  15.             echo $arr[$i][2] . "<br>";  
  16.             getCate($arr[$i][0]); //遞歸 
  17.         } 
  18.     } 
  19. ?> 

6.設計一個網頁,使得打開它時彈出一個全屏的窗口,該窗口中有一個文本框和一個按鈕,用戶在文本框中輸入信息后點擊按鈕就可以把窗口關閉,而輸入的信息卻在主網頁中顯示.

答案:都沒明白出這題目是干嘛的,新浪工程師腦子進水了嗎?考察js的window對象?親們告訴我?

index.html,代碼如下:

  1. <html> 
  2.     <head> 
  3.         <title>by </title> 
  4.     </head> 
  5.  <body> 
  6.   <h1></h1> 
  7.   <script type="text/javascript"
  8.    open('fullwin.html'); 
  9.   </script> 
  10.  </body> 
  11. </html> 

fullwin.html,代碼如下:

  1. <html> 
  2.      <head> 
  3.         <title>by </title> 
  4.      </head> 
  5.  <body> 
  6.   <script type="text/javascript"> 
  7.    window.moveTo(0, 0); 
  8.    window.resizeTo(window.screen.width, window.screen.height); 
  9.    var s = prompt('請輸入:'); 
  10.    window.opener.document.getElementsByTagName('h1')[0].innerText = s
  11.    window.close(); 
  12.   </script> 
  13.  </body> 
  14. </html> 

unset引用,代碼如下:

  1. <?php 
  2.     $a = "this is a php blog"
  3.     $b = & $a
  4.     unset($b); 
  5.     echo $a//this is a php blog 
  6. ?> 

這個我很清楚,unset($b),只是斷開了變量名和值得綁定,但是神奇的是如下代碼:

  1. <?php  
  2.     $a = "test"
  3.     $b = & $a
  4.     unset($a); 
  5.     echo $b;//test 
  6. ?> 

但是我銷毀$a了,為嘛$b的值還在呢?暈了,求解!感謝下面網友回復,讓我明白了.

關于unset()函數使用注意:只有當指向該值的所有變量(比如有引用變量指向該值)都被銷毀后,地址才會被釋放,如下:

  1. <?php  
  2.     /** by www.survivalescaperooms.com */ 
  3.     $a = "test"
  4.     $b = & $a
  5.     unset($a); 
  6.     unset($b); 
  7.     echo $b;//輸出空 
  8. ?>  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀化市| 贵阳市| 泽州县| 淳安县| 谷城县| 定陶县| 敖汉旗| 墨江| 南靖县| 镇赉县| 潜山县| 黄浦区| 恩平市| 满城县| 江油市| 苍梧县| 伊宁县| 鄂尔多斯市| 永吉县| 隆德县| 驻马店市| 托克逊县| 咸阳市| 周至县| 清流县| 奉节县| 海城市| 玉门市| 淅川县| 洛宁县| 石首市| 黑山县| 扎兰屯市| 荔波县| 莱芜市| 沾化县| 蒲江县| 格尔木市| 澄城县| 寿光市| 正镶白旗|