av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語言

PHP大神分享面試技巧

時間:2025-03-10 10:23:00 php語言 我要投稿
  • 相關(guān)推薦

PHP大神分享面試技巧

  PHP新手們是不是對PHP求職感到很迷茫,沒關(guān)系,PHP大神來幫你。以下是百分網(wǎng)小編精心為大家整理的PHP大神分享面試技巧,希望對大家有所幫助!更多內(nèi)容請關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!

PHP大神分享面試技巧

  1.nginx使用哪種網(wǎng)絡(luò)協(xié)議?

  nginx是應(yīng)用層 我覺得從下往上的話 傳輸層用的是tcp/ip 應(yīng)用層用的是http

  fastcgi負(fù)責(zé)調(diào)度進(jìn)程

  2. 沒有輸出結(jié)果, 可能是什么原因, 簡述的解決此問題的過程(提示: 語法沒有問題)

  可能服務(wù)器上面沒有開啟短標(biāo)簽short_open_tag =設(shè)置為Off,,php.ini開啟短標(biāo)簽控制參數(shù): short_open_tag = On

  3. 簡述下面程序的輸出結(jié)果, 簡要說明為什么, 如何解決這類問題?

  $tmp = 0 == "a"? 1: 2;

  echo $tmp;

  ?>

  結(jié)果 1 int和string類型強(qiáng)制轉(zhuǎn)換造成的,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 INT

  TINYINT-2^7 - 2^7-10 ~ 2^8-1

  SMALLINT-2^15 - 2^15-1 0 ~ 2^16-1

  MEDIUMINT-2^23 - 2^23-1 0 ~ 2^24-1

  INT-2^31 - 2^31-1 0 ~ 2^32-1

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

  $arr = array(

  'I', 'AM', 'MILO!', 'DAY', 'DAY', 'UP!'

  );

  ?>

  $str = strtolower(implode(" ",$arr));

  7. 調(diào)用如下函數(shù)獲取函數(shù)并獲取count的值

  function get_list($cnd = array(), &$count = false)

  {

  // 偽代碼 處理$cnd 并賦值datas

  $datas = 'i am call back';

  $count && $count = rand(1, 10000);

  return $datas;

  }

  ?>

  $count=1;

  $data = get_list($cnd,&$count);

  echo $count;

  8. 幾種方式去取代session機(jī)制, 簡單描述各自的優(yōu)劣

  mysql、memcache、cookie保持一種唯一狀態(tài)標(biāo)識碼

  9. 下列HTTP狀態(tài)碼出現(xiàn)的可能原因, 如何處理

  200, 301, 404, 502, 503

  200

  請求已成功,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。

  301

  被請求的資源已永久移動到新位置,并且將來任何對此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個 URI 之一。如果可能,擁有鏈接編輯功能的客戶端應(yīng)當(dāng)自動把請求的地址修改為從服務(wù)器反饋回來的地址。除非額外指定,否則這個響應(yīng)也是可緩存的。   新的永久性的 URI 應(yīng)當(dāng)在響應(yīng)的 Location 域中返回。除非這是一個 HEAD 請求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的 URI 的超鏈接及簡短說明。   如果這不是一個 GET 或者 HEAD 請求,因此瀏覽器禁止自動進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎埱蟮臈l件可能因此發(fā)生變化。   注意:對于某些使用 HTTP/1.0 協(xié)議的瀏覽器,當(dāng)它們發(fā)送的 POST 請求得到了一個301響應(yīng)的話,接下來的重定向請求將會變成 GET 方式。

  404

  請求失敗,請求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如服務(wù)器知道情況的話,應(yīng)當(dāng)使用410狀態(tài)碼來告知舊資源因?yàn)槟承﹥?nèi)部的配置機(jī)制問題,已經(jīng)永久的不可用,而且沒有任何可以跳轉(zhuǎn)的地址。404這個狀態(tài)碼被廣泛應(yīng)用于當(dāng)服務(wù)器不想揭示到底為何請求被拒絕或者沒有其他適合的響應(yīng)可用的情況下。

  502

  作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時,從上游服務(wù)器接收到無效的響應(yīng)。

  503

  由于臨時的服務(wù)器維護(hù)或者過載,服務(wù)器當(dāng)前無法處理請求。這個狀況是臨時的,并且將在一段時間以后恢復(fù)。如果能夠預(yù)計(jì)延遲時間,那么響應(yīng)中可以包含一個 Retry-After 頭用以標(biāo)明這個延遲時間。如果沒有給出這個 Retry-After 信息,那么客戶端應(yīng)當(dāng)以處理500響應(yīng)的方式處理它。   注意:503狀態(tài)碼的存在并不意味著服務(wù)器在過載的時候必須使用它。某些服務(wù)器只不過是希望拒絕客戶端的連接。

  200 OK 一切正常,對GET和POST請求的應(yīng)答文檔跟在后面。

  301 Moved Permanently 客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應(yīng)該自動地訪問新的URL

  404 Not Found 無法找到指定位置的資源。這也是一個常用的應(yīng)答。

  502 Bad Gateway 服務(wù)器作為網(wǎng)關(guān)或者代理時,為了完成請求訪問下一個服務(wù)器,但該服務(wù)器返回了非法的應(yīng)答。

  503 Service Unavailable 服務(wù)器由于維護(hù)或者負(fù)載過重未能應(yīng)答。例如,Servlet可能在數(shù)據(jù)庫連接池已滿的情況下返回503。服務(wù)器返回503時可以提供一個Retry-After頭。

  10. 有如下數(shù)據(jù)庫, 用原生態(tài)mysql擴(kuò)展去連接并查詢user表的前十行

  host: 192.168.0.254

  port: 3306

  user: one

  pass: piece

  database: db_user

  table: user

  $link = mysql_connect("192.168.0.254:3306","one","piece") or die('Could not connect: '.mysql_error());

  mysql_select_db('db_user',$link);

  $query = mysql_query("select * from user limit 10");

  while($rs = mysql_fetch_array($query,MYSQL_ASSOC))

  {}

  11. 用autoload($class) 實(shí)現(xiàn)Lib目錄下的類的自動加載并可以兼容子目錄

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

  'ucfirst',

  explode('-', strtolower($request->action))

  )));

  ------------------------------------------------------------

  function __autoload($class)

  {

  $cls = strtolower(str_replace("_","/",$class));

  if(file_exsits(LIB.$cls.'.php'))

  {

  include_once(LIB.$cls.'.php');

  }

  else

  {

  die("not found {$class} class");

  }

  }

  defined("LIB",'/data/wwwroot/www.xx.com/lib/');

  $author = new Lib_Author();

  -----------------------------------------------------------

  function __authload($class)

  {

  $cls = explode("_",$class);

  if(@is_dir($cls[1]))

  {

  if(@is_file($cls[2]))

  {

  include_once("CON_PATH".$cls[1].'/'.$cls[2].".php");

  }

  else

  {

  dir('error');

  }

  }

  else if(@is_file($cls[1].".php"))

  {

  include_once("CON_PATH".$cls[1].".php");

  }

  else

  {

  dir('error');

  }

  }

  ---------------------------------------

  function __autoload($class)

  {

  $cls = explode("_",$class);

  $file = get_file($cls);

  if($file=='error')

  {

  die('error');

  }

  include_once($file);

  }

  function get_file($dir)

  {

  if(is_array($dir))

  {

  foreach($dir as $k=>$v)

  {

  $tmpdir .= $v.'/';

  if(is_dir('CON_PATH'.$tmpdir))

  {

  continue();

  }

  else if(is_file('CON_PATH'.$tmpdir.".php"))

  {

  return 'CON_PATH'.$tmpdir.".php";

  }

  else

  {

  return 'error';

  }

  }

  return 'error';

  }

  return 'error';

  }

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

  $sb = new controller_sb();

  ------------------------------------

  function __autoload_my_classes($classname)

  {

  # ... your logic to include classes here

  }

  spl_autoload_register('__autoload_my_classes');

  -----------------------------------------------------------

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

  set_error_handle(callback,level)

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

  }

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

  {

  switch($errno){

  case E_USER_ERROR:

  echo "error [$errno] $errstr fatal error on line $errline in file $errfile";

  break;

  case E_USER_WARNING:

  echo "my warning [$errno] $errstr":

  break;

  case E_USER_NOTICE:

  echo "my notice[$errno] $errstr";

  break;

  default:

  echo "unkonwn error type :[$errno] $errstr";

  break;

  }

  }

  set_erro_handler(dealErrorHandler);

  trigger_error("notice", E_USER_NOTICE);

  trigger_error("warning", E_USER_WARNING);

  trigger_error("error", E_USER_ERROR);

  13. 簡述兩種屏蔽php程序的notice警告的方法

  初始化變量,文件開始設(shè)置錯誤級別或者修改php.ini 設(shè)置error_reporting

  set_error_handler 和 @抑制錯誤

  1.在程序中添加:error_reporting (E_ALL & ~E_NOTICE);

  2.或者修改php.ini中的:error_reporting = E_ALL

  改為:error_reporting = E_ALL & ~E_NOTICE

  3.error_reporting(0);或者修改php.inidisplay_errors=Off

  14. instanceof的作用, 經(jīng)常在什么設(shè)計(jì)模式中使用

  單例模式,但是其他的模式也會用到

  15. 1023用二進(jìn)制表示, 并簡述計(jì)算過程

  10-2

  1023%2=1

  511%2 =1

  255%2 =1

  127%2 =1

  63%2 =1

  31%2 =1

  15%2 =1

  7%2 =1

  3%2 =1

  1%2 =1

  0 =0

  -------------------------------------------

  1023

  2^9=

  511

  k=9

  10 9 8 7 6 5 4 3 2 1

  1 1 1 1 1 1 1 1 1 1

  ----------------------

  1023 1

  1023-1/2=511 1

  511-1/2=255 1

  255-1/2=127 1

  127-1/2=63 1

  63-1/2=31 1

  31-1/2=15 1

  15-1/2=7 1

  7-1/2=3 1

  3-1/2=1 1

  -----------------------------------------------

  2-10

  只需用將二進(jìn)制數(shù)的各個位上的數(shù)從最右邊開始,最右邊的第一個數(shù)乘以二的零次方,第二個數(shù)乘以二的一次方,第三個數(shù)乘以二的二次方,依次類推可得第n個數(shù)乘以二的(n-1)次方,然后把得到的結(jié)果相加即可

  例如:110011=1*2^0+1*2^1+0*2^2+0*2^3+1*2^4+1*2^5=51

  這也可以算是一個公式就是An*2^(n-1) An表示二進(jìn)制數(shù)最右邊開始的第n個數(shù),

  將第一項(xiàng)第二項(xiàng)第三項(xiàng)一直到第n項(xiàng)用式子An*2^(n-1) 計(jì)算出來并加在一起即可

  16. 下面php程序輸出的內(nèi)容是什么? 為什么?

  $str = "aa\tbb\tcc";

  @list($a, $b, $c) = explode('\t', $str);

  echo $a,$b,$c;

  ?>

  aabbcc;//'\t'不會以\t切割字符串,explode之后申城一個array(0=>"aa\tbb\tcc")所以。。。,'\t'換成"\t"就被切割

  17. include和require 分別返回什么錯誤級別

  include會系統(tǒng)警告并繼續(xù)執(zhí)行,require會發(fā)出系統(tǒng)警告但是會引致致命錯誤令腳本終止運(yùn)行

  18. 現(xiàn)有一個函數(shù), 有不確定多少個的參數(shù)(可能有5個也可能有50個), 如何去定義這個函數(shù)

  方法一: 不借助php內(nèi)置函數(shù)

  方法二: 提示func_num_args() func_get_arg() unc_get_args()

  function param()

  {

  $numargs = func_num_args();

  echo "Number of arguments: $numargs

  \n";

  if ($numargs >= 2) {

  echo "Second argument is: " . func_get_arg(1) . "

  \n";

  }

  $arg_list = func_get_args();

  for ($i = 0; $i < $numargs; $i++) {

  echo "Argument $i is: " . $arg_list[$i] . "

  \n";

  }

  }

  param(1,2,3,4,5);

  /**

  2 * 例子寫完后,本來認(rèn)為完事了,結(jié)果遇到有人問call_user_func_array(),看了一下手冊

  3 * 原來,我上面的那個test函數(shù)還可以精簡成如下的例子,

  4 */

  5 function otest1 ($a)

  6 {

  7 echo( '一個參數(shù)' );

  8 }

  9

  10 function otest2 ( $a,$b)

  11 {

  12 echo( '二個參數(shù)' );

  13 }

  14

  15 function otest3 ( $a,$b,$c)

  16 {

  17 echo( '三個啦' );

  18 }

  19

  20 function otest ()

  21 {

  22 $args=func_get_args();

  23 $num=func_num_args();

  24 call_user_func_array( 'otest'.$num,$args );

  25 }

  26

  27 otest(1,2);

【PHP大神分享面試技巧】相關(guān)文章:

大神常用的PS技巧04-03

初級PHP程序員面試經(jīng)驗(yàn)分享06-08

幾個php技巧04-20

PHP小技巧07-12

網(wǎng)頁設(shè)計(jì)師面試技巧分享05-09

java工程師面試技巧分享05-29

PHP編程風(fēng)格規(guī)范分享06-02

php取整方式分享07-20

PHP學(xué)習(xí)路線以及PHP優(yōu)化技巧08-06