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

下载本文档

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

文档简介

PHP初级面试题及详细答案(真实企业版)一、PHP基础语法篇1、简述PHP变量的命名规则?答案:PHP变量必须以$符号开头;首字符不能是数字,只能是字母(A-Z/a-z)或下划线(_);后续字符可以是字母、数字、下划线;变量名严格区分大小写,$name和$Name是两个不同变量;不能使用PHP关键字、保留字作为变量名。2、PHP中常量和变量的区别?答案:定义方式不同:变量用$声明,常量通过define()或const定义;值是否可改:变量值可以随时修改、销毁,常量一旦定义无法修改、无法销毁;作用域不同:常量全局有效,不受函数、作用域限制;变量有全局、局部、静态作用域区分;命名规范:常量一般大写,下划线分隔,默认大小写敏感。3、说说PHP数据类型有哪些?常用的标量类型?答案:PHP数据类型分为四大类:标量类型(常用):字符串(string)、整型(int)、浮点型(float)、布尔型(bool);复合类型:数组(array)、对象(object);特殊类型:null、resource(资源);伪类型:mixed、void等(多用于函数注释)。4、==和===的区别?答案:==(松散等于):只对比数值,会自动做类型转换。比如0==false、1=='1'结果都是true;===(严格等于):同时对比数值+数据类型,类型不一致直接返回false。0===false、1==='1'结果都是false。开发中优先使用===,可以避免类型转换带来的逻辑bug。5、PHP中isset()、empty()、is_null()的区别?答案:isset():检测变量是否存在且值不为null。变量未定义、值为null时返回false,其余情况true;empty():检测变量是否为空。空字符串、0、0.0、false、null、空数组、未定义变量都会判定为空,返回true;is_null():仅判定变量值是否严格为null,只有值是null时返回true。二、数组与字符串篇(高频)1、PHP索引数组和关联数组的区别?答案:索引数组:下标为连续数字,默认从0开始,适合存储有序列表数据,如$arr=[1,2,3];关联数组:下标为自定义字符串或数字,键值一一对应,适合存储结构化数据,如$user=['name'=>'张三','age'=>20]。2、常用的PHP数组函数有哪些?(至少说出6个)答案:count():统计数组元素个数;array_merge():合并多个数组;array_push()/array_pop():数组尾部增、删元素;array_shift()/array_unshift():数组头部删、增元素;in_array():判断值是否存在数组中;array_key_exists():判断键名是否存在;sort()/rsort():索引数组升序、降序排序;ksort()/krsort():按键名升序、降序排序。3、PHP中字符串拼接的两种方式及区别?答案:两种方式:点号.拼接、双引号变量解析单引号:不解析变量、不转义特殊字符,执行速度更快;双引号:可以直接解析$变量,支持转义字符(\n\t等);日常拼接少量字符串用.,输出带变量的短句优先双引号,复杂拼接建议用sprintf,代码更整洁。三、函数与作用域篇1、简述PHP变量作用域类型?答案:局部变量:定义在函数内部,仅函数内有效,执行结束销毁;全局变量:定义在函数外部,函数内使用需加global关键字或$GLOBALS超全局变量;静态变量static:仅初始化一次,函数执行结束不销毁,下次调用保留上次的值;超全局变量:全脚本、所有函数、所有页面均可访问,如$_GET、$_POST、$_SERVER。2、static静态变量和普通变量的区别?答案:普通局部变量每次调用函数都会重新初始化、执行完立即销毁;静态变量只在第一次调用时初始化,后续调用沿用上次修改后的值,脚本执行结束才销毁。常用于统计函数调用次数、缓存临时数据。3、PHP函数参数有哪些类型?答案:普通参数:常规传值;默认参数:调用时不传参则使用默认值,默认参数必须放参数列表末尾;引用参数(&):函数内部修改参数值,会同步改变外部变量的值;可变参数:func_get_args()或...$args,接收不定数量参数。四、文件与目录操作1、常用的文件操作函数?答案:file_exists():判断文件/目录是否存在;is_file():判断是否为文件;is_dir():判断是否为目录;file_get_contents():读取文件内容;file_put_contents():写入文件内容;unlink():删除文件;mkdir()/rmdir():创建、删除空目录。2、PHP包含文件的四种方式区别?include、require、include_once、require_once答案:include:包含文件,文件不存在抛出警告,脚本继续执行;require:包含文件,文件不存在抛出致命错误,脚本终止执行;include_once/require_once:会判断文件是否已包含,只引入一次,避免重复定义函数、变量报错;使用场景:核心配置、公共函数文件用require_once;非必须的模板、碎片文件用include。五、超全局变量与请求处理1、常用PHP超全局变量有哪些?作用分别是什么?答案:$_GET:接收URL地址栏、get方式提交的参数;$_POST:接收post表单提交的参数;$_REQUEST:默认包含GET、POST、COOKIE数据,不推荐优先使用,安全性差;$_SERVER:获取服务器、请求相关信息,如请求方式、域名、客户端IP、脚本路径;$_COOKIE:读取浏览器Cookie数据;$_SESSION:存储服务端会话数据;$_FILES:接收文件上传的信息。2、GET和POST区别?答案:传参位置:GET参数拼接在URL地址栏,POST参数放在请求体中;数据长度:GET有URL长度限制,无法传输大数据;POST理论无限制,适合上传文件、长文本;缓存与历史:GET会被浏览器缓存、记录历史记录;POST不会缓存;安全性:GET参数可见,不安全;POST相对隐蔽,敏感数据优先POST;使用场景:查询、获取数据用GET;新增、修改、提交数据、上传文件用POST。六、Cookie与Session1、Cookie和Session的区别?答案:存储位置:Cookie存储在客户端浏览器,Session存储在服务器端;数据大小:Cookie有大小限制(一般4K),Session容量更大;安全性:Cookie可被篡改、窃取,安全性低;Session数据在服务端,安全性更高;生命周期:Cookie可设置持久时间,关闭浏览器可保留;默认Session浏览器关闭即失效;依赖关系:Session默认依赖Cookie存储session_id,Cookie不依赖Session。2、Session失效的方式有哪些?答案:手动销毁:session_destroy()销毁会话文件,session_unset()清空会话数据;关闭浏览器(默认会话无持久Cookie);服务器session过期时间到期;手动清除客户端存储的session_idCookie。七、MySQL数据库基础(PHP对接)1、PHP连接MySQL的三种方式及区别?答案:mysql扩展:最老版本,已废弃、不支持预处理、不安全,新项目禁止使用;mysqli扩展:mysql的增强版,支持面向过程、面向对象,支持预处理语句,效率更高;PDO:通用数据库扩展,支持MySQL、Oracle、SQLServer等多种数据库,兼容性最好,支持预处理、事务,企业项目主流选择。2、什么是SQL注入?如何防范?答案:SQL注入是用户通过输入恶意SQL语句,拼接进后台SQL执行,实现越权查询、删除、篡改数据的攻击方式。防范手段:使用PDO/mysqli预处理语句(占位符),参数绑定,杜绝拼接SQL;对用户输入做过滤、转义,过滤特殊字符;数据库账号最小权限原则,不使用root账号连接业务数据库;禁止直接接收参数拼接SQL语句。3、说说MySQL常用索引类型及作用?答案:主键索引(PRIMARY):唯一且非空,一张表只能一个,查询速度最快;唯一索引(UNIQUE):字段值唯一,允许为空,防止数据重复;普通索引(INDEX):最基础索引,仅用于提升查询速度,无唯一性限制;联合索引:多个字段组合索引,遵循最左匹配原则。八、PHP安全与错误处理1、PHP常见安全漏洞及解决方案?答案:SQL注入:使用预处理语句、参数绑定;XSS跨站脚本攻击:输出数据时使用htmlspecialchars()转义;CSRF跨站请求伪造:表单提交增加Token验证;文件上传漏洞:校验文件后缀、MIME类型,重命名文件,上传目录禁止执行脚本;目录遍历漏洞:过滤../等路径字符,限制文件读取路径。2、PHP错误类型有哪些?答案:语法错误:代码书写不规范,脚本直接无法运行;致命错误:代码运行中断,后续代码不执行,如调用不存在的函数;警告错误:不终止脚本,继续执行,如包含不存在的文件;通知错误:轻微提示,如使用未定义的变量。九、基础框架与项目常识(初级必问)1、简述MVC思想?答案:MVC是一种代码分层架构,目的是分离业务逻辑、数据、视图展示,让代码更易维护:M(Model模型):负责数据处理,数据库增删改查、数据校验;V(View视图):负责页面展示,HTML、模板渲染,展示数据;C(Controller控制器):负责接收请求、调用模型、分配视图,处理业务流程。2、ThinkPHP框架中URL访问规则?答案:基础访问格式:域名/模块/控制器/方法/参数控制器名、方法名默认小写,支持路由简化地址,入口文件统一拦截所有请求,实现单一入口模式。十、手写代码简答题(面试实操)1、写一段PHP连接MySQL(PDO)的基础代码答案:php

<?php

$db_host='127.0.0.1';

$db_user='root';

$db_pwd='root';

$db_name='test';

try{

$dsn="mysql:host={$db_host};dbname={$db_name};charset=utf8";

$pdo=newPDO($dsn,$db_user,$db_pwd);

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERR

温馨提示

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

评论

0/150

提交评论