10道常见PHP面试题精选【附答案】

作者: 在线考试系统 2022-07-12 16:42:31

 

你是否正在寻找最新的php面试题,并且也在寻找一些常见的关于php面试题的答案?本文为大家汇总了10个被提问频率最高的PHP面试题,以及对应的回答,希望此次分享能帮到打算组织php笔试的公司筹备题目、让php开发工程师更好的应对下一次面试。

 

1、OOP具有三大特点

1)、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只 需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。

 

2)、继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。PHP只支持单继承,也就是说一个子类只能有一个父类。

 

3)、多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性。

 

 

2 请简述一下数据库的优化
数据库的优化可以从四个方面来优化:
1).从结构层: web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离
2).从储存层: 采用合适的存储引擎,采用三范式
3).从设计层: 采用分区分表,索引,表的字段采用合适的字段属性,适当的采用逆范式,开启mysql缓存
4).sql语句层:结果一样的情况下,采用效率高,速度快节省资源的sql语句执行

 

 

3 如何解决异常处理?

答: 抛出异常:使用try…catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会 抛出一个异常。

 

Catch代码块捕获异常,并创建一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。10道常见PHP面试题精选【附答案】

解决异常:使用set_error_handler函数获取异常(也可以使用try()和catch()函数),然后使用set_exception_handler()函数设置默认的异常处理程序,register_shutdown_function()函数来执行,执行机制是,php要把调入的函数调入到内存,当页面所有的php语句都执行完成时,再调用此函数。

 

 

4 接口安全方面是怎么处理的?

答:使用HTTP的POST方式,对固定参数+附加参数进行数字签名,使用的是md5加密。

比如:我想通过标题获取一个信息,在客户端使用 信息标题+日期+双方约定好的一个key通过md5加密生成一个签名(sign)。

然后作为参数传递到服务器端,服务器端使用同样的方法进行校验,如何接受过来的sign和我们通过算法算的值相同,证明是一个正常的接口请求,我们才会返回相应的接口数据。

 

 

5 什么情况下使用缓存?
答:当用户第一次访问应用系统的时候,因为还没有登录,会被引导到认证系统中进行登录;

 

根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把 ticket送到认证系统进行校验,检查ticket的合法性。

 

如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

实现主要技术点:
1、两个站点共用一个数据验证系统
2、主要通过跨域请求的方式来实现验证及session处理。

 

 

6、支付宝、微信支付宝流程怎么实现的

首先要有一个支付宝账号,接下来向支付宝申请在线支付业务,签署协议。协议生效后有支付宝一方会给网站方一个合作伙伴ID,和安全校验码,有了这两样东西就可以按照支付宝接口文档开发支付宝接口了,中间主要涉及到一个安全问题。10道常见PHP面试题精选【附答案】

 

整个流程是这样的:我们的网站通过post传递相应的参数(如订单总金额,订单号)到支付页面,支付页面把一系列的参数经过处理,以post的方式提交给支付宝服务器,支付宝服务器进行验证,并对接收的数据进行处理,把处理后的结果返回给我们网站设置的异步和同步回调地址,通过相应的返回参数,来处理相应的业务逻辑,比如返回的参数代表支付成功,更改订单状态

 

微信支付流程怎么实现

我们的网站通过post传递相应的参数(如订单总金额,订单号)到支付页面,支付页面把一系列的参数经过处理,以post的方式提交给微信服务器,微信服务器进行验证,并对接收的数据进行处理,把处理后的结果返回给我们网站设置的异步和同步回调地址,通过相应的返回参数,来处理相应的业务逻辑,比如返回的参数代表支付成功,更改订单状态。

 

 

7、mysql读写分离如何实现?

当我们的数据量很大时,数据库服务器的压力变大,这时候我们需要从架构方面来解决这一问题,在一个网站中读的操作很多,写的操作很少,这时候我们需要配置读写分离,把读操作和写操作分离出来,最大程度的利用好数据库服务器。

 

读写分离的实现原理就是在执行SQL语句的时候,判断到底是读操作还是写操作,把读的操作转向到读服务器上(从服务器,一般是多台),写的操作转到写的服务器上(主服务器,一般是一台,视数据量来看)。当然为了保证多台数据库数据的一致性,需要主从复制。

 

主从复制的实现原理是:mysql中有一种日志,叫做bin日志(二进制日志),会记录下所有修改过数据库的sql语句。

 

主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后从服务器读取这个bin日志,把该日志的内容保存到自己中继日志里面,从服务器再把中继日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。

 

 

8、mysql存储引擎

常用的主要分为两种,一种是innodb,一种是myisam,

