33道php常见面试题及答案解析,33道php常见面试题及答案详解

33道php常见面试题及答案解析,33道php常见面试题及答案详解,33道php常见面试题及答案

本文主要介绍php的33个常见面试问答,在面试中经常遇到。让我们仔细看看它们。

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;并且链接到当前页面的URL被记录在预定义变量(2)中。

复制代码如下:

a:echo $ _ SERVER[ PHP _ SELF ];echo $ _ SERVER[ HTTP _ REFERER ];

2.执行程序段将输出(3)。

复制代码如下:

答案:0

3.在HTTP 1.0中,状态码401的含义是(4);如果您返回提示“文件未找到”,您可以将header函数与语句(5)一起使用。

复制代码如下:

答:(4)未授权(5)头( HTTP/1.0 404未找到);

4.数组函数arsort的作用是(6);语句error_reporting(2047)的作用是(7)。

复制代码如下:

答案:(6)对数组进行反向排序并保持索引关系(7)所有错误和警告。

5.写一个正则表达式,过度考虑网页上的所有JS/VBS脚本(即去掉标签及其内容):(9)。

复制代码如下:

回答:/[]。*?*?//si

6.以Apache模块的形式安装PHP。在文件http.conf中,必须首先用语句(10)动态加载PHP模块,

然后使用语句(11)让Apache将所有带有php扩展名的文件都视为PHP脚本。

复制代码如下:

答:(10)load module PHP 5 _ module d:/xampp/Apache/bin/PHP 5 Apache 2 . dll

(11)AddType application/x-httpd-PHP-source。phps

AddType application/x-httpd-php。php .php5 .php4 .php3。phtml

7.语句include和require可以将另一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一个文件,可以用语句(13)替换它们。

复制代码如下:

答:(12) include在异常发生时生成警告,require生成致命错误(13) require_once()/include_once()

8.类的属性可以序列化并保存在会话中,以便以后可以恢复整个类。为此使用的函数是(14)。

复制代码如下:

A: serialize() /unserialize()

9.除非在php.ini中将(15)设置为on,否则函数得参数不能是对变量得引用.

复制代码如下:

答:允许_呼叫_时间_通行证_参考

10.SQL中左连接的含义是(16)。

如果tbl_user记录了学生的姓名(name)和学号(ID),

Tbl_score记录学生的学号(ID)、考试成绩(score)和考试科目(subject)(部分学生考试后被开除,但没有他们的记录)。

要打印出每个学生的名字和对应的各科总分,可以使用SQL语句(17)。

复制代码如下:

答:(16)自然左外部连接

(17)选择姓名,计数(分数)作为来自tbl_user的sum_score,在tbl_user上左连接tbl_score。ID=tbl_score。按tbl_user分组的ID。身份证明

一.在PHP中,heredoc是一个特殊的字符串,它的结束标志必须是(18)。

复制代码如下:

答:结束标识符所在的行不能包含除;以外的任何其他字符

12.用PHP打印出前一天的时间格式,是2006-5-10 22:21:21。

复制代码如下:

答案:Echo Date (y-m-d h: i: s ,strtotime (-1天);

13.echo()、print()和print _ r()的区别

复制代码如下:

回答:echo是一种没有返回值的语言结构;print的功能和echo基本相同,只是print是一个有返回值的函数;Print_r是递归打印,用来输出数组对象。

14.如何实现字符串翻转?

复制代码如下:

回答:用strrev函数,不允许用内置PHP自己写:

strrev(str美元)

{

$ len=strlen($ str);

$ newstr=“”;

for($ I=$ len;$ I=0;$i -)

{

$newstr。=$ str { $ I };

}

return $ newstr

}

15.实现无乱码中文字符串截取的方法。

复制代码如下:

答:mb_substr()

16.用php写一个简单的查询,找出所有名为“张三”的内容并打印出来。

表名用户

姓名电话内容日期

张13333663366 2006年10月11日大专毕业

张13612312331 2006年10月15日毕业。

张021-55665566于2006年10月15日中专毕业

复制代码如下:

答:选择姓名,电话,内容,日期从用户那里name=张三

17.如何使用下面的类并解释下面的意思?

分类试验

{

Get_test($num)

{

$num=md5(md5($num)。en’);

返回$ num

}

}

答:用法:

复制代码如下:

$ get _ test=new test();

$ result=$ Get _ test-Get _ test(2);

变量$num是md5两次并返回。第二个md5中的参数在第一个md5($num)后添加了En

18.使用五种以上的方法来获取文件的扩展名。

要求:dir/upload.image.jpg,了解一下。jpg还是jpg,

复制代码如下:

回答:使用五种以上的方法获取文件的扩展名。

1)

get _ ext 1($文件名)

{

返回strrchr文件名,.);

}

2)

get _ ext 2($文件名)

{

返回substr(文件名,str rpos(文件名,.));

}

3)

get _ ext3($文件名)

{

返回array_pop(explode( . ,$文件名));

}

4)

get _ ext 4($文件名)

{

$ p=pathinfo($ file _ name);

返回$ p[ extension ];

}

5)

get _ ext 5($文件名)

