面试题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 地址,这个方法有特定的危险性。

 

posted on 2016-12-13 20:59  PHP博客园  阅读(127)  评论(0)    收藏  举报

导航