当前位置: 首页 > 后端技术 > PHP

PHP面试(一)

时间:2023-03-29 14:56:31 PHP

##1.数据库范式理解第一范式(1NF):属性不可分割第二范式(2NF):符合1NF,非主属性完全依赖于代码。2NF是对记录的唯一性约束,要求记录具有唯一标识,即实体的唯一性,更通俗地说,主键ID的第三范式(3NF):符合2NF,消除了传递依赖。3NF是对字段冗余的约束,即任何字段都不能从其他字段派生,不需要冗余字段。第四范式:要求删除同一张表中的多对多关系。第五范式:从最终结构重新建立原始结构。第一范式:每个表都应该有一个唯一标识每一行的主键。第二范式:在复合主键的情况下,非主键部分不应依赖于部分主键。第三范式:非主键之间应该没有依赖关系。二、PHP抽象类和接口抽象类的区别:定义为abstract的类不能被实例化。任何一个类,如果其中至少有一个方法被声明为abstract,那么这个类就必须被声明为abstract。定义为abstract的方法只声明其调用方法(参数),不能定义其具体的功能实现。继承抽象类时,子类必须定义父类中的所有抽象方法;此外,这些方法的访问控制必须与父类中的相同(或更宽松)。比如抽象方法声明为protected,那么子类中实现的方法就应该声明为protected或者public,不能定义为private。另外,方法的调用方式必须匹配,即需要参数的类型和个数必须一致。比如子类定义了一个可选参数,而父类抽象方法声明没有,那么两者的声明并不冲突。这也适用于从PHP5.4开始的构造函数。PHP5.4之前的构造函数声明可以不同。接口:使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。接口是用interface关键字定义的,就像定义一个标准类一样,但是里面定义的所有方法都是空的。接口中定义的所有方法都必须是公共的,这是接口的一个特性。要实现接口,请使用implements运算符。接口中定义的所有方法都必须在类中实现,否则会报致命错误。一个类可以实现多个接口,多个接口的名称用逗号隔开。实现多个接口时,接口中的方法不能重名。也可以使用扩展运算符继承接口。要实现接口,类必须使用与接口中定义的方法完全相同的方法。否则,将导致致命错误。区别:1.接口继承使用implements,抽象类使用extends。2、接口中不能声明变量,但可以声明类常量。抽象类中可以声明各种变量3.接口不构造函数,抽象类可以有4.接口中的方法默认是public的,抽象类中的方法可以修饰为public,protected,private5.一个类可以继承多个接口,但只能继承一个抽象类三、PHP7新特性PHP7的新特性主要有:标量类型声明、返回值类型声明、null合并运算符、飞船运算符、通过define()定义常量数组、匿名类等四、Nginx和Php-fpm的工作原理我们知道Nginx(enginex)是一个高性能的HTTP和反向代理服务,同时也是一个IMAP/POP3/SMTP服务器。php-fpm是FastCGI的实现,提供了进程管理的功能。因为Nginx不仅有处理http请求的功能,还可以充当反向代理;所以Nginx通过反向代理功能将动态请求转发给后端的Php-fpm。nginx和php-fpm详解