版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP工程师笔试真题(含详细答案)适用场景:初级/中级PHP开发面试、企业入职笔试、技术能力测评考试时长:60分钟满分:100分一、单项选择题(每题3分,共30分)1、PHP中以下变量名定义正确的是?()A、$123name B、$name_123 C、$name-123 D、$@name答案:B解析:PHP变量以$开头,首字符不能是数字,只能由字母、数字、下划线组成,不能包含特殊符号、连字符。2、以下不属于PHP超全局变量的是?()A、$_POST B、$_SESSION C、$GLOBALS D、$_USER答案:D解析:PHP预设超全局变量包含$_GET、$_POST、$_SERVER、$_SESSION、$_COOKIE、$_FILES、$_REQUEST、$GLOBALS,$_USER为自定义变量。3、PHP中echo、print、print_r的区别,说法正确的是?()A、print_r只能输出字符串B、echo可以输出数组C、echo无返回值,print有返回值D、print可以一次性输出多个参数答案:C解析:echo无返回值、可输出多个字符串;print有返回值(1)、只能输出单个值;print_r专门用于打印数组、对象。4、PHP中==和===的区别,描述正确的是?()A、两者无区别B、==对比值和类型,===只对比值C、==只对比值,===同时对比值和数据类型D、===可以对比数组,==不可以答案:C解析:宽松等于==,仅判断数值是否相等,会自动做类型转换;严格等于===,数值、数据类型必须完全一致,不做类型转换。5、session和cookie的区别,说法错误的是?()A、cookie存储在客户端浏览器B、session存储在服务端C、cookie可以永久保存,session会话结束即失效D、session可以脱离cookie独立使用答案:D解析:默认情况下,session依赖cookie存储session_id,关闭cookie后需要通过URL传参才能使用session。6、PHP中获取文件扩展名的最优函数组合是?()A、substr() B、pathinfo() C、strcut() D、file_get_contents()答案:B解析:pathinfo()可直接获取文件后缀、文件名、路径,是PHP官方推荐的获取文件扩展名方式,兼容性和稳定性最优。7、以下SQL语句中,能有效防止SQL注入的是?()A、直接拼接变量执行SQLB、使用PDO预处理语句C、使用trim()处理参数即可D、使用str_replace替换关键字答案:B解析:参数化预处理是杜绝SQL注入的标准方案,字符替换、简单过滤均存在绕过漏洞,无法彻底防护。8、PHP中exit和die的关系是?()A、exit终止脚本,die输出信息不终止B、die终止脚本,exit不终止C、功能基本一致,die是exit的别名D、die可以在类中使用,exit不可以答案:C解析:PHP中die()和exit()功能完全一致,都是终止当前脚本执行,可传入字符串输出终止提示信息。9、PHP数组排序中,保留键名、升序排序的函数是?()A、sort() B、rsort() C、asort() D、arsort()答案:C解析:sort/rsort排序后重置数组键名;asort(升序)、arsort(降序)排序后保留原数组键名。10、HTTP状态码404、500分别代表?()A、权限不足、网关错误B、资源不存在、服务器内部错误C、请求超时、参数错误D、服务器繁忙、请求被拦截答案:B解析:404请求的资源不存在;500服务端代码异常、程序报错、服务器内部错误。二、填空题(每空2分,共20分)1、PHP中定义常量的两种方式是_______和_______。答案:define()、const2、PHP中遍历数组的四种常用方式:for循环、_______、_______、array_walk。答案:foreach循环、while配合each(主流核心为foreach)3、MySQL中InnoDB引擎支持_______、事务、行级锁,MyISAM不支持。答案:外键4、PHP开启报错显示的配置参数是_______。答案:display_errors5、去除字符串首尾空格的函数是_______,去除左侧空格是_______。答案:trim()、ltrim()6、PHP中将数组转为JSON字符串的函数是_______,JSON转数组是_______。答案:json_encode()、json_decode()7、SESSION开启必须执行的函数是_______。答案:session_start()三、简答题(每题6分,共30分)1、简述GET和POST请求的区别?参考答案:1)传参方式:GET参数拼接在URL地址栏中,POST参数放在请求体中;2)数据大小:GET有URL长度限制,传参数据量小;POST无明确限制,可传输大数据、文件;3)安全性:GET参数暴露在地址栏,不安全,适合查询类请求;POST参数隐藏,相对安全,适合提交数据;4)缓存特性:GET请求会被浏览器缓存,POST默认不缓存;5)书签保存:GET可保存为书签,POST无法保存。2、简述PHP中静态变量static的作用?参考答案:1)静态变量仅在首次调用时初始化,脚本运行期间只会初始化一次;2)函数执行结束后,普通变量会销毁,静态变量会保留上次的值;3)可用于统计函数调用次数、缓存临时数据、记录状态等场景;4)静态变量作用域仅限当前函数内部,外部无法直接访问。3、简述SQL注入的原理及常规防护方案?参考答案:原理:程序直接接收用户输入参数,拼接进SQL语句执行,用户通过输入恶意SQL关键字,篡改原有SQL逻辑,实现查询、删除、篡改数据等非法操作。防护方案:1)使用PDO/MySQLi预处理语句+参数绑定,杜绝SQL拼接;2)严格过滤、校验用户输入,限制特殊字符;3)数据库账号最小权限配置,禁止使用root权限连接项目;4)关闭数据库错误详情暴露,避免泄露表结构信息。4、简述Cookie和Session的区别及使用场景?参考答案:1)存储位置:Cookie存客户端浏览器,Session存服务器端;2)安全性:Cookie可被篡改、窃取,安全性低;Session数据存在服务端,安全性更高;3)存储大小:Cookie有大小限制,单条不超过4KB;Session无严格大小限制;4)生命周期:Cookie可设置过期时间实现永久存储;Session默认浏览器关闭即失效;场景:Cookie用于记住登录状态、保存用户偏好设置;Session用于登录验证、用户会话信息存储、权限校验。5、简述PHP中include、require、include_once、require_once的区别?参考答案:1)include:引入文件,文件不存在抛出警告,脚本继续执行;2)require:引入文件,文件不存在抛出致命错误,脚本终止执行;3)include_once:同include,会判断文件是否已引入,避免重复引入;4)require_once:同require,防止文件重复引入,项目中最常用,适合引入配置文件、公共函数文件。四、编程题(每题10分,共20分)1、编写PHP代码,遍历输出一个二维数组,并去除数组中所有空值(空字符串、null、空数组)。参考答案:php
<?php
//定义二维数组
$arr=[
['name'=>'张三','age'=>20,'sex'=>''],
['name'=>'','age'=>null,'sex'=>'男'],
['name'=>'李四','age'=>22,'sex'=>'女']
];
//递归去除空值
functionfilterEmpty($data){
foreach($dataas$k=>$v){
if(is_array($v)){
$data[$k]=filterEmpty($v);
}
//过滤空字符串、null、空数组
if(empty($v)){
unset($data[$k]);
}
}
return$data;
}
$newArr=filterEmpty($arr);
//遍历输出二维数组
foreach($newArras$val){
print_r($val);
}
?>2、编写PHP代码,连接MySQL数据库,实现简单的用户查询功能(使用PDO预处理,防SQL注入)。参考答案:php
<?php
//数据库配置
$db_host='localhost';
$db_user='root';
$db_pwd='root';
$db_name='test_db';
try{
//PDO连接数据库
$dsn="mysql:host={$db_host};dbname={$db_name};charset=utf8mb4";
$pdo=newPDO($dsn,$db_user,$db_pwd);
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//接收用户参数
$id=$_GET['id']??0;
//预处理SQL,参数绑定
$sql="SELECT*FROMuserWHEREid=:id";
$stmt=$pdo->prepare($sql);
$stmt->bindParam(':id',$id,PDO::PARAM_INT);
$stmt->execute();
//查询结果
$user=$stmt->fetch(PDO::FETCH_ASSOC);
var_dump($user);
}catch(PDOException$e){
die("数据库错误:".$e->getMessage());
}
?>五、附加实操题(10分,加分项)题目:简述PHP文件上传的完整流程及防止文件上传漏洞的处理方案,并写出核心校验代码。参考答案:上传流程:1)前端设置form表单enctype="multipart/form-data",提交文件数据;2)PHP通过$_FILES接收上传文件信息;3)校验文件大小、后缀、MIME类型,过滤非法文件;4)生成唯一文件名,避免文件覆盖;5)通过move_uploaded_file将文件移动到指定目录。安全防护方案:1)禁止上传php、asp、exe等可执行脚本文件;2)同时校验文件后缀和MIME类型,防止文件伪装;3)上传目录禁止脚本执行权限;4)文件名重命名,杜绝路径遍历漏洞;5)限制文件上传大小,防止超大文件攻击。核心校验代码:php
<?php
//允许上传的文件类型
$allow_type=['jpg','png','gif','jpeg'];
$file_name=$_FILES['file']['name'];
$file_ext=strtolower(pathinfo($file_name,PATHINFO_EXTENSION));
//校验后缀
if(!in_array($file_ext,$allow_type)){
die("不允许上传该类型文件");
}
//校验文件大小2M
if($_FILES['file']['size'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 膀胱癌术后的膀胱灌注护理查房
- C++ 语言考试题库含答案集
- 废旧物资制度培训测试题(附答案)
- 突发事件创伤伤员医疗救治规范总结2026
- 支气管哮喘诊疗指南2025版
- 中医病历书写与质控要点2025修订
- 医疗不良事件管理及上报流程
- 项目安全施工应急预案
- 装配式建筑构件生产项目环评环境影响报告书
- 消防专用水泵房施工组织方案
- 2026年4月自考00158资产评估试题及答案
- 医疗设备全生命周期管理与维护制度
- 2026年宗教教职人员备案测试题
- 万邑通在线测评题库及答案
- 河北肥料行业现状分析报告
- DB6501∕T 080-2025 牛羊杂清洗规范
- T-CECS 1049-2022 隧道衬砌拱顶带模注浆材料应用技术规程
- 高考语文复习微专题之文言文游记类散文
- 泰森多边形课件
- 2026年一级造价一造工程管理考前必背考点重点知识记忆十页纸
- DB52T 1888-2025数据中心运行与管理人才培养规范
评论
0/150
提交评论