{

返回strrev(substr(strrev($ file _ name),0,strpos(strrev($file_name),.)));

}

19.如何修改会话的生存期?

这个函数库允许你处理和显示各种图形文件。这个库的另一个常见用途是制作图形文件。GD之外的另一个选择是ImageMagick,但是这个函数库不是PHP内置的,必须由系统管理员安装在服务器上。答:其实Session还提供了一个函数Session _ set _ cookie _ params();要设置会话的生存期(必须在调用session_start()函数之前调用),请执行以下操作:

<?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

//保存一天

$ lifeTime=24 * 3600

session _ set _ cookie _ params($ lifeTime);

session_start()。

$ _ SESSION[ admin ]=true;

?>

20.请写一个函数实现以下功能:字符串“open_door”转换为“OpenDoor”,“make_by_id”转换为“MakeById”。

复制代码如下:

答:

功能测试($str){

$arr1=explode(_ ,$ str);

//$arr2=array_walk($arr1,UC words());

$str=内爆(,$ arr 1);

返回ucwords($ str);

}

$ aa= open _ door

回声测试(aa);

21.如何用php的环境变量获取一个网址的内容?如何获取ip地址?

复制代码如下:

答:$ _ servsr [request _ uri]

$ _服务器[远程_ADDR]

22.找出两个日期之间的差异,例如2007年2月5日和2007年3月6日之间的日期差异。

复制代码如下:

答案:(StrToTime( 2007年3月6日)-StrToTime( 2007年2月5日)/3600 * 24

23.表中有A、B、C三列,用SQL语句实现:当A列大于B列时,选择A列,否则,选择B列,当B列大于C列时,选择C列。

复制代码如下:

A:当AB结束时选择case,然后A else B结束,

当BC then B else C结束时的情况

来自测试

24.请简述项目中优化sql语句执行效率的方法。从哪些方面,如何分析sql语句的性能?

复制代码如下:

答案:(1)选择最高效的表名顺序。

(2)WHERE子句中的连接顺序

(3)避免在3)SELECT子句中使用 *

(4)用Where子句替换HAVING子句

(5)通过内部函数提高SQL效率。

(6)避免在索引列上使用计算。

(7)为了提高GROUP BY语句的效率,可以在GROUP BY之前过滤掉不必要的记录。

25.mysql _ fetch _ row()和mysql_fetch_array()有什么区别?

复制代码如下:

Mysql_fetch_row()将数据库的一列存储在一个从零开始的数组中,第一列在索引0处,第二列在索引1处,依此类推。Mysql_fetch_assoc()将数据库的一列存储在一个关联数组中,数组的索引是字段名。例如,我的数据库查询返回三个字段:名字、姓氏和电子邮件,数组的索引是名字、姓氏和电子邮件。Mysql_fetch_array()可以同时发回mysql_fetch_row()和mysql_fetch_assoc()的值。

26.下面的代码是做什么用的?请解释一下。

$ date= 08/26/2003 ;print ereg _ replace(([0-9])/([0-9])/([0-9]), 2/1/3 ,$ date);

复制代码如下:

这是为了将日期从年/月/日格式更改为年/月/日格式。我的一个好朋友告诉我,我可以把这个正则表达式拆解成下面这个语句。对于这么简单的一个表达式,其实没必要拆开,只是为了解释方便:

//对应一个或多个0-9,后面跟一个斜符号$ reg expression=([0-9])/;//应该是一个或多个0-9,后跟另一个斜符号$regExpression。=([0-9] )/;//对应一个或多个0-9$regExpression。再次=([0-9]);至于2/1/3,用来对应括号。第一个括号是月份,

27.GD函数库是用来做什么的?

复制代码如下:

答:这个函数库允许你处理和显示各种图形文件。这个库的另一个常见用途是制作图形文件。GD的另一个替代方案是ImageMagick,但是这个库不是用PHP构建的,必须由系统管理员安装在服务器上。

28.请举例说明在你的开发过程中如何加速页面加载。

复制代码如下:

答:只在需要的时候打开服务器资源,及时关闭服务器资源,给数据库添加索引,页面可以生成单独的服务器,有静态、图片等大文件。使用代码优化工具。

29.__addslashes___函数通常用于防止SQL注入漏洞。

在30.PHP传递一个值、传递一个引用和传递一个地址有什么区别?

复制代码如下:

答:传值是指将实参的值赋给行参数,所以行参数的修改不会影响实参的值。

传递地址是一种特殊的传递值的方式,但是他传递的是地址,而不是int这样的普通地址。传递地址后,实参和行形参都指向同一个对象。

31.如何判断一个窗口是否被javascript屏蔽了?

复制代码如下:

答:获取open()的返回值。如果为空,则被阻止。

33.对于流量大的网站,你用什么方法解决流量问题?

复制代码如下:

答:首先,确认服务器硬件是否足以支持当前的流量。

其次,优化数据库访问。

第三,禁止从外面偷链子。

第四,控制大文件下载。

第五,用不同的主机分流主流量。

第六,使用流量分析统计软件。

以上是本文的全部内容。希望对你学习php有帮助。

33道php常见面试题及答案解析,33道php常见面试题及答案详解