php面試題分享(正在找工作的朋友有福了)

來源:互聯網
上載者:User
  1. $tmp = 0 == "a"? 1: 2;
  2. echo $tmp;
  3. ?>
複製代碼

結果 1 int和string類型強制轉換造成的,0==="a"

0 == 0 肯定是true啊PHP是弱類型。。$tmp = 0 === "a"? 1: 2;echo $tmp; 這樣就是2

4. 已知一個字串如下: $str = "1109063 milo 1";用一行代碼將該字串裡面的1109063賦值給$uid, milo賦值給$user, 1賦值給$type空格如下list($uid, $user, $type) = explode(" ", $str);\t如下list($uid, $user, $type) = explode("\t", $str);list($uid, $user, $type) = sscanf($str, "%d %s %d");$n = sscanf($auth, "%d\t%s %s", $id, $first, $last);

5. 分別列出如下類型的有符號和無符號範圍 TINYINT SMALLINT MEDIUMINT INTTINYINT-2^7 - 2^7-10 ~ 2^8-1SMALLINT-2^15 - 2^15-1 0 ~ 2^16-1MEDIUMINT-2^23 - 2^23-1 0 ~ 2^24-1INT-2^31 - 2^31-1 0 ~ 2^32-1

6. 將下面的數組用一行拼裝成一個字串i am milo! day day up!

  1. $arr = array(
  2. 'I', 'AM', 'MILO!', 'DAY', 'DAY', 'UP!'
  3. );
  4. ?>
  5. $str = strtolower(implode(" ",$arr));
複製代碼

7. 調用如下函數擷取函數並擷取count的值

  1. function get_list($cnd = array(), &$count = false)
  2. {
  3. // 虛擬碼 處理$cnd 並賦值datas
  4. $datas = 'i am call back';
  5. $count && $count = rand(1, 10000);
  6. return $datas;
  7. }
  8. ?>
  9. $count=1;
  10. $data = get_list($cnd,&$count);
  11. echo $count;
複製代碼

8. 幾種方式去取代session機制, 簡單描述各自的優劣mysql、memcache、cookie保持一種唯一狀態標識碼

9. 下列HTTP狀態代碼出現的可能原因, 如何處理200, 301, 404, 502, 503200請求已成功,請求所希望的回應標頭或資料體將隨此響應返回。301被請求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用本響應返回的若干個 URI 之一。如果可能,擁有連結編輯功能的用戶端應當自動把請求的地址修改為從伺服器反饋回來的地址。除非額外指定,否則這個響應也是可快取的。   新的永久性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,否則響應的實體中應當包含指向新的 URI 的超連結及簡短說明。   如果這不是一個 GET 或者 HEAD 請求,因此瀏覽器禁止自動進行重新導向,除非得到使用者的確認,因為請求的條件可能因此發生變化。

注意:對於某些使用 HTTP/1.0 協議的瀏覽器,當它們發送的 POST 請求得到了一個301響應的話,接下來的重新導向請求將會變成 GET 方式。

404  請求失敗,請求所希望得到的資源未被在伺服器上發現。沒有資訊能夠告訴使用者這個狀況到底是暫時的還是永久的。假如伺服器知道情況的話,應當使用410狀態代碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。404這個狀態代碼被廣泛應用於當伺服器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。502  作為網關或者代理工作的伺服器嘗試執行請求時,從上遊伺服器接收到無效的響應。503  由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以後恢複。如果能夠預計延遲時間,那麼響應中可以包含一個 Retry-After 頭用以標明這個延遲時間。如果沒有給出這個 Retry-After 資訊,那麼用戶端應當以處理500響應的方式處理它。   注意:503狀態代碼的存在並不意味著伺服器在過載的時候必須使用它。某些伺服器只不過是希望拒絕用戶端的串連。

200 OK 一切正常,對GET和POST請求的應答文檔跟在後面。301 Moved Permanently 客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL404 Not Found 無法找到指定位置的資源。這也是一個常用的應答。502 Bad Gateway 伺服器作為網關或者代理時,為了完成請求訪問下一個伺服器,但該伺服器返回了非法的應答。503 Service Unavailable 伺服器由於維護或者負載過重未能應答。例如,Servlet可能在資料庫連接池已滿的情況下返回503。伺服器返回503時可以提供一個Retry-After頭。

