• 基础


    2.执行程序段将输出

    <?php
        //参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
        echo 8%(-2)."<br />";
        //取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
        echo ((-8)%3)."<br />";
        //输出2
        echo (8%(-3))."<br />";
    ?>
    

    3.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

    <?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 .请举例说明在你的开发过程中用什么方法来加快页面的加载速度

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

    7、HTTP Keep-Alive的作用

    作用:Keep-Alive:使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。Web服务器,基本上都支持HTTP Keep-Alive。

    缺点:对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep- Alive功能对资源利用的影响尤其突出。

    解决:Keep-Alive: timeout=5, max=100timeout:过期时间5秒(对应httpd.conf里的参数是:KeepAliveTimeout),max是最多一百次请求,强制断掉连接。就是在timeout时间内又有新的连接过来,同时max会自动减1,直到为0,强制断掉。

    其他

    1.PHP中几个输出函数echo,print(),print_r(),sprintf()区别

    printf:是函数,把文字格式化以后输出(参看C语言)

    sprintf:是函数,跟printf相似,但不打印,而是返回格式化后的文字(该函数把格式化的字符串写写入一个变量中,而不是输出来),其 他的与printf一样。

    例如:

    1 $str = "Hello";    
    2 $number = 123; 
    3 $txt = sprintf("%s world. Day number %u",$str,$number);
    4 //输出: Hello world. Day number 123
    

    2.不用新变量直接交换现有两个变量的值

     list($a, $b) = array($b, $a);
    
    借助数组
    
    $a = array($a,$b);
    $b = $a[0];
    $a = $a[1];
    

    3.写个函数来解决多线程同时读写一个文件的问题。

    <?php
         $fp = fopen("/tmp/lock.txt","w+");
         if(flock($fp, LOCK_EX)){// 进行排它型锁定
             fwrite($fp,"Write something here
    ");
             flock($fp, LOCK_UN);// 释放锁定
         }else{
             echo "Couldn't lock the file !";
         }
         fclose($fp);
    ?>
    

    3.PHP缓存技术有哪些? tp是局部还是完全缓存?

    全页面静态化缓存,也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程
    页面部分缓存,将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示
    数据缓存,通过一个id进行请求的数据,将数据缓存到一个php文件中,id和文件是对应的,下次通过这个id进行请求时 直接读php文件
    查询缓存,和数据缓存差不多,根据查询语句进行缓存;
    常用的缓存技术有:redis和memcache个人认为tp应该是全局缓存 因为:tp缓存实在本地生成一个php文件来存储数据库中

    4.PHP猴子选大王---最优解决算法:一群猴子排成一圈,按1,2,…,n依次编号。
    然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,
    直到最后只剩下一只猴子为止,那只猴子就叫做大王。
    要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

    
    

    5.isset() 、empty()与is_null的区别

    当变量未定义时,is_null() 和“参数本身”是不允许作为参数判断的,会报Notice警告错误;
    empty , isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 和 “参数本身”只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!

    isset():仅当null和未定义,返回false;

    empty():""、0、"0"、NULL、FALSE、array(),未定义,均返回true;
    is_null():仅判断是否为null,未定义报警告;

    6.现有一个多维数组,请编写一段代码按照数组当中age进行升序排序,重新组成一个新的数组。

        $person = array(
            array('name'=>'c','age'=>26),
            array('name'=>'d','age'=>23),
            array('name'=>'a','age'=>29),
            array('name'=>'b','age'=>27),
        );
        答案:不唯一
        方法之一(其一冒泡排序):
        $count=count($person);
            for($i=0;$i<$count;$i++){
                for($j=0;$j<$count-1;$j++){
                    if($person[$j]['age']>$person[$j+1]['age']){
                        $tmp=$person[$j];
                        $person[$j]=$person[$j+1];
                        $person[$j+1]=$tmp;
                    }
                }
            }
    

    4.下面代码的输出正确的是?()

    
    $a=array(1=>5,5=>8,22,2=>'8',81);
    echo $a[7];
    echo $a[6];
    echo $a[3];
    A:空2281
    B:空8122C
    C:8122空
    D:空空空
    答案:C
    

    8.写出下面代码的结果()

    <?php    
        $count = 5;
        function get_count(){
            static $count = 0;
            return $count++;
        }
        echo $count;
        ++$count;
        echo get_count();
        echo get_count();
    ?>
    答案:5  0  1
    解析: php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。
    静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。
    因static $count,所以只在第一次调用get_count的时候对count赋值为0,第二次再进来这个函数,则不会第二次赋值。
    

    6.http中几个常见的状态的状态码含义。
    200 请求成功
    404 找不到资源
    403 没有权限
    500 服务器错误
    302 重定向

    7.请写出自少三种截取文件名后缀的方法或函数(PHP 原生函数和自己实现函数均可)

    echo substr(strrchr($file, '.'), 1);
    
    echo substr($file, strrpos($file, '.')+1);
    
    $arr=explode('.', $file);
    
    echo $arr[count($arr)-1];
    
    $arr=explode('.', $file);
    
    echo end($arr);
    
    echo strrev(explode('.', strrev($file))[0]);
    
    echo pathinfo($file)['extension'];
    
    echo pathinfo($file, PATHINFO_EXTENSION);
    
    

    composer.json中的自动加载映射

    目前PSR-0自动加载、PSR-4自动加载、classmap生成和files引入都是被支持的,PSR-4是首推的方法,因为它提供了更大的易用性。

    
    
    ## composer.json中的自动加载映射
    目前PSR-0自动加载、PSR-4自动加载、classmap生成和files引入都是被支持的,PSR-4是首推的方法,因为它提供了更大的易用性。
    
    - PSR-4
    PSR-4规范了如何指定文件路径从而自动加载类,同时规范了自动加载文件的位置。乍一看这是和PSR-0重复了,实际上,在功能上确实有一部分重复。区别在于,PSR-4的规范比较干净,去除了兼容PHP5.3以前版本的内容。
    PSR-4和PSR-0最大的区别是对下划线的定义不同,PSR-4中,在类名中使用下划线是没有特殊含义的,而在PSR-0的规则中,下划线或被转化为目录分隔符
    
    	在PSR-4的键下,你可以定义命名空间和路径的映射关系,当自动加载类如Foo\Bar\Baz时,命名空间Foo指向一个名为src/的目录意味着自动加载器将查找名为src/Bar/Baz.php文件并引用它。
    
    	命名空间的前缀必须以\结尾,以避免类似前缀之间的冲突。在安装和更新期间,PSR-4引用全部组合到一个key=>value数组中,该数组可以在生成的文件vendor/composer/autoload_psr4.php中找到。
    
    例子:
    

    {
    "autoload": {
    "psr-4": {
    "App": "App/" // 命名空间App映射到目录App
    }
    }
    }

    
    - classmap
    classmap引用的所有组合,都会在安装、更新的过程中生成并存储到`vendor/composer/autoload_classmap.php`文件中。
    你可以使用classmap生成支持自定义加载的不遵循PSR-4规范的类库,要配置它指向的目录,以便能够准确的搜索到类文件
    
    例子:
    

    {
    "autoload": {
    "classmap": ["src/", "lib/", "Something.php"]
    }
    }

    
    - Files
    如果你想要明确指定,在每次请求时都要载入某些文件,那么你可以使用files字段加载。通常作为函数库的载入方式。
    
    例子:
    

    {
    "autoload": {
    "files": ["src/MyLibrary/functions"]
    }
    }

  • 相关阅读:
    微信小程序
    svn
    当滑动条滑动到某一位置触发js
    css固定页面
    css三级菜单
    h5时钟
    DOM节点
    应用r.js来优化你的前端
    浅谈javascript中的作用域
    javascript 中的 arguments,callee.caller,apply,call 区别
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/13709636.html
Copyright © 2020-2023  润新知