首頁  >  文章  >  後端開發  >  據說是新浪樂居的面試題目及我的答案以及對筆試題的一些建議

據說是新浪樂居的面試題目及我的答案以及對筆試題的一些建議

WBOY
WBOY原創
2016-07-29 08:56:101105瀏覽
一、 
1、有以下HTML:據說是新浪樂居的面試題目及我的答案以及對筆試題的一些建議 
1)以js取得方法取得該物件; )用________屬性取得屬性title的屬性值; 
3)用________方法取得屬性的屬性值; 
3)用________方法取得屬性sina_title的屬性值; 
(1) document.getElementById('img1'); ) document.getElementById('img1').getAttribute('title');
(3) document.getElementById('img1').getAttribute('sina_title');而反序列化的函數分別是______和_______; 
serialize,upserialize
3、rawurlencode和urlencode函數的差別是__________________; 
rawurlen會將空格轉換成+,urlencode空格轉換為%20
4、php中過濾HTML的函數是_______,轉義的函數是____________; 
strip_tags,htmlspecialchars
5、寫出用正則腳本過濾器掉; 
preg_replace('//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.rom tl.user left join tl_score on tl.rom tl.user left join tl_score on tl.uid 7.寫出三個呼叫系統指令的函數; 
system,passthru,exec
8、josn處理陣列的函數是; 
json_encode,json_decodedcoded是函數是_______;判斷是否為空的是___________; 
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'] 、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_pa​​cket設定的值過小導致的,max_allowed_pa​​cket用來控制緩衝區的包大小,有時在導入資料包的時候,此值過小就容易造成緩衝區容量不夠。將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($/strinstro);長度
 $end = strlen($path);
 //從最後一個.的索引的位置截取到字串的總長度後的結果返回
,$path begin,$end):'該檔案沒有副檔名';
}
function myGetExtName2( $path ){
 return preg_match_allf/. 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); = explode('/',$b);
 $path = '';
 //將兩個陣列的索引重置
 $c.= ;
 $d = array_values(array_diff($b,$a));
 
 ///路徑中的目錄名稱替換為..
 foreach($c as &$v) $v = '..';
 
=$/合併兩個數組 
=$/合併兩個數組c,$d);
 //拼接路徑
 foreach($e as &$v)
  $path . $v.'/';
  $path . $v.'/'; ');
}
3、用二分法(也叫折半查找法)查找某元素,物件可以是有序數組。
//二分法找出一個陣列中是否存在某值
function binSearchWithArray($array,$searchValue){
 global $time;
  $mid = intval(count($array)/2);
  
  echo ($array);echo '
';

  
  echo '尋找位置索引:',$mid,'
';

 值' mid],'

';

  if($searchValue == $array[$mid]){
   $time--
   $time--
   $時間- ,於第'.$time.'次,索引為'.$mid.'
';

  }
  elseif($searchValue 🠎 = array_slice($array,0,$mid);
   return binSearchWithArray($array,$searchValue);
   slice($array,$mid+1, count($array));
   return binSearchWithArray($array,$searchValue);
  }
 }
. }
$time = 1;
//要找的陣列
$array = array(1,5,8,101,13,19,25,50,60,199,35);值
$searchValue = 13;
//對數組排序,二分法的關鍵
sort($array);
searchecho '要查找的值為/>
';

echo binSearchWithArray($array,$searchValue);
 
這些題說實話不難,但我還是必須承認有些題函數查了資料,因為很多題函數查了不借助IDE根本想不起來怎麼寫,有些概念以前即使知道並理解,但好長時間不涉及卻會漸漸淡忘,比如按引用傳遞那個。
面試時都是讓拿筆寫,我相信沒幾個人能用筆在短時間內把這些東西都寫出來,尤其是後面的寫代碼的,需要反覆修改,因為你在思考的過程中邏輯肯定會出現些漏洞,需要將程式碼執行下才能明白哪裡出了問題,用筆寫真的是扯淡。就算在計算機上寫,後面的一些程式碼我還寫了2,3個小時呢。
面試時的筆試題,真的有待商榷,相信不只我一個人有此感受吧?上次去騰訊面試我就被筆試題給害了。到那了腦袋一片空白,回家後慢慢回想那些題,發現都能寫出來的。
各位都看看我的答案,有有沒有疏漏或錯誤的地方,我並不是覺得考這些東西完全沒有價值,只是覺得面試時作為筆試題很不妥。希望各位在各公司參與面試別人的朋友能參考下我的意見,換一種更合理的考核方式。

原文網址:http://bbs.csdn.net/topics/340149214
以上就介紹了據說是新浪樂居的面試題及我的答案以及對筆試題的一些建議,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn