zoukankan      html  css  js  c++  java
  • PHP笔试题及答案

    1、表单提交get和post有何区别?  

    答:get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

     

    2、用PHP打印出前一天的时间格式;

    echo date("Y-m-d H:i:s",time()-(3600*24));或echo date("Y-m-d H:i:s",strtotime("-1 day")); 

     

    3、echo(),print(),print_r()的区别;

    echo可以接多个参数,print只能接一个参数,它们都是PHP的语言结构,print_r是递规打印,用来打印数组或对象  



    4、优化MYSQL数据库的方法。  

    1) 将where中用的比较频繁的字段建立索引,联合索引。   

    2) 保证单表数据不超过200W,适时分割表。   

    3) 避免使用长连接。

    4) 修改my.cnf里面的各项参数,比如最大连接数,查询缓存等。根据你的服务器内存来最大化调节那些配置参数。   

    5) 针对需求,使用正确的表引擎,是myisam或是innodb。    

     

    5.用PHP写出显示客户端IP与服务器IP的代码: 

    echo $_SERVER['REMOTE_ADDR'] //客户端ip 

    echo $_SERVER['SERVER_ADDR'] //服务器端ip      

     

    6、如何实现字符串翻转?

    英文:

    strrev($a)

    中文或其他文字:

    中文:GB2312, 代码是使用GB2312编码

    <?php

    function reverse($str)

    {

     $ret = "";

     len=mbstrwidth(str,"GB2312");

     for(i=0;i< len;i++)

     {

     arr[]=mbsubstr(str, $i, 1, "GB2312");

     }

     return implode("", array_reverse($arr));

    }

    print_r(reverse("你好"));

     

    7、实现中文字串截取无乱码的方法。

    mb_substr($str, 1, 1, "GB2312");

     

    8、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? 

    在失败的时候:

    include产生一个warning,而require产生直接产生错误中断

    require在运行前载入

    include在运行时载入

    require_once

    include_once



    9、如何修改SESSION的生存时间。

    session_set_cookie_params

     

    10、有一个网页地址, 比如PHP研究室主页: http://www.jb51.net/index.html,如何得到它的内容?

    file_get_contents ('http://www.jb51.net/index.html');

    curl:

       $ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, "http://v.hao123.com/dianshi/?qq-pf-to=pcqq.c2c");

            curl_setopt($ch, CURLOPT_HTTPHEADER, array(

                'User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36'

            ));+

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            $return = curl_exec($ch);

            curl_close($ch);

     

     

    11、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);

    未授权

    header("HTTP/1.0 404 Not Found");

    fast CGI中:

    header("Status: 404 Not Found");





    12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?
    成对出现

    $a = <<EOD

    good test

    EOD;



    13. 在PHP中error_reporting这个函数有什么作用? 
    设定error的展示级别



    14、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? 
    mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。



    15、检测一个变量是否有设置的函数是否?是否为空的函数是?
    isset()
    empty()



    16、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 

    print_r($arr[0]);

    reset($arr);

    print_r(current($arr));

    print_r(array_shift($arr));



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

    <?php

    $url = "http://www.sina.com.cn/abc/de/fg.php?id=1";

    arr=parseurl(url);

    pathArr=pathinfo(arr['path']);

    print_r($pathArr['extension']);



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

    <?php

    function aGetAllFile($folder)

    {

     $aFileArr = array();

     if(is_dir($folder))

     {

     handle=opendir(folder);

     while((file=readdir(handle)) !== false)

     {

      //如果是.或者..则跳过

      if(file=="."||file == "..")

      {

      continue;

      }

      if(is_file(folder."/".file))

      {

      aFileArr[]=file;

      }

      else if(is_dir(folder."/".file))

      {

      aFileArr[file] = aGetAllFile(folder."/".file);

      }

     }

     closedir($handle);

     }

     return $aFileArr;

    }

    $path = "/home/test/sql";

    print_r(aGetAllFile($path));



    19. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

    //冒泡排序(数组排序)

    function bubble_sort($array){

        $count = count($array);

        if ($count <= 0) return false;

        for($i=0; $i<$count; $i++){

            for($j=$i; $j<$count-1; $j++){

                if ($array[$i] > $array[$j]){

                    $tmp = $array[$i];

                    $array[$i] = $array[$j];

                    $array[$j] = $tmp;

                }

            }

        }

        return $array;

    }



    //快速排序(数组排序)

    function quick_sort($array) {

        if (count($array) <= 1) return $array;

        $key = $array[0];

        $left_arr = array();

        $right_arr = array();

        for ($i=1; $i<count($array); $i++){

            if ($array[$i] <= $key)

                $left_arr[] = $array[$i];

            else

                $right_arr[] = $array[$i];

        }

        $left_arr = quick_sort($left_arr);

        $right_arr = quick_sort($right_arr);

        return array_merge($left_arr, array($key), $right_arr);

    }





    20. 使用五种以上方式获取一个文件的扩展名 ;

    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){

        return pathinfo($file_name, PATHINFO_EXTENSION);

    }

    function get_ext5($file_name){

        return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));

    }



    21.session与cookie的区别?

    答:session:储存用户访问的全局唯一变量,存储在服务器上的PHP指定的目录中的(session_dir)的位置进行的存放

       cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。

       两者都可通过时间来设置时间长短



    22.数据库中的事务是什么?

    答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,

    事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。





    23、优化MySQL数据库的方法

    答:

    (1)、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM

    (2)、使用连接(JOIN)来代替子查询:

    (3)、使用联合(UNION)来代替手动创建的临时表

    (4)、事务处理:

       a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败

    (5)、锁定表,优化事务处理:

       a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。

         包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,

         不会有其它的访问来对 inventory 进行插入、更新或者删除的操作

    (6)、使用外键,优化锁定表

       a.把customerinfo里的customerid映射到orderinfo里的customerid,

         任何一条没有合法的customerid的记录不会写到orderinfo里

    (7)、建立索引:

    (8)、优化查询语句

       a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作





    24、如何修改SESSION的生存时间

    答:方法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);

     

    25、谈谈对mvc的认识

    答:由模型(model),视图(view),控制器(controller)完成的应用程序

       由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;



    26. 请写一个函数验证电子邮件的格式是否正确 

    答:function checkEmail($email)

      {

        $pregEmail = "/([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?/i";

        return preg_match($pregEmail,$email);  

      }



    27、下面的程序会输入是否?

      $num = 10;

      function multiply(){

      $num = $num * 10;

      }

      multiply();

      echo $num;

      ?>

        答:输出:10



    28、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值

    答:echo $array[0];



    29、请将28题的数组的值用','号分隔并合并成字串输出

    答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}



    30、$a = 'abcdef'; 请取出$a的值并打印出第一个字母

    答:echo $a{0} 或 echo substr($a,0,1)

     

    31、

    <?php

        $str1 = null;

        $str2 = false;

        echo $str1==$str2 ? ‘相等’ : ‘不相等’;

        $str3 = ”;

        $str4 = 0;

        echo $str3==$str4 ? ‘相等’ : ‘不相等’;

        $str5 = 0;

        $str6 = ’0′;

        echo $str5===$str6 ? ‘相等’ : ‘不相等’;

    ?>

    答案:相等 相等 不相等



    32、MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?

    答:Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些



    33、求两个日期的差数,例如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′);

    ?>

    方法二:

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

    方法三:echo abs(strtotime(“2007-2-1″)-strtotime(“2007-3-1″))/60/60/24 计算时间差





    34、请写一个函数,实现以下功能:

    字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

    方法一:

    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’)));





    35、echo count(“abc”); 输出什么?

    答案:1



    36、.以下的代码会产生什么?为什么?

    $num =10;

    function multiply(){

    $num =$num *10;

    }

    multiply();

    echo $num;

    由于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。





    37. HTTP协议中GET、POST和HEAD的区别?

    HEAD: 只请求页面的首部。

    GET: 请求指定的页面信息,并返回实体主体。

    POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

    (1)HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。

    (2)在FORM提交的时候,如果不指定Method,则默认为GET请 求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为 该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;

    GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

    (3)GET 这个是浏览器用语向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。



  • 相关阅读:
    Servlet & JSP
    Servlet & JSP
    Servlet & JSP
    Servlet & JSP
    Servlet & JSP
    Servlet & JSP
    Table of Contents
    Commons Codec
    14.Longest Common Prefix
    628.Maximum Product of Three Numbers
  • 原文地址:https://www.cnblogs.com/crystaltu/p/6899827.html
Copyright © 2011-2022 走看看