新浪樂居
一、
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);