版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、基础题1. 写出如下程序的输出结果2. 写出如下程序的输出结果3. 写出如下程序的输出结果4. 写出如下程序的输出结果5. 写出如下程序的输出结果6. 写出如下程序的输出结果7. 使用五种以上方式获取一个文件的扩展名要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)二、算法题1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序
2、查找必须考虑效率,对象可以是一个有序数组3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数【附答案】(以下答案不一定是最好的,只是一个简单的参考)一、基础题1. 相等 相等 不相等2. true true true true true false true false3. aaaaaa4. 5 0 15. 5 26. 1 27. 使用五种以上方式获取一个文件的扩展名function get_ext1($file_name)return strrchr($file_name, .);function get_ext2($file_name)return substr($fi
3、le_name, strrpos($file_name, .);function get_ext3($file_name)return array_pop(explode(., $file_name);function get_ext4($file_name)$p = pathinfo($file_name);return $pextension;function get_ext5($file_name)return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), .);二、算法题1. 使用PHP描述冒泡排序和快速
4、排序算法,对象可以是一个数组/冒泡排序(数组排序)function bubble_sort($array)$count = count($array);if ($count = 0) return false;for($i=0; $i$i; $j)if ($array$j $array$j-1)$tmp = $array$j;$array$j = $array$j-1;$array$j-1 = $tmp;return $array;/快速排序(数组排序)function quick_sort($array) if (count($array) = 1) return $array;$key =
5、 $array0;$left_arr = array();$right_arr = array();for ($i=1; $icount($array); $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);return array_merge($left_arr, array($key), $right_arr);2. 使用PHP描述顺序查找和二分查找(也叫做折半查
6、找)算法,顺序查找必须考虑效率,对象可以是一个有序数组/二分查找(数组里查找某个元素)function bin_sch($array, $low, $high, $k)if ($low = $high)$mid = intval($low+$high)/2);if ($array$mid = $k)return $mid;elseif ($k $array$mid)return bin_sch($array, $low, $mid-1, $k);elsereturn bin_sch($array, $mid+1, $high, $k);return -1;/顺序查找(数组里查找某个元素)fun
7、ction seq_sch($array, $n, $k)$array$n = $k;for($i=0; $i$n; $i+)if($array$i=$k)break;if ($i $val) $keysvalue$key = $val$keys;if($order = 0)asort($keysvalue);else arsort($keysvalue);reset($keysvalue);foreach($keysvalue as $key = $vals) $keysort$key = $key;$new_array = array();foreach($keysort as $key
8、= $val) $new_array$key = $arr$val;return $new_array;一份php面试题(附答案)2007-06-25 10:36考的很基础,但基础不牢,有一批不会做。像在HTTP 1.0中,状态码 401 的含义,error_reporting(2047)这些不知道。但用2047似乎有点儿变态,太不易读。如果可以参考手册* 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。2.执行程序段将输出(3)。3.在HTTP 1.0中,状态码 401 的含义是(4);如果返回“找不到文件”
9、的提示,则可用 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
10、);为了避免多次包含同一文件,可以用语句(13)来代替它们。9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.11.SQL 中LEFT JOIN的含义是(16)。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。12.在PHP中,hered
11、oc是一种特殊的字符串,它的结束标志必须(18)。13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。14.简述论坛中无限分类的实现原理。15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。/答案(填空):1. echo $_SERVERPHP_SELF; echo $_SERVERHTTP_REFERER;2. 03. (4)未授权 (5) header(“HTTP/1.0 404 Not Found”);4. (6)对数组进行逆向排序并保持索引关系 (7)All erro
12、rs and warnings5. 没弄明白6. /.*?.*?/si7.(10) LoadModule php5_module “D:/xampp/apache/bin/php5apache2.dll”(11) AddType application/x-httpd-php-source .phpsAddType application/x-httpd-php .php .php5 .php4 .php3 .phtml8.(12) 发生异常时include产生警告require产生致命错误 (13) require_once()/include_once()9. serialize() /u
13、nserialize()10. allow_call_time_pass_reference11. (16) 自然左外连接(17) select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.ID12. 结束标识符所在的行不能包含任何其它字符除”;”13./* 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。* param string $dir* return
14、array*/function my_scandir($dir)$files = array();if ( $handle = opendir($dir) ) while ( ($file = readdir($handle) != false ) if ( $file != “.” & $file != “.” ) if ( is_dir($dir . “/” . $file) ) $files$file = rec_scandir($dir . “/” . $file);else $files = $file;closedir($handle);return $files;转自: http
15、://php-word-mianshi/1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中?php/本页地址,SCRIPT_NAME也可以:php/test.phpecho $_SERVERPHP_SELF.”;/链接到当前页面的前一页面的 URL 地址:echo $_SERVERHTTP_REFERER.”;/其它的见参考手册:语言参考变量预定义变量/前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.phpecho $_SERVERSCRIPT_FILEN
16、AME.”;/正在浏览当前页面用户的 IP 地址:echo $_SERVERREMOTE_ADDR.”;/查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2echo $_SERVERQUERY_STRING.”;/当前运行脚本所在的文档根目录:d:inetpubwwwrootecho $_SERVERDOCUMENT_ROOT.”;?2.执行程序段将输出_。?php/参考手册语言参考运算符算术运算符%为取模运算,输出0echo 8%(-2).”;/取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2echo (-8)%3).”;
17、/输出2echo (8%(-3).”;?3.在HTTP 1.0中,状态码 401 的含义是_;如果返回“找不到文件”的提示,则可用 header 函数,其语句为_。答:401表示未授权;header(“HTTP/1.0 404 Not Found”);见参考手册函数参考HTTP函数header4.数组函数 arsort 的作用是_;语句 error_reporting(2047)的作用是_。答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings5.写出一个正则表达式,过虑网页上的所有J
18、S/VBS脚本(即把script标记及其内容都去掉):?php$script=”以下内容不显示:alert(cc);”;echo preg_replace(“/.*?.*?/si”, “替换内容”, $script);?6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句_动态装载PHP模块,然后再用语句_使得Apache把所有扩展名为php的文件都作为PHP脚本处理。答:LoadModule php5_module “c:/php/php5apache2.dll”;AddType application/x-httpd-php .php见参考手册目录II. 安装与配
19、置6. Windows 系统下的安装Microsoft Windows 下的 Apache 2.0.x7.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是_;为了避免多次包含同一文件,可以用语句_来代替它们。答:在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误;require_once()/include_once()8.一个函数的参数不能是对变量的引用,除非在php.ini中把_设为on.答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引
20、用传递, 见参考手册附录G9.SQL 中LEFT JOIN的含义是_,如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句_.答:自然左外连接create database phpinterview;use phpinterviewcreate table tbl_user(ID intnot null,name varchar(50)not null,primary key (ID
21、);create table tbl_score(ID intnot null,scoredec(6,2) not null,subjectvarchar(20)not null);insert into tbl_user (ID, name) values (1, beimu);insert into tbl_user (ID, name) values (2, aihui);insert into tbl_score (ID, score, subject) values (1, 90, 语文);insert into tbl_score (ID, score, subject) valu
22、es (1, 80, 数学);insert into tbl_score (ID, score, subject) values (2, 86, 数学);insert into tbl_score (ID, score, subject) values (2, 96, 语文);select A.id,sum(B.score) as sumscorefrom tbl_user A left join tbl_score Bon A.ID=B.IDgroup by A.id10.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须_答:结束标识符所在的行不能包含任何其它字符除”;”11.
23、写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中?php/本页地址,SCRIPT_NAME也可以:php/test.phpecho $_SERVERPHP_SELF.;/链接到当前页面的前一页面的 URL 地址:echo $_SERVERHTTP_REFERER.;/其它的见参考手册:语言参考变量预定义变量/前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php echo $_SERVERSCRIPT_FILENAME.;/正
24、在浏览当前页面用户的 IP 地址:echo $_SERVERREMOTE_ADDR.;/查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2echo $_SERVERQUERY_STRING.;/当前运行脚本所在的文档根目录:d:inetpubwwwrootecho $_SERVERDOCUMENT_ROOT.;?2.执行程序段将输出_。?php/参考手册语言参考运算符算术运算符%为取模运算,输出0echo 8%(-2).;/取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2echo (-8)%3).;/输出2echo (8%(
25、-3).;?3.在HTTP 1.0中,状态码 401 的含义是_;如果返回“找不到文件”的提示,则可用 header 函数,其语句为_。答:401表示未授权;header(HTTP/1.0 404 Not Found);见参考手册函数参考HTTP函数header4.数组函数 arsort 的作用是_;语句 error_reporting(2047)的作用是_。答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script
26、标记及其内容都去掉):?php$script=以下内容不显示:alert(cc);echo preg_replace(/.*?.*?/si, 替换内容, $script);?6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句_动态装载PHP模块,然后再用语句_使得Apache把所有扩展名为php的文件都作为PHP脚本处理。答:LoadModule php5_module c:/php/php5apache2.dll;AddType application/x-httpd-php .php见参考手册目录II. 安装与配置6. Windows 系统下的安装Microso
27、ft Windows 下的 Apache 2.0.x7.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是_;为了避免多次包含同一文件,可以用语句_来代替它们。答:在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误;require_once()/include_once()8.一个函数的参数不能是对变量的引用,除非在php.ini中把_设为on.答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册附录G9.SQL 中LEFT
28、JOIN的含义是_,如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句_.答:自然左外连接create database phpinterview;use phpinterviewcreate table tbl_user(ID int not null,name varchar(50) not null,primary key (ID);create table tbl_scor
29、e(ID int not null,score dec(6,2) not null,subject varchar(20) not null);insert into tbl_user (ID, name) values (1, beimu);insert into tbl_user (ID, name) values (2, aihui);insert into tbl_score (ID, score, subject) values (1, 90, 语文);insert into tbl_score (ID, score, subject) values (1, 80, 数学);inse
30、rt into tbl_score (ID, score, subject) values (2, 86, 数学);insert into tbl_score (ID, score, subject) values (2, 96, 语文);select A.id,sum(B.score) as sumscorefrom tbl_user A left join tbl_score Bon A.ID=B.IDgroup by A.id10. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须_答:结束标识符所在的行不能包含任何其它字符除;11.写一个函数,能够遍历一个文件夹下的所有文
31、件和子文件夹。41、$arr = array(james, tom, symfony); 请打印出第一个元素的值 (1分)答:echo $array0;42、请将41题的数组的值用,号分隔并合并成字串输出(1分)答:for($i=0;$icount($array);$i+) echo $array$i.,;43、$a = abcdef; 请取出$a的值并打印出第一个字母(1分)答:echo $a0 或 echo substr($a,0,1)44、PHP可以和sql server/oracle等数据库连接吗?(1分)答:当然可以45、请写出PHP5权限控制修饰符(3分)答:public(公共),
32、private(私用),protected(继承)46、请写出php5的构造函数和析构函数(2分)答:_construct , _destruct47、完成以下: (一)创建新闻发布系统,表名为message有如下字段 (3分)id 文章idtitle 文章标题content 文章内容category_id 文章分类id hits 点击量答:CREATE TABLE message( id int(10) NOT NULL auto_increment, title varchar(200) default NULL, content text, category_id int(10) NOT
33、 NULL, hits int(20), PRIMARY KEY(id); )ENGINE=InnoDB DEFAULT CHARSET=utf8; (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)comment_id 回复idid 文章id,关联message表中的idcomment_content 回复内容现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面文章id 文章标题 点击量 回复数量用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0答:SELECT message.id id,message.tit
34、le title,IF(message.hits IS NULL,0,message.hits) hits, IF(comment.id is NULL,0,count(*) number FROM message LEFT JOIN comment ON message.id=comment.id GROUP BY message.id;(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)category_id int(4) not null auto_increment;categroy_name varchar(40) not null;用户输入文章时,通过选择下拉
35、菜单选定文章分类写出如何实现这个下拉菜单答:function categoryList() $result=mysql_query(select category_id,categroy_name from category) or die(Invalid query: . mysql_error(); print(n); while($rowArray=mysql_fetch_array($result) print(.$rowArraycategroy_name.n); print();编程题:1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名 例如: http:/ww
36、/abc/de/fg.php?id=1 需要取出 php 或 .php答案1: function getExt($url) $arr = parse_url($url); $file = basename($arrpath); $ext = explode(.,$file); return $ext1;答案2: function getExt($url) $url = basename($url); $pos1 = strpos($url,.); $pos2 = strpos($url,?); if(strstr($url,?) return substr($url,
37、$pos1 + 1,$pos2 - $pos1 - 1); else return substr($url,$pos1); 2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5请注意:1. 需要处理完整的 html 页面,即不光此 meta 语句2. 忽略大小写 3. 和 在此处是可以互换的 4. Content-Type 两侧的引号是可以忽略的,但 text/html; charset=gbk 两侧的不行5.
38、 注意处理多余空格3. 写一个函数,算出两个文件的相对路径如 $a = /a/b/c/d/e.php;$b = /a/b/12/34/c.php;计算出 $b 相对于 $a 的相对路径应该是 ././c/d将()添上答:function getRelativePath($a, $b) $returnPath = array(dirname($b); $arrA = explode(/, $a); $arrB = explode(/, $returnPath0); for ($n = 1, $len = count($arrB); $n 0) $returnPath = array_merge(
39、$returnPath, array_fill(1, $len - $n, .); $returnPath = array_merge($returnPath, array_slice($arrA, $n); return implode(/, $returnPath); echo getRelativePath($a, $b); 填空题:1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量_$_SERVERPHP_SELF_中;而链接到当前页面的URL记录在预定义变量_$_SERVERHTTP_REFERER_中2.执行程序段将输出_0_。3.在HTTP 1.0中,状态码
40、 401 的含义是_;如果返回“找不到文件”的提示,则可用 header 函数,其语句为_。4.数组函数 arsort 的作用是_对数组进行逆向排序并保持索引关系_;语句 error_reporting(2047)的作用是_报告所有错误和警告_。5.PEAR中的数据库连接字符串格式是_。6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrpt标记及其内容都去掉):preg_replace(/.*?.*?/si, newinfo, $script);7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句_动态装载PHP模块,然后再用语句_使得Apache把
41、所有扩展名为php的文件都作为PHP脚本处理。LoadModule php5_module c:/php/php5apache2.dll , AddType application/x-httpd-php .php,8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是_;为了避免多次包含同一文件,可以用语句_require_once|include_once_来代替它们。9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是_。10.一个函数的参数不能是对变量的引用,除非在php.ini中把_allow_call_time_pass_reference boolean_设为on.11.SQL中LEFT JOIN的含义是_自然左外链接_。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版高科技产品出口许可与合同履行协议3篇
- 二零二五版国际贸易合同担保法风险管理合同3篇
- 碎石加工设备2025年度保险合同2篇
- 二零二五版企业员工劳务派遣与员工福利保障合同3篇
- 二零二五年度粮食储备与农业产业化合作合同3篇
- 二零二五年度高层综合楼公共收益分配管理合同3篇
- 二零二五年度校车运营服务与儿童座椅安全检测合同3篇
- 二零二五版带储藏室装修包售二手房合同范本3篇
- 二零二五年房地产合作开发与股权让渡综合合同2篇
- 二零二五年度花木种植与生态农业园区建设合同3篇
- 毕淑敏心理咨询手记在线阅读
- 亚硝酸钠安全标签
- pcs-985ts-x说明书国内中文版
- GB 11887-2012首饰贵金属纯度的规定及命名方法
- 小品《天宫贺岁》台词剧本手稿
- 医院患者伤口换药操作课件
- 欠薪强制执行申请书
- 矿山年中期开采重点规划
- 资源库建设项目技术规范汇编0716印刷版
- GC2级压力管道安装质量保证体系文件编写提纲
- 预应力混凝土简支小箱梁大作业计算书
评论
0/150
提交评论