PHP基础面试题(含详细真实面试答案)_第1页
PHP基础面试题(含详细真实面试答案)_第2页
PHP基础面试题(含详细真实面试答案)_第3页
PHP基础面试题(含详细真实面试答案)_第4页
PHP基础面试题(含详细真实面试答案)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

PHP基础面试题(含详细真实面试答案)一、PHP基础语法类1、PHP中echo、print、print_r、var_dump的区别?详细答案:这四个都是输出语句,日常开发用途完全不一样,核心区别如下:1.echo:是语言结构,不是函数,无返回值,执行速度最快,只能输出字符串、数字这类基础类型,开发中最常用。2.print:同样是语言结构,有返回值(固定返回1),速度比echo慢,用法和echo基本一致,日常很少用。3.print_r:专门用来打印数组、对象,只会输出值,不显示数据类型,没有换行,适合简单打印数组数据排查问题。4.var_dump:调试专用,会同时输出数据类型、值、字符串长度,支持打印所有类型数据(null、布尔、数组、对象),排查bug首选,生产环境必须删除。2、PHP变量的作用域有哪些?global和static的用法?详细答案:PHP变量主要分三种作用域:1.局部变量:定义在函数内部,仅函数内有效,函数执行结束变量销毁。2.全局变量:定义在函数外部,页面全局有效,但函数内无法直接调用。3.静态变量static:仅在函数内定义,函数执行结束后变量值不会销毁,下次调用函数会沿用上次的值。global用法:函数内想要调用全局变量,需要用global关键字声明,或者使用$GLOBALS[]超全局变量。日常开发不推荐多用global,容易造成代码耦合、变量污染。3、PHP中传值和传引用的区别?详细答案:1.传值(默认):传递的是变量的副本,两个变量相互独立,修改其中一个,不会影响另一个。普通变量、数组默认都是传值。2.传引用(&符号):传递的是变量的内存地址,两个变量指向同一个数据,修改任意一个,另一个都会同步变化。适用场景:大数据数组、对象传递,用引用可以节省内存开销;普通小变量不建议用,容易出现数据被意外修改的bug。4、isset()、empty()、is_null()的区别和使用场景?详细答案:这三个是开发最常用的判断函数,坑点很多,实际用法如下:1.isset():检测变量是否存在且不为null。变量未定义、值为null时返回false,其余情况(0、空字符串、空数组)都返回true。常用于判断参数是否传递。2.empty():检测变量是否为空。0、''、[]、null、false、'0'都会被判定为空,返回true。日常用来判断表单空值、空数据。3.is_null():仅当变量值严格为null时返回true,变量未定义会报错。基本很少单独用。实战技巧:判断接口参数优先用isset,判断用户输入内容是否为空优先用empty。二、数组与字符串高频考点5、PHP索引数组和关联数组的区别?详细答案:1.索引数组:下标是连续数字,默认从0开始,类似js的普通数组,适合存储有序列表数据,比如商品列表、用户列表。2.关联数组:下标是自定义字符串,类似键值对对象,适合存储单一实体信息,比如用户信息(name、age、phone)。补充:PHP数组是混合类型,同一个数组可以同时存在数字下标和字符串下标,这是和其他语言最大的区别。6、常用的PHP数组函数有哪些?(面试必背)详细答案:日常开发高频使用,按功能分类:1.增删改查:array_push(尾部追加)、array_pop(尾部删除)、array_unshift(头部追加)、array_shift(头部删除)2.键值操作:array_keys(获取所有键)、array_values(获取所有值)、array_merge(数组合并)3.筛选判断:array_filter(数组过滤空值)、in_array(判断值是否存在)、array_search(查找值的键)4.排序:sort(升序)、rsort(降序)、ksort(按键升序)、usort(自定义排序)7、array_merge和+合并数组的区别?详细答案:1.array_merge():如果数组键名重复,后面的数组值会覆盖前面的;数字下标会重新排序、重置索引。2.+加号合并:如果键名重复,保留前面数组的值,后面的直接舍弃;不会重置下标。实战场景:普通合并数组、去重覆盖用array_merge;需要保留原有数据、不覆盖旧值用+。三、函数相关面试题8、PHP可变函数、匿名函数是什么?详细答案:1.可变函数:把函数名存为字符串,通过变量调用函数,比如$func='echo';$func('test');常用于动态调用方法、钩子函数。2.匿名函数:没有函数名的函数,也叫闭包,PHP5.3之后支持。主要用于回调函数、数组遍历、事件处理,可通过use关键字引入外部变量。9、PHP函数参数默认值、参数类型约束注意事项?详细答案:1.默认值参数必须放在非默认参数的右侧,否则会报错。2.PHP7开始支持参数类型约束(int、string、array、对象),默认是弱类型,严格模式下会强制校验类型。3.可以设置可变参数...$args,接收不定数量的参数,适配多参数场景。四、面向对象基础(初级必问)10、面向对象三大特性及各自作用?详细答案:1.封装:把属性和方法封装到类中,用访问修饰符控制权限,隐藏内部实现细节,只暴露可用接口,保证数据安全,减少代码冗余。2.继承:子类继承父类的属性和方法,实现代码复用,不用重复写通用逻辑,PHP只支持单继承,一个子类只能有一个父类。3.多态:子类重写父类方法,同一个方法在不同子类中有不同实现,提高代码扩展性,配合接口、抽象类使用。11、public、protected、private访问权限区别?详细答案:1.public(公共):任意位置都可以访问,类内、类外、子类都能用。2.protected(受保护):仅当前类和子类可以访问,类外无法调用。3.private(私有):仅当前类内部可以访问,子类、类外都无法访问,安全性最高。12、构造方法和析构方法的作用?详细答案:1.构造方法__construct():实例化对象时自动执行,主要用于初始化数据、连接数据库、赋值属性,不用手动调用。2.析构方法__destruct():对象销毁、程序执行结束时自动执行,主要用于释放资源,比如关闭数据库连接、清空缓存、销毁文件句柄。五、PHP常见坑点与实战问题13、PHP中==和===的区别?详细答案:1.==弱等于:只对比值,会自动转换数据类型。比如0==''、0==false、'123'==123都会返回true,日常开发容易出bug。2.===强等于:同时对比值和数据类型,类型不同直接返回false,结果更严谨。实战建议:业务代码中一律使用===,避免弱类型转换带来的逻辑错误。14、PHP的超全局变量有哪些?作用是什么?详细答案:超全局变量页面全局有效,函数内不用声明直接使用,常用的有:1.$_GET:获取地址栏URL参数2.$_POST:获取表单POST提交数据3.$_REQUEST:同时获取GET、POST、COOKIE数据,不推荐多用,优先级混乱4.$_SERVER:获取服务器信息、请求头、请求方式、域名、IP5.$_COOKIE:获取浏览器Cookie数据6.$_SESSION:服务端会话存储数据7.$GLOBALS:获取全局变量15、session和cookie的区别?详细答案:1.存储位置:cookie存在浏览器客户端,session存在服务器端。2.安全性:cookie可被篡改、窃取,安全性低;session数据存在服务端,相对安全。3.存储大小:cookie有大小限制(一般4KB);session无明显大小限制。4.依赖关系:session默认依赖cookie,cookie禁用后可以通过URL传session_id解决。5.生命周期:cookie可设置永久有效;session默认浏览器关闭失效。16、PHP如何防止SQL注入?详细答案:实际开发常用四种方式,优先级从高到低:1.使用PDO/MySQLi预处理语句:参数绑定,彻底杜绝注入,最安全、最主流。2.转义特殊字符:使用addslashes、mysqli_real_escape_string转义单双引号、反斜杠。3.参数白名单校验:限制输入参数格式,比如手机号、ID只能是数字,非法参数直接拦截。4.关闭魔术引号:避免自动转义导致的数据错乱。六、基础逻辑与易错点17、PHP中0、空字符串、null、false的区别?详细答案:1.0:数字0,是有效数值,isset判断为true,empty判断为true。2.''空字符串:字符串类型,无内容,isset为true,empty为true。3.null:无值、未定义,isset为false,empty为true。4.false:布尔假值,isset为true,empty为true。核心区别:null代表无数据,0和空字符串是有数据的空值,业务判断时必须严格区分。18、include和requi

温馨提示

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

评论

0/150

提交评论