2020PHP面试-PHP篇

2021-09-07 02:12

阅读:672

标签:比较   xss   动态   工厂方法   实例化   接口   反转   str   com   一、列举一些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/191952020PHP面试-PHP篇标签:比较   xss   动态   工厂方法   实例化   接口   反转   str   com   原文地址:https://www.cnblogs.com/camouflage/p/12327593.html


评论


亲,登录后才可以留言!