版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP经典面试题及详细答案(实战完整版)一、PHP基础语法高频面试题1、简述PHP中echo、print、print_r、var_dump的区别这四个都是PHP常用输出语句,核心区别在返回值、输出类型、调试场景,日常开发区分使用即可:echo:语言结构,不是函数,无返回值,支持同时输出多个字符串,执行效率最高,只能输出字符串、数字等基础类型,开发中常规输出首选。print:本质是函数,有返回值(固定返回1),一次只能输出一个值,效率比echo低,日常极少使用。print_r:专门用于打印复合类型(数组、对象),只会输出变量值,不会展示数据类型,返回值可以被接收,适合简单打印数组结构。var_dump:调试专用,会同时输出变量的数据类型、值、长度,无返回值,能精准查看null、布尔、空数组等特殊值,是开发调试最常用的打印方式。2、PHP中常量和变量的区别?定义方式有哪些核心区别:变量值可随时修改、销毁,常量一旦定义无法修改、全局有效,脚本运行全程存在。定义方式:变量:使用$变量名定义,区分大小写,作用域灵活(局部、全局、静态)。常量:两种定义方式
1)define('NAME','值'):函数式定义,全局有效,大小写可自定义控制,支持在代码任意位置定义;
2)constNAME='值':语法式定义,多用于类常量,编译阶段加载,效率更高,必须在顶层作用域使用,不能在函数、循环内定义。
补充:常量无需$符号,默认全局可用,仅存储标量数据(字符串、数字、布尔、null)。3、PHP数据类型有哪些?标量与复合类型区别PHP一共8种原生数据类型,分为四大类:标量类型(4种):字符串、整型、浮点型、布尔型,存储单一值,是最基础的数据类型。复合类型(2种):数组、对象,可存储多个不同类型的数据,是开发核心数据结构。特殊类型(2种):NULL、资源(resource,如数据库连接、文件句柄)。伪类型:mixed、number、callback,多用于函数参数注释,非实际存储类型。核心区别:标量类型只能存单个数值,占用内存固定;复合类型可批量存储多类型数据,支持嵌套、迭代,业务开发使用率最高。4、isset()、empty()、is_null()的区别与使用场景三个函数都是判断变量状态,面试高频考点,极易混淆,直接记实战判断规则:isset():判断变量是否存在且不为null。变量定义了、值不为null则返回true,0、空字符串、空数组都会返回true。多用于判断参数是否传递、变量是否初始化。empty():判断变量是否为空值。0、''、[]、null、false、'0'都会判定为空,返回true。适合判断表单空提交、空数据场景。is_null():精准判断变量值严格等于null,只有变量未定义、值为null时返回true,其余所有情况均为false。实战技巧:日常参数校验优先用isset判断是否传参,用empty判断参数是否有效。5、PHP中==和===的区别==弱等于:只对比数值,会自动进行类型转换。比如0==''、0==false、'123'==123都会返回true。===强等于:同时对比数据类型+数值,不做类型转换,必须完全一致才返回true。开发规范:所有条件判断优先使用强等于,避免隐式类型转换导致的逻辑bug,这是PHP开发的基础规范。二、PHP核心进阶面试题1、PHP变量作用域有哪些?global和static用法PHP变量作用域分为三种:局部作用域、全局作用域、静态作用域。局部变量:定义在函数内部,仅函数内有效,函数执行结束自动销毁。全局变量:定义在函数外部,全局页面有效,函数内无法直接调用,需要通过global关键字或$GLOBALS超全局变量调用。静态变量static:定义在函数内部,仅初始化一次,函数执行结束不会销毁,下次调用函数会保留上一次的值。常用于统计函数调用次数、缓存临时数据。注意:global仅在函数内使用,用于引入全局变量;static不污染全局作用域,仅在当前函数内持久化数据。2、PHP超全局变量有哪些?常用场景超全局变量是系统预定义、全局任意位置均可调用的变量,无需声明,一共9个,日常常用6个:$_GET:获取URL地址栏传参,明文传输,数据长度有限制。$_POST:获取表单POST提交数据,隐式传输,适合大量、敏感数据。$_REQUEST:合并获取GET/POST/COOKIE数据,优先级受配置影响,开发中不推荐使用,容易出现参数覆盖问题。$_SERVER:获取服务器信息、请求头、请求方式、访问IP、脚本路径等。$_COOKIE:获取客户端Cookie数据,存储在浏览器,可篡改。$_SESSION:获取服务端会话数据,安全、不可被客户端篡改。其余3个:$_FILES(上传文件信息)、$_ENV(环境变量)、$GLOBALS(全局变量集合)。3、Session和Cookie的区别、原理及使用场景这是面试必考题,核心从存储位置、安全性、生命周期、大小区分:存储位置:Cookie存储在客户端浏览器;Session存储在服务器端。安全性:Cookie可被用户查看、篡改、伪造,安全性低;Session数据在服务端,客户端仅存储SessionID,安全性高。存储大小:Cookie单条限制4KB左右;Session无严格大小限制。生命周期:Cookie可设置永久有效期;Session默认浏览器关闭失效,也可手动设置过期时间。依赖关系:Session默认依赖Cookie存储SessionID,用户关闭Cookie后,可通过URL传参维持Session。使用场景:Cookie用于记住登录状态、站点偏好设置;Session用于用户登录态保持、临时私密数据存储。4、PHP垃圾回收机制原理PHP是自动垃圾回收语言,核心回收循环引用的变量内存,解决早期版本内存泄漏问题:普通变量:执行结束、作用域结束后,引用计数归零,立即释放内存。循环引用变量:两个变量互相引用,引用计数无法归零,传统机制无法释放。PHP5.3+引入垃圾回收机制,定期扫描、标记、清理这类无效循环引用内存。触发条件:当垃圾缓存池达到阈值,或脚本执行结束,自动触发回收,也可手动调用gc_collect_cycles()主动回收。5、PHP传值赋值和传址(引用)赋值的区别传值赋值(默认):复制一份变量值,两个变量独立,修改其中一个不会影响另一个,占用双倍内存。传址赋值(&):两个变量指向同一个内存地址,本质是同一个数据,任意一个变量修改,另一个同步变化,节省内存,适合大数据量操作。注意:数组、对象默认传引用;普通变量需要手动加&实现引用赋值,开发中慎用,容易出现数据错乱问题。三、面向对象OOP面试题1、面向对象三大特性及实际开发应用封装、继承、多态,是OOP核心,所有框架、类库均基于此实现:封装:将属性和方法封装到类中,通过访问修饰符控制权限,隐藏内部实现细节,只暴露对外接口。
应用:设置私有属性,通过get/set方法操作数据,防止数据被随意篡改。继承:子类继承父类的属性和方法,代码复用,减少冗余。
应用:项目基类封装通用登录、分页、数据库操作,所有业务类继承基类。多态:同一个方法,不同子类实现不同逻辑,分为重写和重载(PHP仅支持重写)。
应用:统一支付接口,微信支付、支付宝支付子类重写支付方法,适配不同支付场景。2、PHP访问修饰符public、protected、private区别public(公共):公开权限,类内部、子类、外部均可访问。protected(受保护):仅类内部、子类可以访问,外部无法调用。多用于通用继承方法。private(私有):仅当前类内部可访问,子类、外部均无法访问。多用于私有属性、内部工具方法。3、抽象类和接口的区别、使用场景二者都是用于规范代码、定义约束,核心区别在实现、继承、属性支持:抽象类abstract:
1)可以包含普通方法、抽象方法、成员属性、常量;
2)子类只能单继承一个抽象类;
3)可以有构造方法;
4)适合代码复用+规范约束,封装通用逻辑。
接口interface:
1)只能有常量和抽象方法(PHP7前无实现方法,PHP8支持默认实现);
2)类可以多实现多个接口;
3)无构造方法、无成员变量;
4)适合纯规范约束,统一不同类的行为标准。
4、final、static、const关键字作用final:修饰类、方法。final类无法被继承,final方法无法被子类重写,用于锁定核心逻辑,防止被篡改。static:修饰属性、方法。静态属性/方法属于类本身,不属于实例对象,无需new实例,可直接类名调用,全局共享数据。const:定义类常量,值不可修改,必须初始化,全局共享,无需实例调用。5、PHP构造方法、析构方法作用及触发时机构造方法__construct():实例化对象时自动触发,用于初始化数据、连接数据库、赋值属性,支持传参。析构方法__destruct():对象销毁、脚本执行结束时自动触发,用于收尾操作,比如关闭文件、断开数据库连接、释放资源。四、MySQL数据库面试题(PHP配套高频)1、MySQL索引类型、优缺点、使用场景常用索引:主键索引、唯一索引、普通索引、联合索引、全文索引优点:大幅提升查询速度,减少数据库扫描行数。缺点:占用磁盘空间,会降低增删改效率(索引需要同步更新)。使用原则:查询多、更新少的字段建索引;更新频繁、数据量小、区分度低的字段不建索引。联合索引最左匹配原则:建立(a,b,c)联合索引,查询条件包含a、a+b、a+b+c可命中索引,仅b、c、b+c无法命中。2、SQL注入原理及PHP防护方案原理:用户恶意提交SQL语句,程序未做过滤,直接拼接SQL执行,导致数据泄露、篡改、删除。防护手段(实战常用):使用PDO、mysqli预处理语句+参数绑定(最核心、最有效);过滤、转义用户输入特殊字符;禁止拼接原生SQL,尽量使用框架ORM;数据库账号最小权限配置,禁止root账号对接项目。3、MySQL事务四大特性ACID、事务隔离级别ACID四大特性:原子性:事务要么全部执行成功,要么全部回滚;一致性:事务前后数据状态合法、完整;隔离性:多个事务之间互不干扰;持久性:事务提交后,数据永久保存,不会丢失。四个隔离级别(MySQL默认可重复读):读未提交、读已提交、可重复读、串行化。五、PHP安全与实战问题1、常见PHP安全漏洞及防护SQL注入:预处理绑定参数、过滤输入、ORM操作;XSS跨站脚本攻击:输出数据htmlspecialchars转义、设置CSP头、过滤script标签;CSRF跨站请求伪造:表单添加Token验证、校验请求来源Referer;文件上传漏洞:校验文件后缀、MIME类型、重命名文件、存储至非web目录;代码执行漏洞:禁止使用eval、exec等危险函数,过滤用户可控参数。2、PHP文件上传流程及漏洞规避标准上传流程:接收上传文件→校验文件大小、后缀、类型→生成唯一文件名→移动文件至指定目录→返回文件路径。漏洞规避要点:禁止用户自定义文件名,防止后缀绕过;同时校验后缀和文件真实类型,不要仅依赖前端校验;上传目录禁止执行脚本权限;图片文件可二次压缩验证,防止图片木马。3、GET和POST请求的区别传参方式:GET参数拼接在URL,POST参数在请求体;数据大小:GET有长度限制,POST无限制;安全性:GET明文可见,不安全;POST相对隐蔽;缓存:GET可被浏览器缓存、收藏;POST不会缓存;使用场景:查询、无数据修改用GET;提交数据、新增修改用POST。六、框架与工程化高频题(Laravel/ThinkPHP通用)1、MVC架构原理及各层作用MVC是web项目主流架构,实现代码分层、解耦:M(Model模型):负责数据层,处理数据库增删改查、数据校验、业务数据逻辑;V(View视图):负责展示层,渲染页面、展示数据,无业务逻辑;C(Controller控制器):负责调度层,接收请求、调用模型、渲染视图,处理请求逻辑。2、Laravel/TP框架中ORM是什么?优缺点ORM即对象关系映射,将数据库表映射为类,行数据映射为对象,无需写原生SQL即可操作数据库。优点:代码简洁、开发效率高、防SQL注入、适配多数据库;缺点:复杂查询性能不如原生SQL,部分复杂关联查询书写繁琐。3、路由伪静态作用隐藏真实脚本地址,提升站点安全性;URL简洁美观,利于搜索引擎SEO优化;统一请求规则,方便项目路由管理。七、性能优化面试题1、PHP项目常见性能优化方案代码层面:减少循环内数据库查询、避免重复计算、合理使用静态变量、销毁无用变量;数据库层面:合理建索引、避免select*、分页查询、读写分离、分库分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 48188.2-2026光伏系统用额定电压1.5 kV直流电缆第2部分:铝合金导体电缆
- 高级会计职称考试财务管理综合测试卷及答案
- 统计师资格考试统计咨询知识点巩固习题及答案
- 2026年公共卫生管理类资格考试环境卫生学专项习题及答案
- 2026年护理心理学模拟试题及答案
- 2026年电子商务师考试电子商务物流与供应链管理习题集及答案
- 江苏省护士资格考试感染控制护理学知识试题及答案
- 公共卫生管理资格考试流行病学备考习题及答案
- 安全工程师考试安全生产管理专项训练题库及答案
- 天津市心理咨询师考试心理咨询与治疗伦理备考习题及答案
- 2025年10月 手机媒体概论(14237)自考真题
- GB/T 48023-2026数据中心冷板式液冷系统技术规范
- 孕产妇危重症紧急救治专家共识(2026年版)
- 2025年新疆公路二级造价师计量与计价实务真题及参考答案
- 2026年4月自考13181数据结构试题试题及答案
- 2026年4月自考13000英语(专升本)试题及答案
- 食品企业食品安全新员工入职培训全规划
- 口腔器械规范打包流程与标准
- DB62T 3161-2019 高原旱区园林绿化养护及验收标准
- 矩阵理论 课件 第4章第5节凯莱-哈密顿定理与矩阵的最小多项式
- 幼儿园安全家委会
评论
0/150
提交评论