两者的主要区别是

①myisam不支持事务处理,而innoDB支持事务处理。

②myisam 不支持外键,innoDB支持外键。

③myisam支持全文检索,而innoDB在MySQL5.6版本之后才支持全文检索

④数据的存储形式不一样,mysiam表存放在三个文件:结构、索引、数据,innoDB存储把结构存储为一个文件,索引和数据存储为一个文件。

⑤myisam在查询和增加数据性能更优于innoDB,innoDB在批量删除方面性能较高。

⑥myisam支持表锁,而innoDB支持行锁

 

 

9、唯一索引和主键索引的区别

1)主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

2)主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

3)唯一性索引列允许空值,而主键列不允许为空值。

4)主键列在创建时,已经默认为空值 + 唯一索引了。

5)主键可以被其他表引用为外键,而唯一索引不能。

6)一个表最多只能创建一个主键,但可以创建多个唯一索引。

7)主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

8)在 RBO 模式下,主键的执行计划优先级要高于唯一索引。两者可以提高查询的速度。

 

 

10 请介绍一下laravel框架?
答: laravel框架的设计思想比较先进,非常适合应用各种开发模式。laravel框架最大的特点和优秀之处就是集合了php比较新的特点,以及各种各样的设计模式,Ioc模式,依赖注入等。10道常见PHP面试题精选【附答案】

laravel有那些特点?
回答一:
1.强大的rest router:用简单的回调函数就可以调用,快速绑定controller和router
2.artisan:命令行工具,很多手动的工作都自动化
3.可继承的模板,简化view的开发和管理
4.blade模板:渲染速度更快
5.ORM操作数据库
6.migration:管理数据库和版本控制
7.测试功能也很强大
8.composer也是亮点
9.laravel框架引入了门面,依赖注入,Ioc模式,以及各种各样的设计模式等.

 

以上就是小编为大家整理的10道常见PHP面试题精选【附答案】了。如果你正打算组织一场培训考试,可以来轻速云在线考试系统官网注册账号,免费体验一场在线招聘考试。

标签: 在线考试系统
10道常见PHP面试题精选【附答案】
2022-07-12 16:42:31

 

你是否正在寻找最新的php面试题,并且也在寻找一些常见的关于php面试题的答案?本文为大家汇总了10个被提问频率最高的PHP面试题,以及对应的回答,希望此次分享能帮到打算组织php笔试的公司筹备题目、让php开发工程师更好的应对下一次面试。

 

1、OOP具有三大特点

1)、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只 需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。

 

2)、继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。PHP只支持单继承,也就是说一个子类只能有一个父类。

 

3)、多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性。

 

 

2 请简述一下数据库的优化
数据库的优化可以从四个方面来优化:
1).从结构层: web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离
2).从储存层: 采用合适的存储引擎,采用三范式
3).从设计层: 采用分区分表,索引,表的字段采用合适的字段属性,适当的采用逆范式,开启mysql缓存
4).sql语句层:结果一样的情况下,采用效率高,速度快节省资源的sql语句执行

 

 

3 如何解决异常处理?

答: 抛出异常:使用try…catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会 抛出一个异常。

 

Catch代码块捕获异常,并创建一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。10道常见PHP面试题精选【附答案】

解决异常:使用set_error_handler函数获取异常(也可以使用try()和catch()函数),然后使用set_exception_handler()函数设置默认的异常处理程序,register_shutdown_function()函数来执行,执行机制是,php要把调入的函数调入到内存,当页面所有的php语句都执行完成时,再调用此函数。

 

 

4 接口安全方面是怎么处理的?

答:使用HTTP的POST方式,对固定参数+附加参数进行数字签名,使用的是md5加密。

比如:我想通过标题获取一个信息,在客户端使用 信息标题+日期+双方约定好的一个key通过md5加密生成一个签名(sign)。

然后作为参数传递到服务器端,服务器端使用同样的方法进行校验,如何接受过来的sign和我们通过算法算的值相同,证明是一个正常的接口请求,我们才会返回相应的接口数据。

 

 

5 什么情况下使用缓存?
答:当用户第一次访问应用系统的时候,因为还没有登录,会被引导到认证系统中进行登录;

 

根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把 ticket送到认证系统进行校验,检查ticket的合法性。

 

如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

实现主要技术点:
1、两个站点共用一个数据验证系统
2、主要通过跨域请求的方式来实现验证及session处理。

 

 

6、支付宝、微信支付宝流程怎么实现的

首先要有一个支付宝账号,接下来向支付宝申请在线支付业务,签署协议。协议生效后有支付宝一方会给网站方一个合作伙伴ID,和安全校验码,有了这两样东西就可以按照支付宝接口文档开发支付宝接口了,中间主要涉及到一个安全问题。10道常见PHP面试题精选【附答案】

 

整个流程是这样的:我们的网站通过post传递相应的参数(如订单总金额,订单号)到支付页面,支付页面把一系列的参数经过处理,以post的方式提交给支付宝服务器,支付宝服务器进行验证,并对接收的数据进行处理,把处理后的结果返回给我们网站设置的异步和同步回调地址,通过相应的返回参数,来处理相应的业务逻辑,比如返回的参数代表支付成功,更改订单状态

 

微信支付流程怎么实现

我们的网站通过post传递相应的参数(如订单总金额,订单号)到支付页面,支付页面把一系列的参数经过处理,以post的方式提交给微信服务器,微信服务器进行验证,并对接收的数据进行处理,把处理后的结果返回给我们网站设置的异步和同步回调地址,通过相应的返回参数,来处理相应的业务逻辑,比如返回的参数代表支付成功,更改订单状态。

 

 

7、mysql读写分离如何实现?

当我们的数据量很大时,数据库服务器的压力变大,这时候我们需要从架构方面来解决这一问题,在一个网站中读的操作很多,写的操作很少,这时候我们需要配置读写分离,把读操作和写操作分离出来,最大程度的利用好数据库服务器。

 

读写分离的实现原理就是在执行SQL语句的时候,判断到底是读操作还是写操作,把读的操作转向到读服务器上(从服务器,一般是多台),写的操作转到写的服务器上(主服务器,一般是一台,视数据量来看)。当然为了保证多台数据库数据的一致性,需要主从复制。

 

主从复制的实现原理是:mysql中有一种日志,叫做bin日志(二进制日志),会记录下所有修改过数据库的sql语句。

 

主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后从服务器读取这个bin日志,把该日志的内容保存到自己中继日志里面,从服务器再把中继日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。

 

 

8、mysql存储引擎

常用的主要分为两种,一种是innodb,一种是myisam,

两者的主要区别是

①myisam不支持事务处理,而innoDB支持事务处理。

②myisam 不支持外键,innoDB支持外键。

③myisam支持全文检索,而innoDB在MySQL5.6版本之后才支持全文检索

④数据的存储形式不一样,mysiam表存放在三个文件:结构、索引、数据,innoDB存储把结构存储为一个文件,索引和数据存储为一个文件。

⑤myisam在查询和增加数据性能更优于innoDB,innoDB在批量删除方面性能较高。

⑥myisam支持表锁,而innoDB支持行锁

 

 

9、唯一索引和主键索引的区别

1)主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

2)主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

3)唯一性索引列允许空值,而主键列不允许为空值。

4)主键列在创建时,已经默认为空值 + 唯一索引了。

5)主键可以被其他表引用为外键,而唯一索引不能。

6)一个表最多只能创建一个主键,但可以创建多个唯一索引。

7)主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

8)在 RBO 模式下,主键的执行计划优先级要高于唯一索引。两者可以提高查询的速度。

 

 

10 请介绍一下laravel框架?
答: laravel框架的设计思想比较先进,非常适合应用各种开发模式。laravel框架最大的特点和优秀之处就是集合了php比较新的特点,以及各种各样的设计模式,Ioc模式,依赖注入等。10道常见PHP面试题精选【附答案】

laravel有那些特点?
回答一:
1.强大的rest router:用简单的回调函数就可以调用,快速绑定controller和router
2.artisan:命令行工具,很多手动的工作都自动化
3.可继承的模板,简化view的开发和管理
4.blade模板:渲染速度更快
5.ORM操作数据库
6.migration:管理数据库和版本控制
7.测试功能也很强大
8.composer也是亮点
9.laravel框架引入了门面,依赖注入,Ioc模式,以及各种各样的设计模式等.

 

以上就是小编为大家整理的10道常见PHP面试题精选【附答案】了。如果你正打算组织一场培训考试,可以来轻速云在线考试系统官网注册账号,免费体验一场在线招聘考试。

标签:在线考试系统
众多企事业单位的信赖之选
36万+企事业单位的共同选择
查看更多合作案例
众多企事业单位的信赖之选
开始使用轻速云组织培训考试
四步组织一场考试答题,一键搭建企业培训平台
免费使用 免费使用 预约演示
咨询热线
400-886-8169
周一到周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1 轻速云科技提供专业的在线考试系统、在线培训系统
联系我们
客服热线客服热线:400-886-8169 | 周一至周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1
轻速云科技提供专业的在线考试系统、在线培训系统
在线咨询 400-886-8169