当前位置:首页 > Web开发 > 正文

2020PHP面试

2024-03-31 Web开发

一、列举一些PHP的设计模式

单例模式:保证在整个应用措施的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必需供给一个访谒该类的全局访谒点。

工厂模式:界说一个创建东西的接口,但是让子类去实例化具体类。工厂要领模式让类的实例化延迟到子类中。

不雅察看者模式:不雅察看者模式有时也被称作颁布/订阅模式,该模式用于为东西实现颁布/订阅成果:一旦主体东西状态产生转变,与之关联的不雅察看者东西会收到通知,并进行相应操纵。

适配器模式:适配器模式将一个类的接口转换成客户但愿的此外一个接口,使得原本由于接口不兼容而不能一起事情的那些类可以在一起事情。

依赖注入模式:依赖注入(Dependency Injection)是控制反转(Inversion of Control)的一种实现方法。要实现控制反转,凡是的解决方案是将创建被挪用者实例的事情交由 IoC 容器来完成,然后在挪用者中注入被挪用者(通过结构器/要领注入实现),这样我们就实现了挪用者与被挪用者的解耦,该过程被称为依赖注入。

门面模式:门面模式(Facade)又称外不雅观模式,用于为子系统中的一组接口供给一个一致的界面。

二、单例模式代码示例

  

技术图片

三、PHP7 和 PHP5 的区别,具体多了哪些新特性?

性能提升了两倍

增加告终合对照运算符 (<=>)  , 以及 ?? 等。

增加了标量类型声明、返回类型声明

try...catch 增加多条件判断,更多 Error 错误可以进行异常措置惩罚惩罚      Error 和 Exception 的捕获手段差别

增加了匿名类,此刻撑持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类界说。

   为什么性能提升了2倍?

变量存储字节减小,,减少内存占用,提升变量操纵速度

改进数组布局,数组元素和 hash 映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率

改造了函数的挪用机制,通过优化参数通报的环节,减少了一些指令,提高执行效率

四、web常见的打击手段

  1. CSRF  跨站伪造请求   

    盗用用户身份,欺骗处事器,完成打击请求。

    防止手段:  使用验证码, 为每个请求添加token验证。

  2. XSS 打击   跨站脚本打击。

    打击者往页面里嵌入恶意js代码,打击用户。

    防止手段: 核心就在于,永远不要相信用户的输入数据,始终对用户输入的数据连结过滤。

  3. SQL注入 打击者在提交数据等场景 提交了一些犯警的sql,导致数据库被注入大量垃圾数据,运行迟缓。或者袒露系统隐私数据。

    防止手段:核心依然在于永远不要相信用户输入的数据,不要使用动态拼装的sql,对隐私数据加密,禁止明文存储。

         其次,可以借助php.ini 里的一个配置magic_quotes_gpc = on 开启用户提交对盘问时的字符转义 好比把‘转义成\。 或者使用其他自界说函数进行过滤。

五、框架相关-Laravel的处事容器 

DI 依赖注入  所需要的依赖类都通过参数的形式传入。

IOC 控制反转  将依赖类的控制权交出去,由主动变为被动。

参考大佬文章 https://learnku.com/articles/19195

2020PHP面试-PHP篇

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/29945.html