第二十六套(一)

来源:互联网 发布:阿里云短信发送jar 编辑:程序博客网 时间:2024/04/27 20:37

1.下面语句执行的结果是:

<?php    $i=0;    echo ++$i;    echo $i++;    $a=++$i;    echo $a++;    $i=$a;    echo $i;

1 1 3 4

2.下面那些说法是错误的:

A: 如果 一个类的成员前面有访问修饰符private , 那么这些成员不能被继承,并且在类的外部不可见。
但如果成员被指定为protect和public 则可以被继承,在类的外部也是可见的。
B:PHP5中,final 关键字可以禁止继承和重载。
C: PHP5中 析构函数的名称是:__destruct().并且不能有任何参数。
D: 继承接口的类必须实现接口中声明的所有方法,在php中,如果继承接口的类没有实现接口中的方法,
将会产生一个致命错误。
A

3.array_shift()函数的作用是?

A 在数组中新增一个元素
B 移除数组中的一个元素
C 交换一个数组的key和value
D 清除一个数组
B

4.你将使用下面哪个函数来删除一个文件?

A.unlink()
B.delete()
C.fdelete()
D.file_delete()
A

5.请看代码,数据库关闭指令将关闭哪个链接标识?

<?    $link1=mysql_connect(“localhost”,”root”,””);    $link2=mysql_connect(“localhost”,”root”,””);    mysql_close();?>

A.$link1
B $link2
C 全部关闭
D 报错

B//mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的连接。如果没有指定 link_identifier,则关闭上一个打开的连接。

6.该段代码输出是

<?     $str="cd";    $$str="abcde";    $$str.="ok";    echo $cd;?>

ok

7.写出如下程序的输出结果

<?php     $count=5;    function get_count(){            static $count=0;            return $count++;    }    echo $count;    ++$count;    echo get_count();    echo get_count();

结果为 5 0 1

8.请列举一些你所知道的开发模式 (如工厂模式,越多越好)

MVC模式、单态模式、敏捷开发模式、瀑布流模式、螺旋模式、值对象模式、注册模式、伪对象模式、策略模式、迭代器模式、规范模式

9.写一个函数,尽可能的高效,从一个标准url 里取出文件的扩展名。 例如:

http:// cn.yahoo.com / abc /de/fg.php?id=1 需要取出 .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);}}

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

方法一:先用strtotime转换成unix时间戳,然后相减,除以一天的秒数86400.
方法二:先用mktime转换成unix时间戳,然后相减,除以一天的秒数86400.
具体代码如下:
方法一:

<?phpclass 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');?>

方法二:

<?php$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;

11.Sort() assort() ksort() 有什么区别? 它们分别在什么情况下使用?

sort():按升序对数组的值排序,不保留键名.
asort():按升序对数组的值排序,保留键名.
rsort():按降序对数组的值排序,不保留键名.
ksort():按升序对数组的索引排序.
arsort():按降序对数组的值排序,保留键名.
Krsort():按降序对数组的索引排序.
natsort():用自然顺序算法对数组中的元素排序.
natcasesort():自然排序,不区分大小写.

12.列出五种以上你使用过的PHP 的扩展的名称 (提示:常用的PHP扩展 , 如 GD 扩展)

PDO、mysql、sybase、oracle、memcache、zlib

13.写一个函数,用冒泡法实现排序,输入参数为一个数组

function mysort($arr){    if(count($arr)<=0){return false;}    for($i=0;$i<count($arr);$i++){        for($j=$i;$j<count($arr)-1;$j++){            if($arr[$i]>$arr[$j]){                $temp = $arr[$i];                $arr[$i] = $arr[$j];                $arr[$j] = $temp;            }        }    }}

14.请说明 在php.ini 中safe_mode 开启之后对于PHP系统函数的影响

chmod() mkdir() touch() chown() chgrp() chdir() fopen() rmdir() copy() link()
exec()

chmod() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 另外,不能设置 SUID、SGID 和 sticky bits
mkdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
touch() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
chown() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
chgrp() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
chdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
fopen() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
rmdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
copy() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (on source and target )
link() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
exec() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。

15.你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)

和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?
1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。
2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。
3, xdebug统计函数执行次数和具体时间进行分析。
4, 在线系统用strace跟踪相关进程的具体系统调用。

16.试简述php5 中 autoload 机制是如何自动加载类的

当PHP引擎试图实例化一个未知类的操作时,会调用__autoload()方法,
在PHP出错失败前有了最后一个机会加载所需的类。因此,上面的这段代
码执行时,PHP引擎实际上替我们自动执行了一次__autoload方法,
将User.class.php这个文件包含进来。
在__autoload函数中抛出的异常不能被catch语句块捕获并导致致命错误。

0 0
原创粉丝点击