欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

整理一下今年面试印象较深的一些问题-[原创]

日期:2018-09-04 16:22:50 作者:tanyi 来源:我的笔记 浏览:1115 次
由于个人基础知识不算很扎实,所以在面试的时候由于一定的紧张导致很多下来觉得很简单的问题在面试的时候却答不出或者答的不太理想,这里整理一下,方便巩固记忆

1 PHP抽象类与接口的区别

  说实话平时如果不是自己要去设计一套系统这个用得还是比较少,这里整理一下两者的区别

  1.1抽象类可以有自己的成员变量,接口不行,接口仅能定义一些简单常量

  1.2一个类可以继承(严格来说是实现不是继承)多个接口,继承关键字(implements),但是一个类只能继承一个抽象类,继承关键字(extends)

  1.3一个类如果继承了一个接口,那么它必须实现接口里面的所有方法,一个类如果继承了一个抽象类,那么它必须实现抽象类里面所有的抽象方法

  1.4抽象类可以有不同的修饰方法,比如(private,protected),但接口所有的方法都默认是public,不能自行修改

  1.5抽象类可以有构造函数,但接口不行

  1.6两者相同点在于抽象类的抽象方法和接口类的方法不能写任何内容,包括后面的花括号(‘{}’);所有的方法都在子类去实现

//创建一个抽象类Test1

abstract class Test1{

    public $a='';


    public function xiaoming(){
        echo 'xiaoming';
    }
    

    abstract function xiaowang();
}

//创建一个类Test2去继承Test1

class Test2 extends Test1{

    public function index(){
        echo 'index';
    }
}

$obj=new  Test2();
$obj->index();

此时调用Test2的index方法会报错:Fatal error: Class Test2 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Test1::xiaowang)

原因是我在继承了抽象类但没有去实现它的抽象方法,此时我们去把抽象方法加上,可以不用写内容,像这样:

class Test2 extends Test1{
    
    function xiaowang()
    {
        // TODO: Implement xiaowang() method.
    }

    public function index(){
        echo 'index';
    }
}

这时调用Test2的index方法正常输出:index

下面看下接口类,新建一个接口类:

interface Test3{

    const CESHI='aa';

    function xiaowang();


}

同样我们Test2去实现了接口类里面的xiaowang这个方法:

class Test2 implements Test3{

    function xiaowang()
    {
        // TODO: Implement xiaowang() method.
    }

    public function index(){
        echo 'index_'.Test3::CESHI;
    }
}

$obj=new  Test2();

$obj->index();

此时程序输出:index_aa;

至于其他更深入的东西就不在这探讨了

2 mysql having的使用

having是在对数据分组后再对数据进行筛选,作用类似where,但是where只能在分组查询之前使用,分组后就得用having来操作了,举例:

一个学生表student:

字段分别为id,name,class(班级),age(年龄),查出学生年龄满18且人数大于20人的班级

SELECT count(*) as num,class from student where age>=18 GROUP BY class HAVING num>20


3 ajax实现同步

这个问题说实话我当时以为很难,因为平时很少有需求让ajax同步操作,结果后来看了下文档,就一个参数的问题,AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML),而设置同步或异步只需要设置一个参数,async:true(异步)或 false(同步);JQuery的ajax()方法默认这个参数为true,如果需要同步,则需要设置这个参数为false

$.ajax({url:"index.php",async:false});


待更新....

提交评论
评论列表