人人范文网 范文大全

PHP面试题(一)

发布时间:2020-03-03 16:28:36 来源:范文大全 收藏本文 下载本文 手机版

PHP程序员面试题

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中 <?php //本页地址,SCRIPT_NAME也可以:php/test.php echo $_SERVER[\'PHP_SELF\'].\"\"; //链接到当前页面的前一页面的 URL 地址: echo $_SERVER[\'HTTP_REFERER\'].\"\";

//其它的见参考手册:语言参考》变量》预定义变量

//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php

echo $_SERVER[\"SCRIPT_FILENAME\"].\"\"; //正在浏览当前页面用户的 IP 地址:127.0.0.1 echo $_SERVER[\"REMOTE_ADDR\"].\"\"; //查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2 echo $_SERVER[\"QUERY_STRING\"].\"\"; //当前运行脚本所在的文档根目录:d:inetpubwwwroot echo $_SERVER[\"DOCUMENT_ROOT\"].\"\"; ?>

2.执行程序段<?php echo 8%(-2) ?>将输出__。

<?php //参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0 echo 8%(-2).\"\"; //取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2 echo ((-8)%3).\"\"; //输出2 echo (8%(-3)).\"\"; ?>

3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。

答:401表示未授权;header(\"HTTP/1.0 404 Not Found\");[见参考手册》函数参考》HTTP函数》header] 4.数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。

答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings 5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):

<?php $script=\"以下内容不显示:<script language=\'javascript\'>alert(\'cc\');</script>\"; echo preg_replace(\"/<script[^>].*?>.*?</script>/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 系统下的安装》Microsoft Windows 下的 Apache 2.0.x

7.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。

答:在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误;require_once()/include_once() 8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.答:allow_call_time_pa_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G 9.SQL 中LEFT JOIN的含义是__,如果 tbl_user记录了学生的姓名(name)和学号(ID),

tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____.答:自然左外连接

create database phpinterview; use phpinterview create table tbl_user ( ID int

not null, name varchar(50) not null,

primary key (ID) ); create table tbl_score ( 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, \'数学\'); 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 sumscore from tbl_user A left join tbl_score B on A.ID=B.ID group by A.id

10.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____ 答:结束标识符所在的行不能包含任何其它字符除\";\" 11.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。 <?php function my_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:Program FilesInternet ExplorerMUI\")); ?>

1、用PHP打印出前一天的时间,格式是2006-5-10 22:21:21(2分)

echo date(‘Y-m-d H:i:s’,date(‘U’)-86400);

或者 echo date(\'Y-m-d H:i:s\', strtotime(\'-1 day\'));

2、echo(),print(),print_r()的区别(3分)

echo 是PHP语句,语句是没有返回值的,而print和print_r是函数,函数可以有返回值。

print只能打印出简单类型变量的值(如int,string) print_r可以打印出复杂类型变量的值(如数组,对象) echo -- 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板(1分)

smarty模板

4、使用哪些工具进行版本控制?(1分)

CVS和SVN [ subversion ]

5、如何实现字符串翻转?(3分)

使用php函数strrev( ‘abc’)

6、优化MYSQL数据库的方法。(4分,多写多得)

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries) (3).使用联合(UNION)来代替手动创建的临时表 (4).尽量少使用 LIKE 关键字和通配符 (5).使用事务和外键

7、PHP的意思(送1分)

PHP 是一种服务器端的,嵌入HTML的脚本语言。

英文“超级文本预处理语言”(Hypertext Preproceor)的缩写

8、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

now( ) date_format( date, format )

9、实现中文字串截取无乱码的方法。(3分)

当用 substr 截取中文字符的时候会出现乱码,当然你如果装了 mb 扩展, 用 mb_substr截取就不会出现这种问题,如果你用的是虚拟主机,主机上又没装 mb扩展的话,你可以用下面的函数截取

# Cut chinese string into appointed length # @param [string] string need deal # @param [start] position to cut from # @param [length] length to cut # @return string function GBsubstr($string, $start, $length) { if(strlen($string)>$length){ $str=null; $len=$start+$length; for($i=$start;$i0xa0){ $str.=substr($string,$i,2); $i++; }else{ $str.=substr($string,$i,1); } } return $str.\'...\'; }else{ return $string; } }

10、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

CVS subversion

11、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

Smarty Discuz

12、请简单阐述您最得意的开发之作(4分)

。。。

13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

首先,确认服务器硬件是否足够支持当前的流量 其次,优化数据库访问。 第三,禁止外部的盗链。 第四,控制大文件的下载。

第五,使用不同主机分流主要流量 第六,使用流量分析统计软件。

14、用PHP写出显示客户端IP与服务器IP的代码(1分)

客户端IP: echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv(\'REMOTE_ADDR\');

服务器IP:

$serverIP=gethostbynamel(\"webpro01\");

echo \"Server IP Addre:\";

for ($i=0; $i echo \" \".$netscapeftp[$i]; }

echo \" \";

?>

15、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

1、PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。

2、PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。

3、require() :如果文件不存在,会报出一个fatal error.脚本停止执行

4、include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行

5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。

16、如何修改SESSION的生存时间(1分).

1.将php.ini 中seion.gc_maxlifetime 设置为 9999(默认为 1440)重启 apache 即可

2.

$savePath = \"./seion_save_dir/\";

$lifeTime = 24 * 3600;

seion_save_path($savePath);

seion_set_cookie_params($lifeTime);

seion_start(); 3.

setcookie() 或seion_set_cookie_params($lifeTime)

17、有一个网页地址, 比如PHP开发资源网主页: http://www.daodoc.com/,如何得到它的内容?($1分)

//需要读取的page地址

$http_page_url=\"http://www.daodoc.com/\"; //打开远程文件

$read_file=fopen($http_page_url,\"rb\"); if (!feof($read_file)) { //读取远程文件 $file_stream = \"\"; do { $data = fread($read_file, 8192); if (strlen($data) == 0) { break; } $file_stream.= $data; } while(true); }

echo $file_stream; //输出内容

对 PHP 5 及更高版本可以:

$handle = fopen(\"http://www.daodoc.com/\", \"rb\");

$contents = stream_get_contents($handle);

fclose($handle);

echo $contents; ?>

最简单的方法是调用函数:

print file_get_contents(\'http://www.daodoc.com/\');

?>

18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

状态值为401,代表未被授权; header(\"Location: http://www.daodoc.com,传给他的参数有参数1,参数2,参数3„。传递参数的方法有可能是GET有可能是POST,那么现在请写出类似:http://www.daodoc.com/script.php?参数1=值1&参数2=值2„..的结果。

1获取所有参数:可以用以下方法: //获取post的数据

while (list($var, $value) = each($HTTP_POST_VARS)) { echo “$var = $value n“; } //获取get方式的数据

while (list($var, $value) = each($HTTP_GET_VARS)) { echo “$var = $value n“; }

2.echo $_SERVER[\'scrīpt_FILENAME\'].\"?\".$_SERVER[\'QUERY_STRING\'];

27、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

弹出对话框: alert(),prompt(),confirm() 获得输入焦点 focus()

28、JS的转向函数是?怎么引入一个外部JS文件?(2分)

转向函数 window.location.href

引入外部JS文件:

29、foo()和@foo()之间有什么区别?(1分)

@foo()有控制错误输出

30、如何声明一个名为”mycla”的没有方法和属性的类? (1分)

cla mycla{ }

31、如何实例化一个名为”mycla”的对象?(1分)

$newmycla = new mycla();

32、你如何访问和设置一个类的属性? (2分)

$newmycla = new mycla(); $temp=$newmycla->test; $newmycla->test=\"a\";

33、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

mysql_fetch_row -- 从结果集中取得一行作为枚举数组 mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有

34、GD库是做什么用的? (1分)

gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。

在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

35、指出一些在PHP输入一段HTML代码的办法。(1分)

1.echo ‘’;直接输出

2.require include 包含进来一段html代码

3.由XML文件得到

36、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分) (a) fget() (b) file_open() (c) fopen() (d) open_file()

(c)是正确的

37、下面哪个选项没有将 john 添加到users 数组中? (1分) (a) $users[] = ‘john’;

(b) array_add($users,’john’);

(c) array_push($users,‘john’); (d) $users ||= ‘john’;

(b) (d) 均是错误的写法

38、下面的程序会输入是否?(1分) $num = 10; function multiply(){ $num = $num * 10; } multiply(); echo $num; ?> 输出 10

39、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分) 表名User Name Tel Content Date 张三 13333663366 大专毕业 2006-10-11 张三 13612312331 本科毕业 2006-10-15 张四 021-55665566 中专毕业 2006-10-15

请根据上面的题目完成代码:

$mysql_db=mysql_connect(\"local\",\"root\",\"pa\"); @mysql_select_db(\"DB\",$mysql_db);

$result=mysql_query(\"select * from User where Name=\'张三\'\"); while($row=mysql_fetch_array($result)) { echo $row[\'Name\'].$row[\'Tel\'].$row[\'Content\'].$row[\'Date\']; echo \" \"; }

40、如何使用下面的类,并解释下面什么意思?(3) cla test{ function Get_test($num){ $num=md5(md5($num).\"En\"); return $num; } }

双重md5加密

$testObject = new test(); $encryption = $testObject->Get_test(\"xiaotian_ls\");

41、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分) 表名User Name Tel Content Date 张三 13333663366 大专毕业 2006-10-11 张三 13612312331 本科毕业 2006-10-15 张四 021-55665566 中专毕业 2006-10-15 (a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中

Insert INTO User(\'Name\',\'Tel\',\'Content\',\'Date\') VALUES(\'小王\',\'13254748547\',\'高中毕业\',\'2007-05-06\') (b) 请用sql语句把张三的时间更新成为当前系统时间

Update User SET Date=DATE_FORMAT(NOW(),\'%Y-%m-%d\') Where Name=\'张三\' (c) 请写出删除名为张四的全部记录

Delete FROM User Where Name=\'张四\'

42、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)

int 数值类型 char 固定长度字符串 varchar 可变长字符串 datetime 日期时间型 text 字符字符串

char列的长度固定为创建表时声明的长度.varchar列中的值为可变长字符串.

43、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)

AUTO_INCREMENT

44、写出以下程序的输出结果 (1分) $b=201; $c=40; $a=$b>$c?4:5; echo $a; ?> 4

45、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)

iet($a) empty($a)

46、取得查询结果集总数的函数是?(1分)

mysql_num_rows($res);

47、$arr = array(\'james\', \'tom\', \'symfony\'); 请打印出第一个元素的值 (1分)

echo $arr[0];

48、请将47题的数组的值用\',\'号分隔并合并成字串输出(1分)

echo $arr[0].$arr[1].$arr[2];

49、$a = \'abcdef\'; 请取出$a的值并打印出第一个字母(1分)

echo $a{0};

50、PHP可以和sql server/oracle等数据库连接吗?(1分) 可以

51、请写出PHP5权限控制修饰符(3分)

private protected public

52、请写出php5的构造函数和析构函数(2分)

__construct __destruct

53、以下请用PHPMYADMIN完成

(一)创建新闻发布系统,表名为meage有如下字段 (3分) id 文章id title 文章标题 content 文章内容

category_id 文章分类id hits 点击量

Create TABLE \'meage\'( \'id\' int(11) NOT NULL auto_increment, \'title\' varchar(200) default NULL, \'content\' blob, \'category_id\' int(11) default NULL, \'hits\' int(11) default NULL, PRIMARY KEY(\'id\') ) ENGINE=InnoDB DEFAULT CHARSET=utf8 (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分) comment_id 回复id id 文章id,关联meage表中的id comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

Select meage.id id,meage.title title,IF(meage.`hits` IS NULL,0,meage.`hits`) hits,IF(comment.`id` is NULL,0,count(*)) number FROM meage LEFT JOIN comment ON meage.id=comment.id GROUP BY meage.`id`

(三)上述内容管理系统,表category保存分类信息,字段如下 (3分) category_id int(4) not null auto_increment; categroy_name varchar(40) not null; 用户输入文章时,通过选择下拉菜单选定文章分类 写出如何实现这个下拉菜单

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(\"\".$rowArray[\'categroy_name\'].\"n\"); } print(\"\"); }

PHP面试题

PHP程序员面试题

php极品面试题

PHP程序员面试题

PHP程序员面试题

php程序员 一度搜索面试题

php 笔试 面试题 答案 解析

php工程师面试题及答案

php程序员面试题(附答案)

php程序员面试题(a卷 附答案)

PHP面试题(一)
《PHP面试题(一).doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档