美文网首页
PHP常见面试题及答案

PHP常见面试题及答案

作者: 欣博客 | 来源:发表于2018-07-10 13:15 被阅读0次

    一.必答题
    1.(算法题)有1~5000一组乱序数列,请使用伪代码对该数进行排列.

    <?php
    // $arr=array(1,2,3,4,5,6,7,8,9.....5000);
    $arr = range(1, 50); //生成1-5000数组
    shuffle($arr); //乱序
    
    //冒泡排序法
    function bubbleSort($arr)
    {
        $total = count($arr);
        for ($i = 0; $i < $total; $i++) {
            for ($j = 0; $j < $total - $i - 1; $j++) {
                if ($arr[$j] > $arr[$j + 1]) {
                    $tmp         = $arr[$j];
                    $arr[$j]     = $arr[$j + 1];
                    $arr[$j + 1] = $tmp;
                }
            }
        }
        return $arr;
    }
    
    //快速排序
    function quick($arr)
    {
        $total = count($arr);
        $left  = [];
        $right = [];
        if ($total <= 1) {
            return $arr;
        }
        for ($i = 1; $i < $total; $i++) {
            if ($arr[0] > $arr[$i]) {
                $left[] = $arr[$i];
            } else {
                $right[] = $arr[$i];
            }
        }
        $left  = quick($left);
        $right = quick($right);
        return array_merge($left, [$arr[0]], $right);
    }
    
    print_r(bubbleSort($arr));
    print_r(quick($arr));
    

    2.(算法题)公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡,请用伪代码写出求公鸡,母鸡和小鸡的数目
    答案

    <?php
    for($y=0;$y<=20;$y++){
        for($x=0;$x<=(100/3);$x++){
            for($z=0;$z<=100;$z++){
                if($x+$y+$z==100 && (($x*3)+($y*5)+($z/3))==100){
                    echo '公鸡'.$x.",母鸡".$y.",小鸡".$z."<br>";
                }
            }
        }
    }
    

    3.(算法题)1,1,2,3,5,8,13,21,34.。。。 求第30位的数是多少,请用伪代码描述其实现方法

    <?php
    $f1=1;
    $f2=1;
    for($i=3;$i<=30;$i++){
        $f3=$f1+$f2;
        $f1=$f2;
        $f2=$f3;
    }
    echo $f3;
    

    二.基础选答题

    1.(基础题)请描述你经常使用的php函数及其主要作用(最少5个)

    array_pop() 弹出数组的最后一个元素
    explode() 按特点符号,分隔字符串,返回数组
    implode() 按特点符号,连接数组成为字符串
    substr() 取出字符串中的一部分
    strrpos() 获得字符出现的最后的个位置

    2.(基础题)请描述一种你常用的开发框架(语言不限), 主要使用方法。

    thinkphp laravel
    (如果框架是自己开发的,请用类图大致描述框架结构)

    3.(基础题)请描述一种你常用的ajax调用方法。
    $.ajax $.post $.get
    
    4.(基础题)请描述你常用的HTML标记及其主要作用。(最少5种)
    <pre></pre> 原样输出
    <table></table> 表格
    <script></script> js脚本
    <style></style> 页面模式 
    <form> 表单
    <input type=”text” /> input标记
    </form> 表单结束
    <div></div> div
    <span></span> 行内
    <select> 下拉列表 
    </select> 下拉列表结束
    
    5.(基础题) 请描述你常用的javascript函数。
    document.getElementById();
    document.getElementsByTag();
    document.getElementsByName();
    setInterval()
    setTimeOut()
    

    三.论述与扩展选答题——论述与扩展题各选一道作答

    1.(论述题)请用类屯举例描述mvc结构

    M是model模型,业务逻辑层,V是视图view,C是控制器

    2.(论述题)请用简单的语言描述一下HTTP协议

    HTTP协议就是客户机与服务器的请求与响应。

    1. 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
    2. 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
    3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
      客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
    3.(扩展题)请描述一下在linux下php的编译过程
    1. 获得源码包
    2. 解压源码包
    3. 使用configure检查并配置安装需要的系统环境
    4. Make编译源代码并生成安装文件
    5. Make install命令进行安装
      整合apache与PHP
    4.(扩展题)请描述一下本地字节序于网络字节序的区别

    字节序:大于一个字节的数据 ,在内存中的存放顺序。
    本地字节序:与系统有关,不同的CPU有不同的字节序。分为两种:小尾字节序就是低位字节排放在内存的低端,高位字节排放在内存的高端。大尾字节序就是高位字节排放在内存的低端,低位字节排放在内存的高端
    网络字节序:TCP/IP各层协议将字节序定义为大尾,因此TCP/IP协议中使用的字节序通常称之为网络字节序。

    5.请说明表单中 get与post提交方法的区别?

    GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
    POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
    GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,一般认为不能超过100KB

    6.请说明php中include,require,include_once,require_once的区别?

    include函数:会将指定的文件读入并且执行里面的程序;
    require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容;
    include_once 函数:在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次;
    require_once 函数:和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
    include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。

    7.请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?

    按值传递:函数范围内对值的任何改变在函数外部都会被忽略
    按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
    优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

    8.请说明php中mysql_connect 和 mysql_pconnect两个函数的区别?

    mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接。

    mysql_connect() 函数打开非持久的 MySQL 连接。
    两者的区别主要有两个:

    1. 在进行数据库连接时,函数会先找同一个host, 用户和密码的persistent(持续的)的链接,如果能找到,则使用这个链接而不返回一个新的链接。

    2. mysql_pconnect()创建的数据库连接在脚本执行完毕后仍然保留,可以被后来的代码继续使用,mysql_close()函数也不会关闭mysql_pconnect()创建的链接。

    6.请用正则表达式写出一个函数验证ip地址的格式是否正确?

    /^((25[0-5]|2[0-4]d|1d{2}|d{1,2}).){3}(25[0-5]|2[0-4]d|1d{2}|d{1,2})$/

    7.SQL查询语句如下:select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44)让结果按10,32,22,76,13,44的顺序检索出来,请问如何书写?
    select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44)  order by field(ID,10,32,22,76,13,44)
    
    8.请写出以下三个程序的执行结果
    <?php
    $empty = '';
    $null = NULL;
    $bool = FALSE;
    $notSet;
    $array = array();
    $a = "hello";
    $b = &$a;
    unset($b);
    $b = "world"; 
    echo $a;  //hello
    
    <?php
    $empty = '';
    $null = NULL;
    $bool = FALSE;
    $notSet;
    $array = array();
    
    $a = 1;
    $x = &$a;
    $b = $a++; 
    
    echo $b;
    //1
    
    
    <?php
    $a = 1;
    fadd($a);
    echo $a;
     
    function fadd($a){
    $a +=100;
    }
     
    //1
    

    9.请用任何一种语言写出一个函数,能够遍历一个文件夹下的所有文件及文件夹。

    <?php
    function my_candir($dir)
    {
        $files = [];
        if ($handle = opendir($dir)) {
            while (($file = readdir($handle))) {
                
                if ($file != '..' && $file != '.') {
                    if (is_dir($dir . '/' . $file)) {
                        $files[$file] = my_candir($dir . '/' . $file);
                        
                    } else {
                        $files[] = $file;
                        
                    }
                }
            }
            closedir($handle);
            return $files;
        }
    }
    
    
    print_r(my_candir("/Users/admin/Desktop/q"));
    

    相关文章

      网友评论

          本文标题:PHP常见面试题及答案

          本文链接:https://www.haomeiwen.com/subject/alpfpftx.html