版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP面试题及详细答案(企业真实版)一、PHP基础核心面试题1、简述PHP中echo、print、print_r、var_dump的区别?参考答案:这四个都是PHP常用输出语句,核心区别体现在返回值、输出类型、调试适用性上:1.echo:语法结构,无返回值,可连续输出多个变量/字符串,执行效率最高,日常页面输出首选,无法输出数组、对象。2.print:函数式语法,有返回值(固定返回1),只能输出单个字符串/变量,效率略低于echo,同样不支持数组、对象输出。3.print_r:专门用于调试,支持输出字符串、数字、数组,可格式化展示数组结构,无返回值(可通过参数设置获取返回内容),无法清晰展示对象、数据类型。4.var_dump:专业调试函数,可输出所有类型数据,包含数据类型、值、长度,支持数组、对象、空值、布尔值等所有变量,是开发调试最常用的语句。2、PHP中null、空字符串、0、false、空数组的区别,以及empty和isset的区别?参考答案:一、各类空值区别1.null:变量未定义、被手动赋值为null、函数无返回值,是真正意义的空,无任何数据。2.空字符串'':有数据类型(字符串),长度为0,是合法变量值。3.0:整型数字0,是有效数值,在弱类型判断中等同于假。4.false:布尔假值,专门的逻辑判断空值。5.空数组[]:数组类型,无元素,变量合法存在。二、empty和isset核心区别1.isset():检测变量是否存在且不为null。变量定义过、哪怕值为空字符串、0、false、空数组,都会返回true;只有变量未定义或值为null返回false。2.empty():检测变量是否为空、为假。只要值为null、''、0、false、[]、'0',都会返回true;变量未定义时不会报错,直接返回true。实战总结:判断变量是否存在用isset,判断变量是否有有效内容用empty。3、PHP弱类型的优缺点及开发规避问题的方式?参考答案:优点:1.开发效率高,无需手动定义变量类型,变量可随意转换类型,代码简洁;2.适配Web开发场景,表单提交、URL传参默认都是字符串,弱类型可自动适配转换,无需手动强转。缺点:1.容易出现隐形类型转换BUG,比如0=='abc'、null==''、'0'==false结果为true;2.代码规范性差,多人协作时容易出现变量类型混乱的问题;3.复杂项目容错率低,隐蔽BUG难以排查。规避方案:1.严格使用===、!==全等判断,禁止使用==、!=弱判断;2.关键数值、参数手动强转类型(intval、strval、floatval);3.PHP7+开启严格模式,文件顶部声明declare(strict_types=1)。4、PHP中include、require、include_once、require_once的区别?参考答案:1.include:引入文件,文件不存在或出错时,抛出警告错误(E_WARNING),程序继续执行,适合引入非核心模板、静态文件。2.require:引入核心文件,文件不存在或出错时,抛出致命错误(E_ERROR),程序终止执行,适合引入配置文件、核心函数类。3.include_once:在include基础上增加去重功能,同一个文件只引入一次,避免函数、类重复定义报错。4.require_once:在require基础上增加去重功能,项目中最常用,兼顾安全性和去重性。实战建议:核心依赖文件用require_once,前端模板碎片用include。二、PHP面向对象核心面试题1、简述PHP面向对象的三大特性及实际应用?参考答案:1.封装将类的属性和方法私有化,通过公有方法对外提供访问接口,隐藏内部实现细节,防止外部随意篡改核心数据。应用:将数据库账号密码、核心校验逻辑私有化,通过get/set方法操作属性。2.继承子类继承父类的属性和方法,实现代码复用,减少重复代码,支持单一继承(PHP不支持多继承,可通过接口实现)。应用:定义基础控制器父类,封装登录校验、权限判断,所有业务控制器继承父类。3.多态同一方法在不同子类中有不同实现,依托继承和方法重写实现,提高代码扩展性。应用:支付接口场景,父类定义统一支付方法,微信支付、支付宝支付子类分别重写支付逻辑。2、PHP中public、protected、private三种访问修饰符的区别?参考答案:1.public(公有):默认权限,类内部、类外部、子类都可以访问,所有场景通用。2.protected(受保护):仅类内部、子类可以访问,类外部无法调用,常用于需要继承复用、不对外暴露的属性方法。3.private(私有):权限最小,仅当前类内部可以访问,子类、外部都无法调用,用于绝对私有、无需复用的核心逻辑。3、构造方法、析构方法的作用及触发时机?参考答案:1.构造方法__construct()触发时机:实例化类对象时自动触发,无需手动调用。作用:初始化对象属性、连接数据库、加载配置、参数赋值,是对象创建后的初始化入口。2.析构方法__destruct()触发时机:脚本执行结束、对象被销毁时自动触发。作用:释放资源,比如关闭数据库连接、关闭文件指针、清空缓存,避免资源占用。补充:PHP会自动回收资源,常规项目很少手动使用析构方法,大并发项目可手动释放资源优化性能。4、静态属性和静态方法的特点,以及和普通属性方法的区别?参考答案:核心特点:静态属性、方法属于类本身,不属于对象,所有对象共享同一份静态资源。区别:1.调用方式:静态资源通过类名::静态属性/方法调用,无需实例化对象;普通资源必须实例化对象后调用。2.内存占用:静态资源全局只加载一次,常驻内存;普通对象每次实例化都会重新开辟内存。3.调用限制:静态方法中不能使用$this,只能使用self、static;普通方法可随意调用静态和普通资源。4.生命周期:静态资源脚本执行全程存在;普通对象脚本执行后自动销毁。应用场景:通用工具方法、计数器、全局配置使用静态;独立业务逻辑、需要对象属性隔离的用普通方法。三、PHP进阶核心面试题1、PHP中SESSION和COOKIE的区别,以及SESSION的工作原理?参考答案:一、SESSION和COOKIE核心区别1.存储位置:COOKIE存储在客户端浏览器;SESSION存储在服务端服务器。2.安全性:COOKIE可被篡改、窃取,安全性低;SESSION数据在服务端,无法被客户端修改,安全性高。3.大小限制:COOKIE有大小限制(单条4KB左右);SESSION无严格大小限制。4.生命周期:COOKIE可设置永久有效期;SESSION默认浏览器关闭即失效。5.依赖关系:SESSION默认依赖COOKIE存储session_id,COOKIE禁用时可通过URL传参实现SESSION复用。二、SESSION工作原理1.客户端首次访问服务端,PHP开启SESSION后,服务端生成唯一session_id;2.服务端将session_id存入客户端COOKIE,同时在服务端生成对应session文件,存储用户会话数据;3.客户端下次访问时,自动携带COOKIE中的session_id;4.服务端根据session_id匹配对应的session文件,读取用户会话数据,实现用户状态保持。2、PHP超全局变量有哪些,各自作用?参考答案:超全局变量在全局、函数、类方法中均可直接使用,无需global声明,常用9个:1.$_GET:获取URL地址栏、GET方式提交的参数;2.$_POST:获取POST表单、接口POST请求参数;3.$_REQUEST:整合GET、POST、COOKIE参数,优先级:COOKIE>POST>GET,开发不推荐使用,参数混乱易出BUG;4.$_SERVER:获取服务器信息、请求头、请求方式、客户端IP、脚本路径等;5.$_COOKIE:读取客户端Cookie数据;6.$_SESSION:操作服务端会话数据;7.$_FILES:获取文件上传的文件信息、大小、类型、临时路径;8.$_ENV:获取服务器环境变量;9.$GLOBALS:获取所有全局变量,可通过键名调用任意全局变量。3、PHP如何防止SQL注入?参考答案:SQL注入核心原因是直接拼接用户输入参数到SQL语句,解决方案从优先级从高到低排序:1.使用预处理语句(PDO/MySQLi占位符):最优方案,参数和SQL语句分离,服务端预编译SQL,用户参数仅作为值传入,无法篡改语句结构,彻底杜绝注入;2.参数过滤与类型强制转换:数字参数强制转int,字符串参数过滤特殊字符(单引号、双引号、#、%等);3.开启魔术引号(不推荐):旧版本方案,新版本已废弃,兼容性差;4.数据库权限最小化:项目数据库账号仅授予查询、增改权限,禁止删除、修改表结构权限,降低注入危害;5.禁止直接拼接SQL:所有动态参数统一使用绑定参数方式。4、PHP中exit、break、continue、return的区别?参考答案:1.exit()/die():终止整个脚本执行,后续所有代码不再执行,可输出终止提示信息;2.break:终止当前循环或switch语句,跳出循环体,继续执行循环外代码,支持层级跳出;3.continue:跳过本次循环剩余代码,直接进入下一次循环,不终止循环;4.return:终止当前函数/方法执行,返回指定值,仅作用于函数、类方法,不影响全局脚本执行;在脚本最外层使用可终止脚本。四、PHP实战场景面试题1、简述PHP文件上传的流程及防止文件上传漏洞的方案?参考答案:文件上传流程:1.前端设置form表单enctype="multipart/form-data",提交文件数据;2.后端通过$_FILES获取文件临时路径、名称、大小、类型;3.校验文件大小、后缀、MIME类型,合法性校验;4.将临时文件移动到服务器正式目录,生成新文件名,完成上传。防上传漏洞方案:1.严格校验后缀:只允许指定白名单后缀(jpg、png、gif等),禁止php、exe、asp等脚本后缀;2.校验文件真实MIME类型:不止校验前端传递的类型,通过文件头校验真实文件类型,防止后缀伪装;3.重命名文件:上传文件统一生成时间戳+随机字符串文件名,保留原后缀,防止脚本文件覆盖执行;4.隔离存储目录:上传文件目录禁止执行脚本权限,单独存放,不解析PHP脚本;5.限制文件大小:设置最大上传大小,防止超大文件占用服务器资源。2、PHP内存溢出的常见原因及解决办法?参考答案:常见原因:1.一次性查询数据库大量数据,未分页,数组存储海量数据占用内存;2.循环内重复创建对象、定义大数组,未及时销毁变量;3.递归调用层级过深,堆栈溢出;4.读取超大文件一次性加载到内存。解决办法:1.数据库查询强制分页、分批次查询,避免一次性读取全量数据;2.循环结束后手动销毁无用变量(unset),释放内存;3.超大文件采用逐行读取方式,不一次性加载;4.优化递归逻辑,改用循环替代深层递归;5.合理调整php.ini内存限制(memory_limit),优先代码优化,不盲目调大限制。3、GET和POST请求的区别及使用场景?参考答案:1.参数位置:GET参数拼接在URL地址栏;POST参数放在请求体中。2.数据大小:GET有URL长度限制,无法传输大数据;POST无大小限制,支持大文件、长参数。3.安全性:GET参数暴露在地址栏,可被记录、收藏,安全性低;POST参数隐藏,相对安全。4.缓存特性:GET请求会被浏览器缓存;POST请求默认不缓存。5.书签支持:GET可保存为书签;POST无法保存书签。使用场景:GET:查询数据、列表筛选、详情页、公开无敏感数据的请求;POST:提交表单、登录注册、上传文件、修改/新增数据、传输敏感信息。五、PHP易错笔试简答题1、PHP中如何定义常量,常量和变量的区别?参考答案:定义方式:传统define('NAME','值');PHP7+支持constNAME='值'(类内首选)。区别:常量一旦定义无法修改、销毁;变量可随时赋值、修改、销毁;常量全局通用,无作用域限制;变量有局部、全局作用域区分。2、PHP中数组遍历
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年其他基础化学原料制造行业投资战略研究报告及未来五至十年跨界融合与颠覆创新
- 信丰县新龙学校招聘教官【12人】考试备考试题及答案解析
- 德阳经济技术开发区第四幼儿园2026年秋期面向社会公开招聘“两自一包”非在编幼儿教师招聘(2人)考试备考题库及答案解析
- 2026年自行车制造行业商业模式研究报告及未来五至十年政策红利与合规路径
- 2026年煤气供应行业洞察报告及未来五至十年发展趋势报告
- 珠宝营销活动策划方案模板(3篇)
- 生产班组应急预案演练(3篇)
- 电源切换箱应急预案(3篇)
- 砌墙施工方案14天(3篇)
- 2026年平高集团威海高压电器有限公司社会招聘考试模拟试题及答案解析
- 广东省深圳市宝安区宝中集团期中联考2025-2026学年上学期期中考试八年级地理试题(含答案)
- 溶洞风险点位销号管理办法
- 4.1.1 单项式-2026-2027学年人教版数学七年级上册
- 2027年新高考语文备考现代文阅读训练之五:新题型训练(含答案)
- 智算中心高速互联网络架构设计方案
- 19《航天员写给孩子的信》课件
- 2026中食金安(石家庄)供应链科技有限责任公司公开招聘工作人员28名笔试备考试题及答案解析
- 强制性产品认证检查员考试考题模拟题及答案
- 部编版五年级上册《19.航天员写给孩子的信》教学设计
- 4.7.4 选择健康的生活方式课件 (共24张+内嵌视频2个) 人教版(2024)八年级上册
- 2026年春广东省中职“3+证书”高职高考语文真题(含解析)
评论
0/150
提交评论