2 PHP面试题/笔试题汇总(删除了一些我会写的题目)

PHP面试/笔试题汇总,我想把从网上收集过来的题目全部汇总到这里来,这里的内容只会增加/更新,不会删除,如果有错,请大家指正.也希望大家多提供一些面试题的资料.

PHP笔试题汇总:
1、抓取远程图片到本地,你会用什么函数?
file_get_contents

2、javascript能否定义二维数组,如果不能你如何解决?
javascript不支持二维数组定义,可以用arr[0] = new array()来解决

3、假设a.html和b.html在同一个档夹下面,用javascript实现当打开a.html五秒钟后,自动跳转到b.html。

<script>
function go2b()
{
   window.location = "b.html";  window.close();
}
setTimeout( "go2b()",5000 ); //5秒钟后自动执行go2b()
</script>

4、在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到档”的提示,则可用 header 函数,其语句为____;
答:401表示未授权;header(“HTTP/1.0 404 Not Found”);

5、写一个函数,能够遍历一个档夹下的所有档和子档夹。

<?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"));
?>

6、把 John 新增到 users 阵列?
$users[] = ‘john’;
array_push($users,‘john’);

7、在PHP中error_reporting这个函数有什么作用?
答:error_reporting() 设置 PHP 的报错级别并返回当前级别。

8、请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。

<?php
if(isset($_POST['action'])&&$_POST['action']=='submitted')
{    
	$email	=	$_POST['email'];    
	if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))
	{   
		echo"电子邮件检测失败";     
	}    
	else      
	{        
		echo"电子邮件检测成功";     
	}
}
else
{ 
?>
<html>
<head>
<title>EMAIL检测</title>
<script type="text/javascript">
function checkEmail(sText)
{
	var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;  
	var email=document.getElementById(sText).value;        
	if(!reg.test(email))          
	{            
		alert("电子邮件检测失败");         
	}       
	else         
	{             
		alert("电子邮件格式正确");         
	}     
}
</script>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">电子邮件:<input
	type="text" id="email" name="email" /><br />
<input type="hidden" name="action" value="submitted" /><input
	type="button" name="button" value="客户端检测" onclick="checkEmail('email')" /><input
	type="submit" name="submit" value="服务器端检测" /></form>
</body>
</html>
<?php
}
?>

9、用PHP写出显示客户端IP与服务器IP的代码
答:
打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv(‘REMOTE_ADDR’);
打印服务器IP:echo gethostbyname(“www.bolaiwu.com”)

10、如何修改SESSION的生存时间(1分).
答:
方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache
方法2:$savePath = “./session_save_dir/”;
$lifeTime = 小时 * 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法3:setcookie() and session_set_cookie_params($lifeTime);

14、有一个网页地址, 比如PHP开发资源网主页: http://www.baidu.com,如何得到它的内容?($1分)
答:
方法1(对于PHP5及更高版本):
$readcontents = fopen(“http://www.baidu.com”, “rb”);
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents(“http://www.baidu.com”);

15、请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)
答:
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
按引用传递则不需要复制值,对于性能提高很有好处。

16、写一个函数,尽可能高效的,从一个标准 url 里取出档的扩展名例如: http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或.php

<?php 
//答案1:
function getExt($url)
{
	   $arr 	= parse_url($url); 
	   $file 	= basename($arr['path']);
	   $ext 	= explode(".",$file);
	   return $ext[1];
}
//答案2:
function getExt($url)
{
		$url 	= basename($url);
		$pos1 	= strpos($url,".");
		$pos2 	= strpos($url,"?");
		if(strstr($url,"?"))
		{
			return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
		} 
		else 
		{
			return substr($url,$pos1);
		}
}
?>

17、使用五种以上方式获取一个档的扩展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)

<?php 
function get_ext1($file_name)
{
 return strrchr($file_name, '.');
}
function get_ext2($file_name)
{
 return substr($file_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 $p['extension'];
}
function get_ext5($file_name)
{
 return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));
}
?>

20、请使用JavaScript写出三种产生一个Image 标签的方法(提示:从方法、对象、HTML角度考虑)
(1)var img = new Image();
(2)var img = document.createElementById(“image”)
(3)img.innerHTML = “<img src=”xxx.jpg” />”

21、16.请描述出两点以上XHTML和HTML最显著的区别
(1)XHTML必须强制指定文档类型DocType,HTML不需要
(2)XHTML所有标签必须闭合,HTML比较随意

22、写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。
答案:参考冒泡排序或者是快速排序

23、写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)
MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB等

24、求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

方法一: 
<?php 
class Dtime
{ 
	function get_days($date1, $date2)
	{ 
		$time1 = strtotime($date1); 
		$time2 = strtotime($date2); 
		return ($time2-$time1)/86400; 
	} 
} 
$Dtime = new Dtime; 
echo $Dtime->get_days('2007-2-5', '2007-3-6'); 
 
//方法二: 
$temp 	= explode('-', '2007-2-5'); 
$time1 	= mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]); 
$temp 	= explode('-', '2007-3-6'); 
$time2 	= mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]); 
echo ($time2-$time1)/86400; 
 
//方法三:
echo abs(strtotime("2007-2-1")-strtotime("2007-3-1"))/60/60/24;
?>

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

//方法一: 
<?php 
function str_explode($str)
{ 
	$str_arr		=	explode("_",$str);
	$str_implode	=	implode(" ",$str_arr); 
	$str_implode	=	implode ("",explode(" ",ucwords($str_implode))); 
	return $str_implode; 
} 
$strexplode			=	str_explode("make_by_id");
print_r($strexplode); 
 
//方法二:
$str				=	"make_by_id!"; 
$expStr				=	explode("_",$str); 
for($i=0;$i<count($expStr);$i++)
{ 
	echo ucwords($expStr[$i]); 
}
 
//方法三:
echo str_replace(' ','',ucwords(str_replace('_',' ','open_door')));
?>

*26、一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、 存储过程分别实现。

存储过程:
create procedure proc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId;
end
call proc_countNum(1,@no);
select @no;
视图:
create view v_countNum as select member_id,count(*) as countNum from member group by member_id
SQL语句:
select countNum from v_countNum where member_id=1

27、js中网页前进和后退的代码
前进: history.forward();=history.go(1);
后退: history.back ();=history.go(-1);

28、echo count(“abc”); 输出什么?
答案:1

29、请举例说明在你的开发过程中用什么方法来加快页面的加载速度
答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大档单独服务器。使用代码优化工具

30.以下哪一个函式可以把浏览器转向到另一个页面?
redir()这不是一个 PHP 函式,会引致执行错误。
header()这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:header(“Location: http://www.search-this.com/”);
location()这不是一个 PHP 函式,会引致执行错误。
redirect()这不是一个 PHP 函式,会引致执行错误。

31.以下哪一个函式可以用来开启档案以便读/写?
fget()这不是一个 PHP 函式,会引致执行错误。
file_open()这不是一个 PHP 函式,会引致执行错误。
fopen()这是正确答案,fopen() 可以用来开启档案以便读/写,事实上这个函式还有很多选项,详细资料请参阅 php.net。
open_file()这不是一个 PHP 函式,会引致执行错误。

Related posts:

Leave a Reply

Your email address will not be published.