编程学习网 > PHP技术 > 2021年php面试题目总结分享
2021
12-06

2021年php面试题目总结分享

各位职场人,有没有觉得当你面试多了的时候会产生怀疑人生,有些认为你还不错,有些却觉得基础不扎实,毕竟每个面试官的知识面都不一样,判断标准也不一样,最重要的还是摆平心态,就当做平时和别人做技术交流。而面试除了找工作以外,也是检验自己能力的一个途径。本文给大家分享一些php面试题,希望能对大家有所帮助


PHP7和PHP5有什么区别

  • 性能提升:PHP7比PHP5.0性能提升了两倍。

  • 以前的许多致命错误,现在改成抛出异常。

  • 移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。

  • 新增加了空合并操作符。

  • 新增加了结合比较运算符。

  • 新增加了函数的返回类型声明。

  • 新增加了标量类型声明。

  • 新增加匿名类。

trait和interface的区别

trait

是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。

interface

可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。接口是通过interface关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。相关链接:Trait 、interface

PHP有哪些魔术方法

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(),__wakeup(), __serialize(), __unserialize(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo()等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。

PHP的数组有哪些常用函数

array(),array_keys(),in_array(),array_column(),array_pop(),array_first(),array_flip(),array_walk(),array_slice(),array_sum()相关链接:PHP数组

__autoload和spl_autoload_register有什么关系

当我们使用PHP新建一个类对象时,需要引入这个类的代码文件。如果需要新建100个类,则需要引入100个类文件,那么业务代码就要有100条include语句,这样就很痛苦了,所以需要使用PHP的自动加载机制。但是PHP怎么知道类文件的路径呢?这就需要我们自己实现一个加载类文件的方法,可以通过实现__autoload方法,或者通过spl_autoload_register注册自动加载方法。__autoload —— 尝试加载未定义的类(警告:本函数已自 PHP 7.2.0 起被废弃,并自 PHP 8.0.0 起被移除。强烈建议不要依赖本函数。)spl_autoload_register —— 将函数注册到SPL __autoload函数队列中。那么为什么__autoload不推荐使用呢?他有一个很大的缺陷:只能定义一次。当我们项目中有多种不同的目录结构时,就需要在__autoload中用各种判断来加载不同目录的类文件。而spl_autoload_register可以注册多个加载方法到队列中,比__autoload更加灵活。相关链接:spl_autoload_register

CGI和FastCGI有什么区别

CGI(Common Gateway Interface)

全称是“通用网关接口”,是一种让客户端(web浏览器)与Web服务器(nginx等)程序进行通信(数据传输)的协议。

FastCGI(Fast Common Gateway Interface)

全称是“快速通用网关接口”。是通用网关接口(CGI)的增强版本,由CGI发展改进而来,主要用来提高CGI程序性能,类似于CGI,FastCGI也是一种让交互程序与Web服务器通信的协议。

两者区别

CGI程序运行在独立的进程中,并对每个Web请求建立一个进程,这种方法非常容易实现,但效率很差,难以扩展。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。此外,由于地址空间无法共享,也限制了资源重用。与CGI程序为每个请求创建一个新的进程不同,FastCGI使用持续的进程(master)来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket或者一个TCP connection传递给FastCGI进程。


什么是PHP-FPM

PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,它是 FastCGI 的实现,用于管理PHP进程池的软件,用于接受web服务器的请求。相关链接:深入了解下PHP-FPM

PHP脚本的执行流程

首先,Zend Engine(ZE),调用词法分析器(Lex生成的,源文件在 Zend/zend_language_sanner.l), 将我们要执行的PHP源文件,去掉空格 ,注释,分割成一个一个的token。然后,ZE会将得到的token forward给语法分析器(yacc生成, 源文件在 Zend/zend_language_parser.y),生成一个一个的opcode,opcode一般会以op array的形式存在,它是PHP执行的中间语言。最后,ZE调用zend_executor来执行op array,输出结果。


以上就是“2021年php面试题目总结分享”的详细内容,想要了解更多php内容欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取