当前位置:免费学习网考试资料计算机类内容页

2021年PHP面试之编程题及答案

2021-09-12 18:50:01 计算机类 访问手机版

  2021年PHP面试之编程题及答案

  在面试PHP的时候万一遇到编程题怎么办?以下是小编精心为大家整理的PHP面试编程题及答案,希望对大家有所帮助!更多内容请关注应届毕业生网!

  1. 用autoload$class 实现Lib目录下的类的自动加载并可以兼容子目录

  $request->action = lcfirstimplodearray_map

  'ucfirst',

  explode'-', strtolower$request->action

  ;

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

  function __autoload$class

  $cls = strtolowerstr_replace"_","/",$class;

  iffile_exsitsLIB.$cls.'.php'

  include_onceLIB.$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

  ifis_array$dir

  foreach$dir as $k=>$v

  $tmpdir .= $v.'/';

  ifis_dir'CON_PATH'.$tmpdir

  continue;

  else ifis_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';

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

  2. 用set_error_handle 去捕获错误并输出, 级别自己定

  set_error_handlecallback,level

  function callbackint $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_handlerdealErrorHandler;

  trigger_error"notice", E_USER_NOTICE;

  trigger_error"warning", E_USER_WARNING;

  trigger_error"error", E_USER_ERROR;

  3. 简述两种屏蔽php程序的notice警告的方法

  初始化变量,文件开始设置错误级别或者修改php.ini 设置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_reporting0;或者修改php.inidisplay_errors=Off

  4. instanceof的作用, 经常在什么设计模式中使用

  单例模式,但是其他的模式也会用到

  5. 1023用二进制表示, 并简述计算过程

  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

  只需用将二进制数的各个位上的数从最右边开始,最右边的.第一个数乘以二的零次方,第二个数乘以二的一次方,第三个数乘以二的二次方,依次类推可得第n个数乘以二的n-1次方,然后把得到的结果相加即可

  例如: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表示二进制数最右边开始的第n个数,

  将第一项第二项第三项一直到第n项用式子An*2^n-1 计算出来并加在一起即可

  6. 有如下数据库, 用原生态mysql扩展去连接并查询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