PHP初级面试题及详细答案(真实企业版)_第1页
PHP初级面试题及详细答案(真实企业版)_第2页
PHP初级面试题及详细答案(真实企业版)_第3页
PHP初级面试题及详细答案(真实企业版)_第4页
PHP初级面试题及详细答案(真实企业版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PHP初级面试题及详细答案(真实企业版)一、PHP基础语法篇(高频基础题)1、简述PHP的数据类型有哪些?答:PHP数据类型分为八大类型,包含四种标量类型、两种复合类型、两种特殊类型:1.标量类型(基础单一值):字符串(string)、整型(int)、浮点型(float)、布尔型(bool);2.复合类型(可存储多个数据):数组(array)、对象(object);3.特殊类型:空类型(null)、资源类型(resource)。补充:PHP是弱类型语言,变量无需提前定义类型,会根据赋值自动适配类型。2、PHP中echo、print、print_r、var_dump的区别?答:这四个都是输出语句,核心区别如下:1.echo:语法结构,无返回值,支持一次性输出多个变量/字符串,执行效率最高,日常开发最常用;2.print:函数结构,有返回值(固定返回1),只能输出单个值,效率低于echo;3.print_r:专门用于打印数组、对象,只会输出数据值,不显示数据类型,适合调试数组数据;4.var_dump:调试专用,可输出变量的值、数据类型、字符串长度,支持所有数据类型,是开发调试首选。3、==和===的区别?答:两者都是比较运算符,核心差异是是否校验数据类型:1.==宽松比较:只对比变量的值,会自动进行类型转换,例如1=='1'结果为true;2.===严格比较:同时对比值和数据类型,类型不一致直接返回false,例如1==='1'结果为false;开发规范中,优先使用严格比较,避免隐式类型转换导致的逻辑bug。4、PHP变量的作用域有哪些?答:PHP变量分为四种作用域:1.局部变量:定义在函数内部,仅函数内有效,函数执行结束变量销毁;2.全局变量:定义在函数外部,全局页面有效,函数内使用需通过global关键字或$GLOBALS数组调用;3.静态变量(static):仅在函数内定义,函数执行结束后变量值不销毁,下次调用函数沿用上次的值;4.超全局变量:系统预定义变量,全页面、全函数内均可直接使用,无需声明。5、常用的PHP超全局变量有哪些?各自作用?答:初级开发最常用的超全局变量:1.$_GET:接收URL地址栏、get方式提交的表单数据;2.$_POST:接收post方式提交的表单数据,适合传输隐私、大量数据;3.$_REQUEST:可同时接收get、post、cookie数据,优先级可在配置文件中设置;4.$_SERVER:获取服务器信息、请求头信息(请求地址、请求方式、客户端IP等);5.$_SESSION:存储用户会话数据,服务端存储,用于用户登录状态保持;6.$_COOKIE:存储客户端cookie数据,用于本地数据缓存、记住登录状态;7.$_FILES:接收表单上传的文件信息(文件名、文件大小、临时路径等)。二、数组与常用函数篇1、PHP索引数组和关联数组的区别?答:1.索引数组:下标为连续数字,默认从0开始,适合存储有序的一组相同类型数据,如$arr=[1,2,3];2.关联数组:下标为自定义字符串,适合存储一组结构化数据(如用户信息),如$user=['name'=>'张三','age'=>20];补充:PHP数组可混合数字和字符串下标,属于混合型数组,但开发中一般规范分开使用。2、遍历PHP数组的常用方式?答:四种常用遍历方式,适配不同场景:1.for循环:仅适用于索引数组,需要通过数组长度count()配合下标遍历;2.foreach循环:PHP最常用,支持索引、关联所有数组,无需判断下标,可遍历值或键值对;3.while+each+list:老式遍历方式,PHP7.2之后已废弃,不推荐使用;4.array_walk:函数式遍历,适合简单的数据批量处理。3、简述几个常用的数组、字符串函数答:数组常用函数:count():统计数组元素个数;array_merge():合并多个数组;array_push():数组尾部追加元素;array_pop():删除数组尾部元素;array_shift():删除头部元素;in_array():判断元素是否存在数组中;array_keys():获取数组所有键名;array_values():获取数组所有值。字符串常用函数:strlen():获取字符串长度;trim():去除首尾空格;explode():字符串转数组;implode():数组转字符串;str_replace():字符串替换;substr():截取字符串;strpos():查找字符首次出现位置。三、表单与文件上传篇(实操高频)1、GET和POST请求的区别?答:1.数据传输方式:GET数据拼接在URL地址栏中,POST数据放在请求体中;2.安全性:GET明文展示,安全性低;POST隐藏传输,相对安全;3.数据大小:GET有URL长度限制,无法传输大数据;POST无固定限制,可传大量数据、文件;4.缓存特性:GET请求会被浏览器缓存,可收藏链接;POST不会缓存,无法收藏;5.应用场景:GET用于查询数据(列表、详情),POST用于提交数据(注册、登录、上传)。2、PHP文件上传的实现步骤及注意事项?答:实现步骤:1.前端表单设置enctype="multipart/form-data",请求方式为POST;2.后端通过$_FILES获取文件临时信息;3.校验文件类型、文件大小,过滤非法文件;4.将服务器临时目录的文件,通过move_uploaded_file()移动到自定义保存目录;5.返回文件保存路径,完成上传。注意事项:1.禁止直接使用原文件名保存,防止重名覆盖、恶意文件执行;2.必须校验文件后缀和MIME类型,防止上传php脚本木马;3.限制文件大小,避免服务器资源占用过高;4.上传目录禁止执行脚本,提升安全性。四、Session与Cookie篇1、Cookie和Session的区别?答:1.存储位置:Cookie存储在客户端浏览器,Session存储在服务端;2.安全性:Cookie可被用户修改、查看,安全性低;Session数据仅服务端可操作,安全性高;3.存储大小:Cookie有大小限制(单条约4KB);Session无严格大小限制;4.生命周期:Cookie可设置永久有效或指定过期时间,浏览器关闭可保留;Session默认浏览器关闭即失效;5.依赖关系:Session依赖Cookie存储SessionID,若浏览器禁用Cookie,可通过URL传参维持Session。2、如何销毁Session和Cookie?答:销毁Session:1.$_SESSION=[];清空会话数据;2.session_destroy();销毁服务端会话文件,彻底结束会话。销毁Cookie:无法直接删除,通过setcookie()设置过期时间为过去时间,让浏览器自动清理:setcookie('name','',time()-1);五、MySQL数据库篇(PHP开发核心)1、PHP连接MySQL的三种方式及区别?答:分别为MySQL原生、MySQLi、PDO,其中初级开发常用后两种:1.MySQL原生(mysql_*函数):已全部废弃,PHP7及以上版本已移除,禁止使用;2.MySQLi:专门针对MySQL数据库开发,支持面向过程、面向对象两种写法,仅适配MySQL;3.PDO:通用数据库扩展,支持MySQL、Oracle、SQLServer等多种数据库,兼容性更强,是目前主流开发首选。2、什么是SQL注入?如何防范?答:SQL注入:用户通过输入框、URL参数等位置,输入恶意SQL语句,绕过前端校验,拼接进后端SQL语句,实现查询、篡改、删除数据库数据的攻击方式。防范手段:1.使用PDO/MySQLi预处理语句+参数绑定,杜绝SQL拼接;2.对用户输入进行过滤、转义,使用addslashes()等函数转义特殊字符;3.数据库账号最小权限配置,禁止使用root账号对接项目;4.前端、后端双重校验输入数据格式。3、简述MySQL常用查询优化方式答:1.对高频查询字段、关联字段建立索引,避免全表扫描;2.查询时指定具体字段,禁止使用*查询所有字段;3.避免在索引字段使用函数、模糊查询前置通配符;4.分页查询使用limit限制数据量,减少数据读取;5.优化where条件,优先过滤大量无效数据。六、PHP安全与报错篇1、PHP开发中常见的安全漏洞及解决方案?答:1.SQL注入:使用预处理语句、输入过滤防范;2.文件上传漏洞:校验文件类型、后缀、保存路径,禁止执行上传目录脚本;3.XSS跨站脚本攻击:对用户输出数据进行htmlspecialchars转义,过滤js脚本;4.CSRF跨站请求伪造:添加令牌token校验、验证请求来源Referer;5.代码执行漏洞:禁止使用eval()、exec()等危险函数,过滤用户可操控参数。2、PHP常见错误级别有哪些?答:初级开发常遇到三类错误:1.致命错误(ERROR):代码终止执行,如函数不存在、类未定义;2.警告错误(WARNING):代码继续执行,语法不规范,如文件引入失败、参数不匹配;3.提示错误(NOTICE):轻微错误,不影响程序运行,如未定义变量、未定义数组下标。七、ThinkPHP基础框架题(初级必备)1、简述ThinkPHP的MVC架构答:MVC是分层开发思想,职责分离:1.M(Model模型):负责数据库交互,数据查询、新增、修改、删除逻辑;2.V(View视图):负责页面展示,前端页面渲染、数据展示;3.C(Controller控制器):负责业务逻辑处理,接收请求、调用模型、渲染视图、返回数据。2、ThinkPHP中助手函数有哪些常用的?答:1.db():快速实例化数据库模型,无需创建模型类;2.request():获取请求参数、请求信息;3.config():获取、设置配置项;4.session():操作会话数据;5.cookie():操作cookie数据;6.json():快速返回json格式接口数据;7.redirect():页面跳转重定向。八、综合简答题(面试必问)1、PHP中include和require的区别?答:两者都是引入外部文件,核心区别在报错机制和执行逻辑:1.include:文件引入失败时,抛出警告错误,程序继续向下执行;支持include_once(只引入一次);2.require:文件引入失败时,抛出致命错误,程序直接终止执行;支持require_once;开发规范:通用模板、配置文件用require,可选加载文件用include。2、如何理解PHP的面向对象?常用面向对象特性?答:面向对象是将功能、数据封装成类和对象的开发思想,让代码更复用、易维护。PHP面向对象三大核心特性:1.封装:将属性和方法封装在类中,通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论