10. 有如下資料庫, 用原生態mysql擴充去串連並查詢user表的前十行host: 192.168.0.254port: 3306user: onepass: piecedatabase: db_usertable: user

  1. $link = mysql_connect("192.168.0.254:3306","one","piece") or die('Could not connect: '.mysql_error());
  2. mysql_select_db('db_user',$link);
  3. $query = mysql_query("select * from user limit 10");
  4. while($rs = mysql_fetch_array($query,MYSQL_ASSOC))
  5. {}
複製代碼

11. 用autoload($class) 實現Lib目錄下的類的自動載入並可以相容子目錄

  1. $request->action = lcfirst(implode(array_map(

  2. 'ucfirst',
  3. explode('-', strtolower($request->action))
  4. )));
  5. ------------------------------------------------
  6. function __autoload($class)
  7. {
  8. $cls = strtolower(str_replace("_","/",$class));

  9. if(file_exsits(LIB.$cls.'.php'))
  10. {
  11. include_once(LIB.$cls.'.php');
  12. }
  13. else
  14. {
  15. die("not found {$class} class");
  16. }
  17. }
  18. defined("LIB",'/data/wwwroot/www.xx.com/lib/');
  19. $author = new Lib_Author();
  20. -----------------------------------------------------------
  21. function __authload($class)
  22. {
  23. $cls = explode("_",$class);
  24. if(@is_dir($cls[1]))
  25. {
  26. if(@is_file($cls[2]))
  27. {
  28. include_once("CON_PATH".$cls[1].'/'.$cls[2].".php");
  29. }
  30. else
  31. {
  32. dir('error');
  33. }
  34. }
  35. else if(@is_file($cls[1].".php"))
  36. {
  37. include_once("CON_PATH".$cls[1].".php");
  38. }
  39. else
  40. {
  41. dir('error');
  42. }
  43. }
  44. ---------------------------------------
  45. function __autoload($class)
  46. {
  47. $cls = explode("_",$class);
  48. $file = get_file($cls);
  49. if($file=='error')
  50. {
  51. die('error');
  52. }
  53. include_once($file);
  54. }
  55. function get_file($dir)
  56. {
  57. if(is_array($dir))
  58. {
  59. foreach($dir as $k=>$v)
  60. {
  61. $tmpdir .= $v.'/';
  62. if(is_dir('CON_PATH'.$tmpdir))
  63. {
  64. continue();
  65. }
  66. else if(is_file('CON_PATH'.$tmpdir.".php"))
  67. {
  68. return 'CON_PATH'.$tmpdir.".php";
  69. }
  70. else
  71. {
  72. return 'error';
  73. }
  74. }
  75. return 'error';
  76. }
  77. return 'error';
  78. }

  79. defined("CON_PATH","/data/wwwroot/www.xx.com/app/cntroller/");

  80. $sb = new controller_sb();
  81. ------------------------------------
  82. function __autoload_my_classes($classname)
  83. {
  84. # ... your logic to include classes here
  85. }
  86. spl_autoload_register('__autoload_my_classes');
  87. -----------------------------------------------------------

複製代碼

12. 用set_error_handle 去捕獲錯誤並輸出, 層級自己定

  1. set_error_handle(callback,level)

  2. function callback(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] ){
  3. }

  4. function dealErrorHandler($errno,$errstr,$errfile,$errline)

  5. {
  6. switch($errno){
  7. case E_USER_ERROR:
  8. echo "error [$errno] $errstr fatal error on line $errline in file $errfile";
  9. break;
  10. case E_USER_WARNING:
  11. echo "my warning [$errno] $errstr":
  12. break;
  13. case E_USER_NOTICE:
  14. echo "my notice[$errno] $errstr";
  15. break;
  16. default:
  17. echo "unkonwn error type :[$errno] $errstr";
  18. break;
  19. }
  20. }
  21. set_erro_handler(dealErrorHandler);

  22. trigger_error("notice", E_USER_NOTICE);

  23. trigger_error("warning", E_USER_WARNING);
  24. trigger_error("error", E_USER_ERROR);

複製代碼

13. 簡述兩種屏蔽php程式的notice警告的方法初始設定變數,檔案開始設定錯誤層級或者修改php.ini 設定error_reportingset_error_handler 和 @抑制錯誤

1.在程式中添加:error_reporting (E_ALL & ~E_NOTICE);2.或者修改php.ini中的:error_reporting = E_ALL改為:error_reporting = E_ALL & ~E_NOTICE3.error_reporting(0);或者修改php.inidisplay_errors=Off 1 2 3 4 下一頁 尾頁

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.