php100道面试题.docx
- 文档编号:10757361
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:30
- 大小:25.97KB
php100道面试题.docx
《php100道面试题.docx》由会员分享,可在线阅读,更多相关《php100道面试题.docx(30页珍藏版)》请在冰点文库上搜索。
php100道面试题
一、基础题1.写出如下程序的输出结果
$str1=null;
$str2=false;
echo$str1==$str2?
‘相等’:
‘不相等’;
$str3=”;
$str4=0;
echo$str3==$str4?
‘相等’:
‘不相等’;
$str5=0;
$str6=‘0′;
echo$str5===$str6?
‘相等’:
‘不相等’;
?
>
2.写出如下程序的输出结果
$a1=null;
$a2=false;
$a3=0;
$a4=”;
$a5=‘0′;
$a6=‘null’;
$a7=array();
$a8=array(array());
echoempty($a1)?
‘true’:
‘false’;
echoempty($a2)?
‘true’:
‘false’;
echoempty($a3)?
‘true’:
‘false’;
echoempty($a4)?
‘true’:
‘false’;
echoempty($a5)?
‘true’:
‘false’;
echoempty($a6)?
‘true’:
‘false’;
echoempty($a7)?
‘true’:
‘false’;
echoempty($a8)?
‘true’:
‘false’;
?
>
3.写出如下程序的输出结果
$test=‘aaaaaa’;
$abc=&$test;
unset($test);
echo$abc;
?
>
4.写出如下程序的输出结果
$count=5;
functionget_count(){
static$count=0;
return$count++;
}
echo$count;
++$count;
echoget_count();
echoget_count();
?
>
5.写出如下程序的输出结果
$GLOBALS['var1']=5;
$var2=1;
functionget_value(){
global$var2;
$var1=0;
return$var2++;
}
get_value();
echo$var1;
echo$var2;
?
>
6.写出如下程序的输出结果
functionget_arr($arr){
unset($arr[0]);
}
$arr1=array(1,2);
$arr2=array(1,2);
get_arr(&$arr1);
get_arr($arr2);
echocount($arr1);
echocount($arr2);
?
>
7.使用五种以上方式获取一个文件的扩展名
要求:
dir/upload.image.jpg,找出.jpg或者jpg,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如get_ext1($file_name),get_ext2($file_name)
二、算法题
1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
2.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
3.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
【附答案】(以下答案不一定是最好的,只是一个简单的参考)
一、基础题
1.相等相等不相等
2.truetruetruetruetruefalsetruefalse
3.aaaaaa
4.501
5.52
6.12
7.使用五种以上方式获取一个文件的扩展名
functionget_ext1($file_name){
returnstrrchr($file_name,‘.’);
}
functionget_ext2($file_name){
returnsubstr($file_name,strrpos($file_name,‘.’));
}
functionget_ext3($file_name){
returnarray_pop(explode(‘.’,$file_name));
}
functionget_ext4($file_name){
$p=pathinfo($file_name);
return$p['extension'];
}
functionget_ext5($file_name){
returnstrrev(substr(strrev($file_name),0,strpos(strrev($file_name),‘.’)));
}
二、算法题
1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
//冒泡排序(数组排序)
functionbubble_sort($array)
{
$count=count($array);
if($count<=0)returnfalse;
for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j–){
if($array[$j]<$array[$j-1]){
$tmp=$array[$j];
$array[$j]=$array[$j-1];
$array[$j-1]=$tmp;
}
}
}
return$array;
}
//快速排序(数组排序)
functionquick_sort($array){
if(count($array)<=1)return$array;
$key=$array[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i if($array[$i]<=$key) $left_arr[]=$array[$i]; else $right_arr[]=$array[$i]; } $left_arr=quick_sort($left_arr); $right_arr=quick_sort($right_arr); returnarray_merge($left_arr,array($key),$right_arr); } 2.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组 //二分查找(数组里查找某个元素) functionbin_sch($array,$low,$high,$k){ if($low<=$high){ $mid=intval(($low+$high)/2); if($array[$mid]==$k){ return$mid; }elseif($k<$array[$mid]){ returnbin_sch($array,$low,$mid-1,$k); }else{ returnbin_sch($array,$mid+1,$high,$k); } } return-1; } //顺序查找(数组里查找某个元素) functionseq_sch($array,$n,$k){ $array[$n]=$k; for($i=0;$i<$n;$i++){ if($array[$i]==$k){ break; } } if($i<$n){ return$i; }else{ return-1; } } 3.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数 //二维数组排序,$arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 functionarray_sort($arr,$keys,$order=0){ if(! is_array($arr)){ returnfalse; } $keysvalue=array(); foreach($arras$key=>$val){ $keysvalue[$key]=$val[$keys]; } if($order==0){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach($keysvalueas$key=>$vals){ $keysort[$key]=$key; } $new_array=array(); foreach($keysortas$key=>$val){ $new_array[$key]=$arr[$val]; } return$new_array; } 一份php面试题(附答案) 2007-06-2510: 36 考的很基础,但基础不牢,有一批不会做。 像在HTTP1.0中,状态码401的含义,error_reporting(2047)这些不知道。 但用2047似乎有点儿变态,太不易读。 如果可以参考手册~~~~ *1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量 (1)中;而链接到当前页面的URL记录在预定义变量 (2)中。 2.执行程序段 phpecho8%(-2)? >将输出(3)。 3.在HTTP1.0中,状态码401的含义是(4);如果返回“找不到文件”的提示,则可用header函数,其语句为(5)。 4.数组函数arsort的作用是(6);语句error_reporting(2047)的作用是(7)。 5.PEAR中的数据库连接字符串格式是(8)。 6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉): (9)。 7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块, 然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 8.语句include和require都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。 9.类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是(14)。 10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on. 11.SQL中LEFTJOIN的含义是(16)。 如果tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject), 要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。 12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。 13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 14.简述论坛中无限分类的实现原理。 15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。 用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。 //答案(填空): 1.echo$_SERVER['PHP_SELF'];echo$_SERVER["HTTP_REFERER"]; 2.0 3.(4)未授权(5)header(“HTTP/1.0404NotFound”); 4.(6)对数组进行逆向排序并保持索引关系 (7)Allerrorsandwarnings 5.没弄明白 6./”; echopreg_replace(“//si”,“替换内容”,$script); ? > 6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块, 然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 答: LoadModulephp5_module“c: /php/php5apache2.dll”;AddTypeapplication/x-httpd-php.php 见参考手册》目录》II.安装与配置》6.Windows系统下的安装》MicrosoftWindows下的Apache2.0.x 7.语句include和require都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。 答: 在如何处理失败时,include()产生一个警告而require()则导致一个致命错误;require_once()/include_once() 8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on. 答: allow_call_time_pass_referenceboolean: 是否启用在函数调用时强制参数被按照引用传递,见参考手册》附录G 9.SQL中LEFTJOIN的含义是__,如果tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____. 答: 自然左外连接 createdatabasephpinterview; usephpinterview createtabletbl_user ( ID int notnull, name varchar(50) notnull, primarykey(ID) ); createtabletbl_score ( ID int notnull, score dec(6,2) notnull, subject varchar(20) notnull ); insertintotbl_user(ID,name)values(1,‘beimu’); insertintotbl_user(ID,name)values(2,‘aihui’); insertintotbl_score(ID,score,subject)values(1,90,‘语文’); insertintotbl_score(ID,score,subject)values(1,80,‘数学’); insertintotbl_score(ID,score,subject)values(2,86,‘数学’); insertintotbl_score(ID,score,subject)values(2,96,‘语文’); selectA.id,sum(B.score)assumscore fromtbl_userAleftjointbl_scoreB onA.ID=B.ID groupbyA.id 10. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____ 答: 结束标识符所在的行不能包含任何其它字符除”;” 11.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 php functionmy_scandir($dir) { $files=array(); if(is_dir($dir)) { if($handle=opendir($dir)) { while(($file=readdir($handle))! ==false) { if($file! =”.”&&$file! =”..”) { if(is_dir($dir.”/”.$file)) { $files[$file]=my_scandir($dir.”/”.$file); } else { $files[]=$dir.”/”.$file; } } } closedir($handle); return$files; } } } print_r(my_scandir(“D: ProgramFilesInternetExplorerMUI”)); ? > <四> 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量 (1)中;而链接到当前页面的的前一页面URL记录在预定义变量 (2)中 php //本页地址,SCRIPT_NAME也可以: php/test.php echo$_SERVER['PHP_SELF']." //链接到当前页面的前一页面的URL地址: echo$_SERVER['HTTP_REFERER']." //其它的见参考手册: 语言参考》变量》预定义变量 //前执行脚本的绝
";
";
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- php100 试题