zoukankan      html  css  js  c++  java
  • 整理的一些PHP面试题目

    1.strlen()和mb_strlen()的作用分别是什么?

    strlen()和mb_strlen()的作用都是来获取字符串的长度,其中strlen()只针对单字节编码字符,也就是计算字符串的总字节数,如果是多字节编码,如gbk和utf8,使用strlen()获得的不是字符总数而是总字节数,可以使用mb_strlen来获取其字符的个数,使用mb_string要注意两点,一是要开启mbstring扩展,而是要指定字符集。

    应用如下例

     2.include和require都能把一个文件包含到当前文件中,两者有什么区别?include和include_once区别呢?

    include函数会将指定的文件读入并且执行里面的程序;

    require函数会将目标文件的内容读入,并且把自己本身代换成这些读入的内容;

    include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。

    include_once (require_once)语句在脚本执行期间包含并运行指定文件。此行为和 include (require)语句类似,区别是如果该文件中的代码已经被包含了,则不会再次包含,只会包含一次。include_once(require_once)需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载。include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次;

    3.POST和GET有什么区别?

     1. GET是从服务器上获取数据,POST是向服务器传送数据。
      2. GET是通过发送HTTP协议通过URl参数传递进行接收,而POST是实体数据,通过表单提交
      3. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
      4. GET安全性非常低,POST安全性较高。

    4.foo()和@foo()之间有什么区别?

    foo()会执行这个函数,任何解释错误,语法错误,执行错误都会在页面上显示出来。

    @foo()在执行这个函数时,会隐藏上述的错误信息。

    很多应用程序都会使用@mysql_connect()和@mysql_query来隐藏mysql的错误信息,这样不好,错误不应该被隐藏,应该妥善处理。

    5.PHP中关于当前脚本,$_SERVER的有关信息。

    客户端IP:$_SERVER["REMOTE_ADDR"]

    服务器端IP:$_SERVER["SERVER_ADDR"]

    获取当前脚本的执行路径:$_SERVER["SCRIPT_FILENAME"]或者__FILE__

    当前脚本的名称:$_SERVER["PHP_SELF"]或者$_SERVER["SERIPT_NAME"]

    链接到前一页的URL地址:$_SERVER["HTTP_REFERER"]

    6.sort(),asort(),ksort(),arsort(),rsort()各有什么区别。

    sort()对数组进行排序,当函数结束时数组单元将被从最低到最高重新安排。

    rsort()对数组进行逆向排序。

    asort()对数组进行排序并保持索引关系。

    arsort()对数组进行逆向排序并保持索引关系。

    ksort()对数组进行按照键名排序,保留键名到数据的关联,主要用于关联数组。

    7.什么是可变变量?以下程序的输入值是什么?

    获取一个普通变量的值作为这个可变变量的变量名。

    以上程序输出:hotdogok

    8.常量如何定义,如何检测一个常量是否被定义?

    定义常量:define()

    检测常量是否定义:defined(),例如

    define("TEST","hello world");

    if(defined("TEST")){

      echo TEST;

    }

    9.执行程序段<?php  echo 8%(-2) ?>,输出结果是:

    %为取模运算,以上程序将输出0

    $a%$b,其结果的正负取决于$a的符号。

    echo ((-8)%3);     //将输出-2

    echo (8%(-3));      //将输出2

    10.echo count("abc")将会输出什么;

    count()函数计算数组中的单元数目或者对象中的属性个数,通常是一个array(),对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法count(),此方法返回count()函数的返回值。

    如果参数不是数组型或者实现了countable接口的对象,将返回 1,只有一个例外,如果参数是NULL,则结果是 0。

    11.PHP中单引号和双引号有什么区别?哪个速度更快?

    单引号更快

    单引号内的数据不会被解析(任何变量和特殊转义字符),所以速度更快,而双引号内的数据会被解析,如变量($var)值会代入字符串中,特殊转义字符也会被解析成特定的单个字。

    单引号例如:

    $name='hello';

    echo 'the $name';

    会输出  the $name

    如果是双引号

    $name='hello'

    echo "the $name"

    会输出 the hello

    12.简述GBK,GBK2312,BIG5,GB18030

    GB2312支持的汉字较少,GBK是相比GB2312汉字更为丰富,包括全部的中日韩汉字,GB18030相比GBK增加了一些少数民族汉字汉字库更为多样,常人很少用,一般简体中文使用GBK而繁体中文使用BIG5

    13.简述empty()函数的用法

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

    14.is_null()函数的用法?

    检测变量是否为NULL,如果是null,则返回TRUE,否则返回FALSE。通常变量被认识是NULL有三种情况1.被赋值为NULL2.尚未被赋值3.被unset()。

    15.接口与抽象类的区别是什么?

    抽象类是不能被实例化的类,只能作为其他类的父类来使用,抽象类是通过关键字abstract来声明。

    抽象类与普通类类似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少包含一个抽象方法。

    抽象方法没有方法体,该方法天生就是要被子类重写的。

    抽象方法的格式为:abstr function abstractMethod()

    接口是通过interface关键字来声明,接口中的成员常量和方法都是public的,方法可以不写关键字public。

    接口中的方法也是没有方法体的,接口中的方法也是天生要被子类实现的。

    抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承,在应用中选择抽象类还是接口要看具体实现。

    子类继承抽象类使用extends,子类实现接口使用implements。

     

  • 相关阅读:
    Cocos2d-x之CCMenu理解
    【问题记录】mysql设置任意ip访问
    kafka eagle 使用教程
    查看Android源码和源码布局
    JAVA问题之泛型数组
    Linux面试题汇总答案(转)
    从源码看Azkaban作业流下发过程
    Azkaban源码学习笔记
    Java多线程基础学习(二)
    Java多线程基础学习(一)
  • 原文地址:https://www.cnblogs.com/coderchuanyu/p/3993820.html
Copyright © 2011-2022 走看看