新浪樂居 php 面試題

來源:互聯網
上載者:User

新浪樂居

一、

1、有如下HTML:<img title=’aaaa’ sina_title=’bbbb’ id=’img1′>
1)用js取得________方法取得該對象;
2)用________屬性取得屬性title的屬性值;
3)用________方法取得屬性sina_title的屬性值;

(1) document.getElementById(‘img1′);
(2) document.getElementById(‘img1′).getAttribute(‘title’);
(3) document.getElementById(‘img1′).getAttribute(‘sina_title’);
2、php中對數組序列化和還原序列化的函數分別是______和_______;

serialize,upserialize
3、rawurlencode和urlencode函數的區別是__________________;

rawurlencode會將空格轉換為+,urlencode會把空格轉換為%20
4、php中過濾HTML的函數是_______,轉義的函數是____________;

strip_tags,htmlspecialchars
5、寫出用正則把HTML中的js指令碼過濾掉;

preg_replace(‘/<script.*?//script>/is’,”,$htmlcode);
6、SQL中LEFT JOIN的含義是______________;
如果有一個表tl_user儲存學生ID和名字name,另外一個表tl_score儲存學生ID、科目subject和成績score(有的學生沒有考試成績),寫出sql語句列印出學生名字和各科總成績;

左聯結,首先將左表中所有資料取出,然後再將滿足where條件中的右表資料取出來。當此行的資料並不滿足where條件,則返回空.
select tu.name,sum(ts.score) as totalscore from tl.user left join tl_score on tl.uid = ts.uid;
7、寫出三個調用系統命令的函數;

system,passthru,exec
8、josn處理數組的函數是;

json_encode,json_decode
9、php中判斷變數是否被設定是函數是_______;判斷是否為空白的是___________;

isset,empty
10、error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的區別_________;

前者是設定錯誤顯示等級,E_ALL代表提示全部錯誤(包括notice,warnning和error)。後者是設定讓php顯示錯誤,在關於錯誤顯示控制中,後者的優先順序最高。
11、PHP寫出顯示用戶端IP的預定義變數________;提供來路url的是__________;

$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_REFERER']
12、php把utf-8轉換成gbk的函數是___________;

iconv(‘UTF-8′,’GBK’,$str);
13、php中分割字串成數組的函數__________,串連數組成字串的是_______;
explode,implode
14、php中類的靜態方法怎麼使用_____________________________________;

在類外部,使用:類名後面跟雙冒號,再後面是方法名,類似classname::staticFucntion(),由於靜態方法不屬於某個對象,而是隸屬於整個類,所以要用類名來調用它。

二、
1、如下錯誤:mysql server not go away,的原因是什麼。(大概這是這樣)

應該是mysql has gone away吧?
一般情況下是由於max_allowed_packet設定的值過小導致的,max_allowed_packet用來控制緩衝區的包大小,有時在匯入資料的時候,此值過小就容易造成緩衝區容量不夠。將my.ini或my.cnf中的此值設定大一些即可解決。
還有一種可能是串連資料庫時使用了單例模式,多次操作資料庫但都使用的是同一個串連,由於mysql處理每個線程也是隊列模式,當前一個操作還沒執行完畢並且間隔小於wait_timeout所設定的值時就容易出現此問題,解決辦法是將wait_timeout的值設定大一些。
2、mysql的靜態表和動態表的區別,MyISAM和InnoDB的區別.

靜態表是當一個表中沒有採用varchar,blob,text這種可變長欄位時,此表就是靜態表,反之,如果一個表記憶體在至少一個可變長欄位時,或者如果一個表被用ROW_FORMAT=DYNAMIC選項來建立,此表就為動態表。
myisam與innodb的區別在於,myisam不支援交易處理,因為其不用去做commit操作,所以操作起來速度會比innodb較快。innodb在安全性方面要好於myisam,由於支援交易處理,insert,update,delete,select。等操作在預設autocommit=0時,會將每一個操作都當作一個事務,可以進行rollback。如果autocommit=1時,每一個操作後它都會自動認可此事務,會造成執行的效率很慢,大概會比myisam慢10倍。
3、$a = 1; $b = & $a;
unset($a),$b是否還是1,為什麼。
unset($b),$a是否還是1,為什麼。

都等於1。

在php中,引用賦值不同於指標的感念,他只是將另一個變數名指向了某個記憶體位址。此題中:$b = &$a;只是將$b這個名字也指向了$a變數所指向的記憶體位址。unset時只是釋放了這個名字的指向,並沒有釋放記憶體中的值。另一方面講unset($a),其實也並未真正立刻釋放記憶體中的值,也只是釋放了這個名字的指向而已,該函數只有在變數值所佔空間超過256位元組長的時候才會釋放記憶體,並且只有當指向該值的所有變數(比如有引用變數指向該值)都被銷毀後,地址才會被釋放。

三、
1、寫出至少三個函數,取檔案名稱的尾碼,如檔案’/as/image/bc.jpg’,得到 jpg或者.jpg。

function myGetExtName1( $path ){
 //取出最後一個出現.這個字元的索引位置
 $begin = strrpos($path,’.');
 //取出整個字串長度
 $end = strlen($path);
 //從最後一個.的索引的位置截取到字串的總長度後的結果返回
 return $begin?substr($path,$begin,$end):’該檔案沒有副檔名’;
}

function myGetExtName2( $path ){
 return preg_match_all(‘//.[^/.]+/is’,$path,$m)?$m[0][count($m[0])-1]:’該檔案沒有副檔名’;
}

function myGetExtName3( $path ){
 //找到最後一個出現.字元的索引位置並將其後面的所有字元一起返回
 return strrchr($path,’.')?strrchr($path,’.'):’該檔案沒有副檔名’;
}
2、寫一個函數,算出兩個檔案的相對路徑如 $a = ‘/a/b/c/d/e.php’; $b = ‘/a/b/12/34/c.php’; 計算出 $b 相對於 $a 的相路徑。
$a = ‘/a/b/c/d/e.php’;
$b = ‘/a/b/12/34/c.php’;

//求$b相對於$a的相對路徑
function getRelativelyPath($a,$b){
 //拆分成數組
 $a = explode(‘/’,$a);
 $b = explode(‘/’,$b);
 $path = ”;

 //將兩個數組的索引重設
 $c = array_values(array_diff($a,$b));
 $d = array_values(array_diff($b,$a));
 
 //去除掉a路徑的檔案名稱
 array_pop($c);

 //將a路徑中的目錄名替換為..
 foreach($c as &$v) $v = ‘..’;
 
 //合并兩個數組
 $e = array_merge($c,$d);

 //拼接路徑
 foreach($e as &$v)
  $path .= $v.’/';

 return rtrim($path,’/');
}
3、用二分法(也叫折半尋找法)尋找某元素,對像可以是有序數組。

//二分法尋找一個數組中是否存在某值
function binSearchWithArray($array,$searchValue){
 global $time;
 if(count($array)>=1){
  $mid = intval(count($array)/2);
 
  echo ‘第’,$time++,’次<br/>’;
  echo ‘當前數組:’;print_r($array);echo ‘<br/>’;
 
  echo ‘尋找位置索引:’,$mid,’<br/>’;
  echo ‘值:’,$array[$mid],’<br/><br/>’;

  if($searchValue == $array[$mid]){
   $time–;
   return $searchValue.’被找到了,於第’.$time.’次,索引為’.$mid.’<br/>’;
  }
  elseif($searchValue < $array[$mid]){
   $array = array_slice($array,0,$mid);
   return binSearchWithArray($array,$searchValue);
  }
  else{
   $array = array_slice($array,$mid+1,count($array));
   return binSearchWithArray($array,$searchValue);
  }
 }

 return $searchValue.’沒找到<br/>’;
}

$time = 1;

//要尋找的數組
$array = array(1,5,8,101,13,19,25,50,60,199,35);
//要尋找的值
$searchValue = 13;

//對數組排序,二分法的關鍵
sort($array);

echo ‘要尋找的值為:’,$searchValue,’<br/><br/>’;
echo binSearchWithArray($array,$searchValue);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.