本文主要介绍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有帮助。