版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP后端面试题及详细答案(实战完整版)一、PHP基础核心面试题1、简述PHP中echo、print、print_r、var_dump的区别详细答案:echo:语言结构,无返回值,支持输出多个字符串,执行效率最高,只能输出字符串、数字等基础类型,无法打印数组、对象。日常业务输出首选。print:语言结构,有返回值(固定返回1),只能输出单个值,效率略低于echo,使用场景极少。print_r:专门用于打印复杂类型(数组、对象),输出格式简洁,无数据类型展示,仅展示值;可以接收返回值,可存入变量。var_dump:调试专用,会同时输出数据的类型、值、长度,支持所有变量类型,无法接收返回值,开发调试必备,生产环境禁止使用。2、PHP中常量和变量的区别?define和const的区别?详细答案:常量与变量核心区别:变量可随时赋值、修改、销毁;常量一旦定义,全局不可修改、不可销毁。变量有作用域限制;默认常量全局生效,跨函数、跨文件可直接调用。变量可存储所有数据类型;常量仅支持标量类型(字符串、数字、布尔、null)。define和const区别:const是语言结构,编译阶段加载,效率更高;define是函数,运行阶段加载。const支持类内常量定义,属于类成员;define只能定义全局常量。const不支持变量动态定义常量名;define可以通过变量动态定义。PHP7.3之前const不支持数组常量,define支持;高版本两者均支持数组常量。3、PHP传值赋值和传引用赋值的区别?&的作用详细答案:传值赋值(默认):新变量复制原变量的值,两个变量相互独立,修改其中一个,不会影响另一个。适合普通字符串、数字、数组使用。传引用赋值(&):新变量和原变量指向同一个内存地址,本质是同一个变量的别名,任意一个变量修改值,另一个会同步变化。日常开发中,引用赋值常用于函数参数修改原变量、大批量数据赋值节省内存,但滥用容易出现变量污染、数据异常问题。4、PHP超全局变量有哪些?各自作用?详细答案:超全局变量作用域覆盖全局,函数、类内部无需声明即可使用,常用9个:$_GET:接收URL地址栏、get请求传递的参数$_POST:接收post表单、接口post请求参数$_REQUEST:合并接收GET/POST/COOKIE参数,优先级COOKIE>POST>GET,业务中不推荐使用,参数混乱易出问题$_SERVER:获取服务器信息、请求头、请求方式、客户端IP、脚本路径等$_COOKIE:读取客户端Cookie数据$_SESSION:服务端会话存储,保存用户登录、临时数据$_FILES:接收文件上传的文件信息(名称、大小、临时路径、类型)$_ENV:读取服务器环境变量$GLOBALS:获取所有全局变量数组5、session和cookie的区别,以及session失效原理详细答案:核心区别:存储位置:Cookie存客户端浏览器,Session存服务端服务器安全性:Cookie可被篡改、窃取,安全性低;Session数据服务端存储,安全性更高大小限制:Cookie有大小限制(单条4KB左右);Session无严格大小限制生命周期:Cookie可设置永久有效;Session默认浏览器关闭即失效依赖关系:Session默认依赖Cookie存储SessionID,禁用Cookie后可通过URL传参维持Session失效原理:用户首次请求时,服务端生成唯一SessionID,将数据存入服务端文件/Redis,同时将SessionID写入客户端Cookie。后续请求携带ID匹配数据。当浏览器清除Cookie、服务端清理session文件、超过过期时间、手动销毁session时,ID匹配失败,会话失效。二、PHP面向对象面试题(高频)1、面向对象三大特性及实际业务应用详细答案:封装:将属性和方法封装到类中,通过访问修饰符(public/protected/private)控制权限,隐藏内部实现细节,仅对外暴露接口。
业务应用:封装数据库操作类、上传类、支付类,外部只需调用方法,无需关注内部逻辑。继承:子类继承父类的属性和方法,实现代码复用,减少重复开发。
业务应用:搭建基础控制器类,封装通用登录验证、返回格式,所有业务控制器继承基础类。多态:子类重写父类方法,同一个方法在不同子类中实现不同逻辑。
业务应用:支付接口(微信、支付宝)继承统一支付父类,重写支付、回调方法。2、三种访问修饰符public、protected、private的权限详细答案:public(公共):类内部、子类、外部均可访问,无权限限制protected(受保护):类内部、子类可访问,外部无法调用private(私有):仅当前类内部可访问,子类、外部均无法访问3、PHP常用魔术方法及使用场景详细答案:__construct():构造方法,实例化类时自动执行,用于初始化参数、连接数据库__destruct():析构方法,对象销毁时自动执行,用于关闭连接、释放资源__get():读取私有/受保护不存在属性时自动触发__set():赋值私有/受保护不存在属性时自动触发__isset():对私有属性使用isset()判断时触发__unset():对私有属性使用unset()销毁时触发__call():调用不存在的方法时自动触发,用于方法容错__toString():对象被当作字符串输出时触发,必须返回字符串4、接口和抽象类的区别详细答案:定义约束:抽象类可以有普通方法、属性、静态方法;接口只能有公共抽象方法(PHP7前无属性,PHP8支持常量)继承实现:类只能继承一个抽象类;一个类可以实现多个接口使用场景:抽象类用于代码复用,抽取通用逻辑;接口用于规范统一方法,统一不同类的调用规则修饰符:抽象类方法支持protected/public;接口方法只能是public三、MySQL数据库面试题(核心业务)1、InnoDB和MyISAM引擎的区别详细答案:事务支持:InnoDB支持事务、事务回滚、ACID特性;MyISAM不支持事务锁机制:InnoDB支持行级锁、表级锁,并发性能高;MyISAM只有表级锁,读写阻塞外键:InnoDB支持外键约束;MyISAM不支持崩溃恢复:InnoDB有日志机制,断电可恢复数据;MyISAM断电易数据损坏查询性能:MyISAM简单查询、全表扫描速度更快;InnoDB适合增删改频繁的业务索引缓存:InnoDB缓存索引和数据;MyISAM只缓存索引业务选型:绝大多数业务用InnoDB;静态数据、极少修改、只查不写的场景可用MyISAM。2、MySQL索引类型、失效场景详细答案:常用索引类型:主键索引、唯一索引、普通索引、联合索引、全文索引索引高频失效场景:where条件中对索引字段使用函数、运算(left()、+、-)隐式类型转换(字符串字段传数字、数字字段传字符串)使用!=、<>、notin、or(无全索引)、like%开头模糊查询联合索引不遵循最左前缀原则MySQL优化器判断全表扫描比索引更快,自动放弃索引3、什么是事务?事务四大特性ACID详细答案:事务是一组SQL语句的执行单元,要么全部执行成功,要么全部回滚,保证数据一致性。原子性(A):事务不可拆分,整体成功或整体失败一致性(C):事务执行前后,数据整体状态合法、约束有效隔离性(I):多个事务并发执行互不干扰,通过隔离级别控制持久性(D):事务提交成功后,数据永久保存,断电不丢失4、MySQL四种事务隔离级别及问题详细答案:读未提交:可读取未提交数据,存在脏读、不可重复读、幻读,基本不用读已提交(默认):只能读取已提交数据,解决脏读,存在不可重复读、幻读可重复读:同一事务多次读取结果一致,解决脏读、不可重复读,存在幻读(InnoDB默认级别)串行化:最高级别,事务串行执行,无并发问题,性能极低脏读:读取到其他事务未提交的脏数据;不可重复读:同一事务两次读取同一数据结果不同;幻读:同一事务两次查询,数据条数不一致。四、Redis缓存面试题(后端必备)1、Redis常用数据类型及业务场景详细答案:String字符串:缓存用户信息、接口数据、验证码、计数器、限流统计Hash哈希:存储结构化数据,如用户详情、商品信息,节省内存,支持单独字段更新List列表:有序队列、消息队列、评论列表、秒杀排队Set集合:去重场景,用户点赞、关注、共同好友、黑名单ZSet有序集合:排行榜、积分排名、延时任务、权重排序2、缓存穿透、缓存击穿、缓存雪崩解决方案详细答案:缓存穿透:查询数据库不存在的数据,直接绕过缓存查数据库
解决方案:接口参数校验、空数据缓存、布隆过滤器缓存击穿:热点key过期,瞬间大量请求打向数据库
解决方案:热点key永不过期、分布式锁、互斥锁缓存雪崩:大量key同时过期/Redis宕机,所有请求访问数据库
解决方案:过期时间加随机值、Redis集群高可用、多级缓存、服务熔断降级五、ThinkPHP/Laravel框架面试题(实战)1、TP框架MVC架构原理详细答案:M(Model模型):负责数据库交互,封装增删改查、数据验证、业务数据处理V(View视图):负责页面展示、模板渲染,返回前端页面或JSON数据C(Controller控制器):接收请求、调用模型、处理业务逻辑、返回响应,是请求调度核心整体流程:用户请求→路由解析→控制器→模型查询数据→视图渲染→返回前端。2、Laravel服务容器、依赖注入的作用详细答案:服务容器是Laravel的核心,用于统一管理类的实例化、依赖关系。依赖注入是容器的核心特性,无需手动new类,由容器自动注入所需依赖。作用:降低代码耦合度、方便单元测试、统一管理对象生命周期、代码更简洁易维护。六、PHP安全与性能优化面试题1、PHP常见安全漏洞及防护方案详细答案:SQL注入:用户输入拼接SQL导致数据库泄露
防护:使用PDO预处理、参数绑定、禁止拼接SQL、过滤特殊字符XSS跨站脚本攻击:注入JS代码窃取用户信息
防护:前端转义输出、后端过滤脚本标签、开启CSP、输入过滤CSRF跨站请求伪造:伪造用户请求操作业务
防护:开启令牌验证、校验请求来源、验证Referer文件上传漏洞:上传恶意脚本文件执行木马
防护:校验文件后缀、MIME类型、重命名文件、禁止上传可执行文件、存放非web目录2、PHP后端常用性能优化方案详细答案:代码层优化:减少循环嵌套、避免重复查询数据库、合理使用静态变量、销毁无用变量数据库优化:合理加索引、避免select*、分页查询、读写分离、分库分表缓存优化:使用Redis缓存热点数据、页面静态化、接口缓存服务优化:开启OPcache、调整PHP-FPM进程数、Nginx反向代理、CDN加速静态资源业务优化:耗时操作异步处理(队列)、接口限流、熔断降级七、经典手写代码面试题1、手写PHP单例模式详细答案(实战可用):php
<?php
//单例模式:保证类仅有一个实例,全局统一调用
classSingle
{
//私有静态实例
privatestatic$instance;
//私有构造,禁止外部new
privatefunction__construct(){}
//私有克隆,禁止克隆对象
privatefunction__clone(){}
//公有静态获取实例方法
publicstaticfunctiongetInstance()
{
if(!self::$instance){
self::$instance=newself();
}
returnself::$instance;
}
}
?>2、手写递归遍历文件夹所有文件详细答案:php
<?php
functionscanDir($path)
{
$files=[];
$handle=opendir($path);
while(($file=readdir($handle))!==false){
if($file=='.'||$file=='..')continue;
$fullPath=$path.'/'.$file;
if(is_dir($fullPath)){
//递归遍历子目录
$files[$file]=scanDir($fullPath);
}else{
$files[]=$file;
}
}
closedir($handle);
return$files;
}
?>八、服务与接口面试题1、GET和POST请求的区别详细答案:参数位置:GET参数拼接在URL地址栏;POST参数放在请求体中长度限制:GET有URL长度限制,传参有限;POST无严格长度限制缓存特性:GET请求可被浏览器缓存;POST默认不缓存安全性:GET参数暴露在地址栏,安全性差;POST相对安全书签保存:GET可保存书签;POST无法保存书签业务规范:查询数据用GET,新增、修改、提交数据用POST。2、接口跨域原因及PHP解决方案详细答案:跨域原因:浏览器同源策
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025~2026学年广东省茂名市高州市北师大版六年级上册阶段练习(三)数学试卷【附答案】
- 引水隧洞衬砌及防渗堵漏施工方案
- 2027届山东省青岛市黄岛十中学数学八年级第一学期期末教学质量检测模拟试题含解析
- 地下车库地坪起砂处理方案
- 泵站检修工安全操作规程
- 清洁工具使用安全操作规程
- 2025-2026学年湖北省老河口市初中数学七年级期末上册高分通关高频易错题(附答案)
- 2026年二级建筑师古建筑保护模拟考试题库及解析
- 2026年安全生产标准化知识应用测试试卷及答案
- 分化型甲状腺癌诊疗指南(2026版)
- 2026年保密培训考试题带答案(完整版)
- 中国邮政集团招聘考试历年真题
- 2026年一级造价师案例考试真题及答案
- JJF(石化)078-2023激光甲烷遥测仪校准规范
- 焦点解决技术
- 2025年中国互联网上网服务行业发展白皮书
- 铁道车辆构造与检修教学课件-单元六-车钩缓冲装置
- 抖音【服饰户外行业IP】山山而川-雪山篇招商方案
- 测绘安全生产事故报告及处置办法
- PICC导管继发异位案例分析
- 《烹饪化学》课件(共七章)
评论
0/150
提交评论