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