面试题2
1、考察unset(); 如果是&(引用)的情况下,必须把所有变量(包括引用的变量)都销毁掉,才能起到释放内存的作用
1 $a = "hello"; 2 $b = &$a; 3 unset($b); 4 $b = "world"; 5 echo $a;
2、求$b的值 得出的值为1,因为++是在后面
$a = 1; $b = $a++; echo $b;
3、写出一个函数,实现删除指定目录包括其下的所有子目录以及文件
<?php //function delFile($dir,$file_type='') { function delFile($dir) { if(is_dir($dir)){ $files = scandir($dir); //打开目录 //列出目录中的所有文件并去掉 . 和 .. foreach($files as $filename){ if($filename!='.' && $filename!='..'){ if(!is_dir($dir.'/'.$filename)){ // if(empty($file_type)){ // unlink($dir.'/'.$filename); // }else{ // if(is_array($file_type)){ //正则匹配指定文件 // if(preg_match($file_type[0],$filename)){ // unlink($dir.'/'.$filename); // } // }else{ //指定包含某些字符串的文件 // if(false!=stristr($filename,$file_type)){ unlink($dir.'/'.$filename); // } // } // } }else{ delFile($dir.'/'.$filename); rmdir($dir.'/'.$filename); } } } }else{ if(file_exists($dir)) unlink($dir); } } //delFile(dirname(__FILE__),'html'); delFile(dirname(__FILE__));
4、禁用COOKIE 后 SEESION 还能用吗?
能用 可以通过url get方式
Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。
但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。
session_id默认是使用cookie来保存的,
但是可以用url get的方式获取:
-------------------------------------------------------------------------------------------------------------------
<?php
// s1.php
session_start();
$_SESSION[’var1’]="中华人民共和国";
$sn = session_id();
$url="<a href="http://laiguowei2004.blog.163.com/blog/.""s2.php?s=".$sn."">下一页</a>";
echo $url;
?>
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
<?php
session_id($_GET[’s’]); //用上个页面的session_id来打开这个页面的session,不用cookie来传递
session_start();
echo "传递的session变量var1的值为:".$_SESSION[’var1’];
?>
-------------------------------------------------------------------------------------------------------------------
5、简述POST 和GET传输的最大容量分别是多少?
POST 根据你php.ini文件配置(默认是8M) GET的话 大小限制在2KB
6. 用最少的代码写一个求3值最大值的函数.
$max = max($a ,$b $c);
7、表单中 get与post提交方法的区别?
get通过url传递数据,数据量较小。
post通过http post机制,将数据放置在html header内一起传送到url中,这个过程用户看不到
答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.
8、数据库中的事务是什么?
答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
9、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));
10、如何实现字符串翻转?(3分)
答:echo strrev($a);
11、优化MySQL数据库的方法:
a、使用join连接代替子查询
b、创建索引
c、尽量不使用索引不起作用的关键字,like,or,in,null(可以把null变为0)
d、创建视图
12、PHP的意思:
PHP是一个基于服务端来创建动态网站的脚本语言,可以用PHP和html生成网站
13、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)
答:now(),date()
14、实现中文字串截取无乱码的方法
直接使用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。解决办法:
1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。
2、自己书写截取函数,但效率不如用mbstring扩展库来得高。
3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。
=============================
substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。
举个例子:
<?php
echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>
输出:这样一来我的字
<?php
echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>
输出:这样一
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。
15、在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。
答:401表示未授权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header]
16、数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。
答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings
17、 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____
答:结束标识符所在的行不能包含任何其它字符除";"
18、reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。
$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 传送参数以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。
19、些函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。
20、你如何利用 PHP 解决 HTTP 的无状态本质?
最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。
浙公网安备 33010602011771号