首页 >  面试题 > 网络营销-企业面试宝典 > 

PHP面试题及答案(二)

PHP面试题及答案(二)

作者:elc 来源: 时间:2016-12-19 访问次数:2831

每个IT的求职者在求职的路上都会碰到一个头疼的问题,就像我们曾经的入学考试,让人避无可避。这里华育国际的老师给您整理出了一系列的PHP面试题及答案解析。愿您在求职的道路过关斩将,终成所愿。


1、26、有一个网页地址, 比如PHP开发资源网主页: http://www.php100.com/index.html,如何得到它的内容?


:方法1(对于PHP5及更高版本):
$readcontents = fopen(“http://www.php100.com/index.html”, “rb”);
$contents = stream_get_contents($readcontents);// stream_get_contents 取得字符串赋值给$contents
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents(“http://www.php100.com/index.html”);
// file_get_contents() 函数把整个文件读入一个字符串中。

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


:状态401代表未被授权,header(“Location:www.xxx.php”);

3、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?


:heredoc的语法是用”<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字串
例子:
$str = <<<SHOW
my name is Jiang Qihui!
SHOW;

4、foo()和@foo()之间有什么区别?


:@foo()控制错误输出

5、如何声明一个名为”myclass”的没有方法和属性的类?


:class myclass{ }

6、如何实例化一个名为”myclass”的对象?


:new myclass()

7、你如何访问和设置一个类的属性?


:$object = new myclass();
$newstr = $object->test;
$object->test = “info”;

8、mysql_fetch_row() 和mysql_fetch_array之间有什么区别?


:mysql_fetch_row是从结果集取出1行数组,作为枚举
mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

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


答:c

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


答:否,局部变量

11、JS表单弹出对话框函数是?获得输入焦点函数是?


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

12、JS的转向函数是?怎么引入一个外部JS文件?


:window.location.href;

13、$a = ‘abcdef’; 请取出$a的值并打印出第一个字母?


:echo $a{0} 或 echo substr($a,0,1)

14、优化MYSQL数据库的方法。


(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。
(2).使用连接(JOIN)来代替子查询(Sub-Queries)
(3).尽量少使用 LIKE 关键字和通配符

15、如何使用下面的类,并解释下面什么意思?


class test{
function Get_test($num){
$num=md5(md5($num).”En”);
return $num;
} }
双重md5加密
$testObject = new test();
$encryption = $testObject->Get_test(“xiaotian_ls”);

16、请举例说明在你的开发过程中用什么方法来加快页面的加载速


答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

17.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):

答:
<?php
$script="以下内容不显示:alert(‘cc’);";
echo preg_replace("/].*?>.*?/si", "替换内容", $script);
?>

18.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理


答:LoadModule
php5_module
"c:/php/php5apache2.dll";AddType application/x-httpd-php .php

19.sort()、asort()、和 ksort() 有什么分别?它们分别在什么情况下使用?
答:
sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。
asort()
sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
ksort()
根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。

20.“===”是什么?试举一个“==”是真但“===”是假的例子。


答:“===”是既可以返回布尔值“假”,也可以返回一个不是布尔值但却可以赋与“假”值的函式,strpos() 和 strrpos() 便是其中两个例子。

if (strpos("abc", "a") == true){ // 这部分永不会被执行,因为 "a" 的位置是 0,换算成布尔值“假”}if (strpos("abc", "a") === true){ // 这部份会被执行,因为“===”保证函式 strpos() 的送回值不会换算成布尔值.}

21 、写出以下程序的输出结果
<?php
$str=“cd”;
$$str=“hotdog”;
$$str.=“ok”;
echo $cd;
?>


答案:hotdogok

22、给你三个数,写程序求出其最大值。
$var1=1;
$var2=7;
$var3=8;


答:$max=$var1>$var2?$var1:$var2;
$max=$max>$var3?$max:$var3;
echo $max;

23、写出将一个选择2号选项的ip为127.0.0.1的用户在当前时间的投票记录到数据库的SQL


答:insert into poll (ip,time,iid) values('127.0.0.1',now(),2);

24. 请写一个函数验证电子邮件的格式是否正确 ?


:function checkEmail($email)
{
$pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";
return preg_match($pregEmail,$email);
}

25有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来

答:
<?php
function GenerateMenu($id=0,$str="")
{
$result=mysql_query("select mainmenu,url,submenu from menu where mainmenu=$id");
while($row=mysql_fetch_array($result))
{
echo $str.$row["url"]."
";
GenerateMenu($row["submenu"],$str."--");
}
mysql_free_result($result);
}
$link=mysql_connect("localhost","root","");
mysql_select_db("phpinterview");
GenerateMenu();
mysql_close($link)
?>

26、写出 SQL语句的格式 : 插入 ,更新 ,删除


答:表名User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15


(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
mysql_query("INSERT INTO `user` (name,tel,content,date) VALUES
('小王','13254748547','高中毕业','2007-05-06')")


(b) 请用sql语句把张三的时间更新成为当前系统时间
$nowDate = date("Ymd");
mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='张山'");


(c) 请写出删除名为张四的全部记录
mysql_query("DELETE FROM `user` WHERE name='张四'");