• PHP工程师笔试题


    PHP工程师笔试题

     

    提示:请将答案写在另外一张空白纸上,并在30分钟内完成。

     

    PHP

    1. 请写出include、require、include_once、require_noce的区别。

    include是包含,如果程序执行到这行没有找到文件会警告.但继续执行.include_once和include是一样的  只是如果包含的文件已经存在就不再包含.require是引用资源.如果资源文件没有找到.程序会致命错误并且终止执行.require_once的意思和require是一样的,只是会检验文件是否 已经被包含.

     

    1. 请写出isset()和empty()的区别。

    isset(),检测变量是否设置

    如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

     

    empty(),检查一个变量是否为空

    如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”?”)并不等同于 PHP 的 NULL 常数。 警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。

    1. 请写出验证邮箱是否合法的正则表达式。

    /w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+/

     

    MySQL

    1. 请写出MyISAM和InnoDB有什么区别,并说明在什么场景下使用MyISAM或InnoDB?

    名称               MyISAM                     InnoDB

    -------------------------------------------------------------------------

    事务               不支持                                 支持

    数据行锁定         不支持,只有表锁定         支持

    外键约束           不支持                                 支持

    表空间大小         相对小                                相对大,最大是2倍

    全文索引           支持                                    不支持

    GIS数据            支持                                    不支持

    COUNT问题         无                                        执行COUNT(*)查询时,速度慢

    Innodb的引擎比较适合于插入和更新操作比较多的应用,而myisam则适合用于频繁查询的应用.

     

    1. 请写出这个会员数据表的结构(列名、类型、长度、属性),会员的资料有用户名、密码、邮箱、姓名、性别、固定电话、QQ和地址,会员可以使用邮箱和用户名登录。

    列名         类型         长度         属性

    ------------------------------------------------------------------

    username   varchar(50)                   PK

    pwd          char(32)

    email         varchar(255)

    name         varchar(50)

    sex      enum('0','1','2')

    tel              varchar(50)

    qq             varchar(16)

    address           varchar(255)

     

     

    1. 请写出您所知道的MySQL优化法则。

    1.为查询缓存优化你的查询,避免在语句中使用CURDATE() ,NOW(),RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存。

    2.使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。

    3.当只要一行数据时使用 LIMIT 1

    4.为搜索字段建索引

    5.在Join表的时候使用相当类型的例,并将其索引

    6.千万不要 ORDER BY RAND()

    7.避免 SELECT *

    8.永远为每张表设置一个ID,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。

    9.使用 ENUM 而不是 VARCHAR

    10.尽可能的使用 NOT NULL

    11.把IP地址存成 UNSIGNED INT

    12.固定长度的表会更快

    13.拆分大的 DELETE 或 INSERT 语句

    14.越小的列会越快

    15.选择正确的存储引擎

     

    jQuery

    1. 请写出jQuery对多个复选框(checkbox)进行全选、反选和取消的代码。

    $("#div1 :checkbox").attr("checked", true);

    $("#div1 :checkbox").attr("checked", false);

    $("#div1 :checkbox").each(function () {

      $(this).attr("checked",!$(this).attr("checked"));

    });

    1. 请写出jQuery的ajax请求例子,要标明各个参数的含义以及ajax数据传输的时候有几种数据格式。

    1、jQuery.ajax(options)

    2、load(url,data,callback)

    3、jQuery.get(url,data,callback,type)

    4、jQuery.getJSON(url,data,callback)

    5、jQuery.post(url,data,callback,type)

    6、jQuery.getScript(url,[callback])

     

    如何分酒?

    1. 一个人晚上出去打了10斤酒,回家的路上碰到了一个朋友,恰巧这个朋友也是去打酒的。不过,酒家已经没有多余的酒了,且此时天色已晚,别的酒家也都已经打烊了,朋友看起来十分着急。于是,这个人便决定将自己的酒分给他一半,可是朋友手中只有一个7斤和3斤的酒桶,两人又都没有带称,如何才能将酒平均分开呢?

     

    1.先把3斤的桶装满,把三斤酒倒入7斤的桶中,到2次。这样7斤的桶中就有了6斤的酒.

    2.再把3斤的桶装满,再用装满的三斤酒把7斤的桶装满,这样3斤桶中就剩下了2斤酒

    3.把7斤桶中的酒全部倒入10斤的桶中;把3斤桶中的2斤酒倒入7斤的桶中,再把三斤桶装满。

     

    这样他的朋友就有了3斤+2斤 正好5斤酒。

     

    /*一个人晚上出去打了10斤酒,回家的路上碰到了一个朋友,恰巧
    这个朋友也是去打酒的。不过,酒家已经没有多余的酒了,且此时
    天色已晚,别的酒家也都已经打烊了,朋友看起来十分着急。于是
    ,这个人便决定将自己的酒分给他一半,可是朋友手中只有一个7斤
    和3斤的酒桶,两人又都没有带称,如何才能将酒平均分开呢?*/

    /*--------------------------------------------
        by ************** waterstar
        time ************ 1.18
    */

    #include<stdio.h>
    void main()
    {

        int m=10;
        int a,b,c;
        a=m;b=0;c=0;
        while(a!=5)            //没分出就继续
        {
            if(b==7)           //如果b满了,就倒回a中
            {
                a=a+b;
                b=c;
                c=0;
            }            
            c=3;         
            a=m-c-b;     
            if(c+b>7)         //c不能全部倒入b中
            {
                c=b+c-7; 
                b=7;
            }
            else
            {
                b=b+c;
                c=0;
            }            
        }
        printf("十斤酒剩下:%d斤 ",a);
        printf("七斤的酒桶里有:%d斤 ",b);
        printf("三斤的酒桶里有:%d斤 ",c);
    }

     

    赔了多少钱?

    10. 一天,小赵的店里来了一位顾客,挑了20元的货,顾客拿出50元,小赵没零钱找不开,就到隔壁小韩的店里把这50元换成零钱,回来给顾客找了30元零钱。过一会,小韩来找小赵,说刚才的是假钱,小赵马上给小李换了张真钱。

    问:在这一过程中小赵赔了多少钱?

     

    80

     

     

  • 相关阅读:
    ajax原理及封装
    javascript 递归调用
    CSS的五种定位方式
    vue中iframe结合window.postMessage实现父子页面间的通信
    vue将文件流的形式的图形验证码转换成图片
    路由跳转打开新窗口,传递的参数不显示在地址栏
    js判断是否是ie浏览器、360浏览器兼容模式、QQ浏览器兼容模式、搜狗浏览器兼容模式,弹出提示使用别的浏览器打开
    vue项目中使用iframe嵌入静态页面,动态获取静态页面的高度赋值给iframe的高度
    vue项目中使用iview组件中的table插件实现表头文字居中,内容文字居左
    vue前端开发实现微信支付和支付宝支付
  • 原文地址:https://www.cnblogs.com/Athrun/p/3511536.html
Copyright © 2020-2023  润新知