2020最新整理PHP面试题及答案
一、OOP简介及OOP的特点
OOP是面向对象编程,面向对象编程是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。
OOP的特点:
-
封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只 需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。
-
继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。PHP只支持单继承,也就是说一个子类只能有一个父类。
-
多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性。
二、laravel的特点
laravel框架引入了门面、依赖注入、Ioc模式以及各种各样的设计模式,另外,laravel的特点有:
-
强大的rest router:用简单的回调函数就可以调用,快速绑定controller和router
-
artisan:命令行工具,很多手动的工作都自动化
-
可继承的模板,简化view的开发和管理
-
blade模板:渲染速度更快
-
ORM操作数据库
-
migration:管理数据库和版本控制
-
测试功能也很强大
-
composer也是亮点
三、简述数据库优化的几个方面
数据库的优化可以从四个方面来优化:
-
从结构层: web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离;
-
从储存层: 采用合适的存储引擎,采用三范式;
-
从设计层: 采用分区分表、索引、表的字段采用合适的字段属性,适当的采用逆范式,开启mysql缓存;
-
sql语句层:结果一样的情况下,采用效率高,速度快节省资源的sql语句执行;
四、权限管理(RBAC)的实现
-
首先创建一张用户表:id name auto(保存格式为:控制器-方法)
-
然后在后台中创建一个基类控制器,控制器里封装一个构造方法,当用户登陆成功后,使用TP框架中封装好的session函数获取保存在服务器中的session id,然后实例化模型,通过用户id获取保存在数据表中的auth数据,使用explode函数分割获取到的数据,并使用一个数组保存起来,然后使用TP框架中封装好的常量获取当前控制器和方法,然后把他们组装成字符串,使用in_array函数进行判断该数组中是否含有当前获取到的控制器和方法,如果没有,就提示该用户没有权限,如果有就进行下一步操作
五、thinkPHP框架有哪些优点
thinkPHP框架是我们中国人自己开发的框架,各种资料比较齐全,国内用的比较多,比较简单和方便,而且是免费开源的。
六、thinkPHP的特性有哪些
-
多表查询非常方便,在model中几句代码就可以完成对多表的关联操作
-
融合了smarty模板,使前后台分离
-
支持多种缓存技术,尤其对memcache技术支持非常好
-
命名规范,模型,视图,控制器严格遵循命名规则,通过命名一一对应
-
支持多种url模式
-
内置ajax返回方法,包括xml,json,html等
-
支持应用扩展,类库扩展,驱动扩展等
七、简述cookie及cookie特点
cookie是由服务器产生,存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制,cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。利用cookie的特性,大大扩展了WEB应用程序的功能,不仅可以建立服务器与客户机的联系,因为cookie可以由服务器定制,因此还可以将购物信息生成cookie值存放在客户端,从而实现购物车的功能。用基于cookie的方式实现服务器与浏览器之间的会话或购物车,有以下特点:
-
cookie存储在客户端,且占用很少的资源,浏览器允许存放300个cookie,每个cookie的大小为4KB,足以满足购物车的要求,同时也减轻了服务器的负荷;
-
cookie为浏览器所内置,使用方便。即使用户不小心关闭了浏览器窗口,只要在cookie定义的有效期内,购物车中的信息也不会丢失;
-
cookie不是可执行文件,所以不会以任何方式执行,因此也不会带来病毒或攻击用户的系统;
-
基于cookie的购物车要求用户浏览器必须支持并设置为启用cookie,否则购物车则失效;
-
存在着关于cookie侵犯访问者隐私权的争论,因此有些用户会禁止本机的cookie功能。
八、简述session及session特点
session是实现购物车的另一种方法。session提供了可以保存和跟踪用户的状态信息的功能,使当前用户在session中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,它与cookie最重大的区别是,session将用户在会话期间的私有信息存储在服务器端,提高了安全性。在服务器生成session后,客户端会生成一个sessionid识别号保存在客户端,以保持和服务器的同步。这个sessionid是只读的,如果客户端禁止cookie功能,session会通过在URL中附加参数,或隐含在表单中提交等其他方式在页面间传送。因此利用session实施对用户的管理则更为安全、有效。
同样,利用session也能实现购物车,这种方式的特点是:
-
session用新的机制保持与客户端的同步,不依赖于客户端设置;
-
与cookie相比,session是存储在服务器端的信息,因此显得更为安全,因此可将身份标示,购物等信息存储在session中;
-
session会占用服务器资源,加大服务器端的负载,尤其当并发用户很多时,会生成大量的session,影响服务器的性能;
-
因为session存储的信息更敏感,而且是以文件形式保存在服务器中,因此仍然存在着安全隐患。
九、thinkPHP框架中的大字母函数
- U:对url的组装
- A:内部实例化控制器
- S:缓存处理
- R:调用某个控制器的操作方法
- D:实例化自定义模型类
- M:实例化基础模型类
- I:获取参数
- L:设置或者获取当前语言
- C:设置或获取,保存配置
十、怎么定义接口的
接口分为两种:一种是数据型接口,一种是应用型接口。
数据型接口:是比抽象类更抽象的某种“结构”——它其实不是类,但是跟类一样的某种语法结构,是一种结构规范,规范我们类要以什么格式进行定义,一般用于团队比较大,分支比较多的情况下使用。
应用型接口: API(application interface) 数据对外访问的一个入口
我主要是参与的APP开发中接口的编写,客户端需要什么样的数据,我们就给他们提供相应的数据,数据以json/xml的格式返回,并且配以相应的接口文档。
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。之前说过,PHP方面的技术点很多,也是因为太多了,实在是写不过来,写过来了大家也不会看的太多,所以我这里把它整理成了PDF和文档,如果有需要的可以
更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的 PHP技术交流群
本文地址:https://blog.csdn.net/weixin_49163826/article/details/108868471
上一篇: 打造更好用的 EF 自动审计