PHP程序员笔试真题(含详细答案)_第1页
PHP程序员笔试真题(含详细答案)_第2页
PHP程序员笔试真题(含详细答案)_第3页
PHP程序员笔试真题(含详细答案)_第4页
PHP程序员笔试真题(含详细答案)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

PHP程序员笔试真题(含详细答案)适用人群:初中级PHP开发工程师|题型:基础语法、数据库、服务器、安全、算法、实战编程|难度:企业面试通用难度一、PHP基础单选题(10题)1、PHP中以下变量名合法的是?()A、$123abc B、$abc_123 C、$abc-123 D、$class答案:B解析:PHP变量以$开头,首字符不能是数字,只能由字母、数字、下划线组成,不能使用特殊符号、关键字。A数字开头错误,C含连字符错误,D是PHP关键字,不建议用作变量名。2、以下不属于PHP超全局变量的是?()A、$_POST B、$_SESSION C、$GLOBALS D、$_USER答案:D解析:PHP预定义超全局变量包含$_GET、$_POST、$_SERVER、$_SESSION、$_COOKIE、$_FILES、$_REQUEST、$GLOBALS等,$_USER为自定义变量。3、PHP中exit和die的区别是?()A、exit终止程序,die仅输出内容不终止 B、die终止程序,exit不终止C、两者功能基本一致,die是exit的别名 D、完全无区别答案:C解析:二者作用都是终止脚本执行,支持传入字符串输出错误信息。细微区别:exit是语言结构,die是函数别名,日常开发中可完全通用。4、isset()和empty()的区别说法正确的是?()A、empty()只判断是否为空,isset()只判断是否定义且不为nullB、empty()和isset()判断逻辑完全一致C、isset()可以判断空字符串、0是否为空D、empty()判断未定义变量不会报错答案:A解析:isset()检测变量是否已定义且不为null,对空字符串、0、false、空数组均返回true;empty()检测变量是否为空值(0、''、[]、null、false均为空),未定义变量使用empty不会报错,核心区别是判定规则不同。5、PHP中const和define的区别,说法错误的是?()A、const可用于类内定义常量 B、define是函数,const是语言结构C、define支持条件定义,const不支持 D、两者都可以定义变量答案:D解析:二者均用于定义常量,不可定义变量。define为函数,可写在if条件内;const必须在编译阶段定义,不支持条件判断,可在类中使用。6、PHP数组中,array_merge和+合并数组的区别是?()A、无区别 B、array_merge覆盖同名键,+保留左侧键C、+覆盖同名键,array_merge保留左侧键 D、仅索引数组有区别答案:B解析:关联数组场景:array_merge()后数组键值覆盖前数组;数组+运算,左侧数组键优先,右侧同名键直接舍弃。索引数组array_merge会重置下标,+不会重置。7、以下哪个函数可以实现字符串反转?()A、strrev() B、reverse() C、strflip() D、implode()答案:A解析:strrev()为PHP内置字符串反转函数;reverse非PHP内置函数;implode是数组转字符串。8、PHP中session和cookie的区别,说法正确的是?()A、cookie存储在服务端,session存储在客户端 B、两者均存储在客户端C、session存储在服务端,cookie存储在客户端 D、两者均存储在服务端答案:C解析:Cookie存储在浏览器客户端,可手动篡改、有过期时间;Session数据存储在服务器,客户端仅保存session_id,安全性更高。9、PHP异常处理中,用于捕获异常的关键字是?()A、try B、catch C、throw D、finally答案:B解析:try包裹执行代码,throw抛出异常,catch捕获异常,finally无论是否异常都会执行。10、PHP7中废弃的特性是?()A、整型溢出 B、each()函数 C、命名空间 D、类型约束答案:B解析:PHP7.2开始废弃each()函数,推荐使用foreach遍历数组。二、PHP基础多选题(5题)1、以下属于PHP数据类型的有?()A、string B、int C、bool D、array E、object答案:ABCDE解析:PHP基础类型:字符串、整型、浮点型、布尔型、NULL;复合类型:数组、对象。2、PHP中防止SQL注入的方式有?()A、使用PDO预处理 B、使用mysqli预处理 C、addslashes转义D、过滤特殊字符 E、直接拼接SQL语句答案:ABCD解析:禁止直接拼接用户参数SQL,预处理语句是最优方案,配合字符过滤、转义可有效防注入。3、以下属于PHP文件操作函数的是?()A、fopen() B、fwrite() C、file_get_contents() D、unlink()答案:ABCD解析:分别对应打开文件、写入文件、读取文件内容、删除文件。4、PHP面向对象三大特性是?()A、封装 B、继承 C、多态 D、重载 E、重写答案:ABC解析:面向对象核心三大特性:封装、继承、多态。5、可以终止PHP脚本执行的函数/结构有?()A、exit() B、die() C、return D、break答案:AB解析:exit、die直接终止整个脚本;return仅终止当前函数/文件;break仅跳出循环/switch,不终止脚本。三、判断题(5题)1、PHP是编译型语言。()答案:错误解析:PHP是解释型脚本语言,运行时逐行解析执行,无需提前编译。2、$a=0;empty($a)返回true,isset($a)返回true。()答案:正确解析:$a已定义不为null,isset为true;0属于空值,empty为true。3、Session可以跨域名共享。()答案:错误解析:默认session受域名、cookie限制,无法跨域共享,需特殊配置跨域session。4、PHP中私有属性private可以被子类继承并直接访问。()答案:错误解析:private私有属性仅当前类可访问,子类无法继承和直接访问;protected受保护属性可子类继承访问。5、header跳转必须在所有输出之前执行。()答案:正确解析:HTTP响应头必须在页面内容输出前发送,否则会报headeralreadysent错误。四、简答题(5题,企业高频)1、简述GET和POST的区别?参考答案:1、传参方式:GET参数拼接在URL地址栏,POST参数放在请求体中;2、数据长度:GET有URL长度限制,传输数据量小;POST无明确长度限制,可传大量数据;3、安全性:GET参数暴露在地址栏,可被缓存、记录,安全性低;POST参数隐藏,相对安全;4、缓存特性:GET请求默认可缓存,POST默认不缓存;5、书签保存:GET可保存为书签,POST无法保存。2、简述Cookie和Session的区别及使用场景?参考答案:区别:1、存储位置:Cookie存客户端浏览器,Session存服务器端;2、安全性:Cookie可篡改、明文存储,安全性差;Session数据服务端存储,安全性高;3、存储大小:Cookie有大小限制,Session无限制;4、生命周期:Cookie可设置永久过期,Session关闭浏览器默认失效。使用场景:Cookie:记住登录状态、保存用户偏好、统计访客信息;Session:用户登录会话、临时数据存储、权限验证。3、PHP中如何防止XSS攻击?参考答案:1、前端输出数据使用htmlspecialchars()转义HTML特殊字符,防止脚本植入;2、对用户输入内容进行过滤,剔除script、iframe等危险标签;3、设置HTTP响应头X-Content-Security-Policy安全策略;4、统一前后端数据校验,禁止非法特殊字符输入。4、简述PHP面向对象中public、protected、private的访问权限?参考答案:1、public(公共):类内、类外、子类均可访问;2、protected(受保护):仅当前类、子类可访问,类外禁止访问;3、private(私有):仅当前类内部可访问,子类、类外均无法访问。5、简述PDO的优势?参考答案:1、支持多数据库(MySQL、Oracle、SQLite等),兼容性强;2、支持预处理语句,有效杜绝SQL注入漏洞;3、支持事务处理,保证数据一致性;4、错误处理机制完善,支持异常捕获;5、兼容PHP高版本,是官方推荐数据库扩展。五、MySQL数据库题(高频笔试)1、简述索引的作用、优缺点?参考答案:作用:大幅提升数据库查询效率,快速定位数据,减少全表扫描。优点:查询速度快、排序分组效率高、可唯一约束数据。缺点:占用磁盘存储空间;新增、修改、删除数据时需要维护索引,降低写入效率。2、什么是事务?事务四大特性?参考答案:事务是一组SQL语句的执行单元,要么全部执行成功,要么全部失败回滚。四大特性(ACID):1、原子性:事务不可分割,整体成功或整体回滚;2、一致性:事务执行前后数据状态一致;3、隔离性:多个事务之间相互隔离,互不干扰;4、持久性:事务提交后,数据永久保存,不会丢失。3、写出PDO连接MySQL并查询数据的完整代码参考答案:php

<?php

//数据库配置

$db_host='';

$db_user='root';

$db_pwd='123456';

$db_name='test_db';

try{

//连接数据库

$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=1;

$sql="SELECT*FROMuserWHEREid=:id";

$stmt=$pdo->prepare($sql);

$stmt->bindParam(':id',$id,PDO::PARAM_INT);

$stmt->execute();

//获取数据

$data=$stmt->fetch(PDO::FETCH_ASSOC);

var_dump($data);

}catch(PDOException$e){

die("数据库连接失败:".$e->getMessage());

}

?>六、编程实战题(2道,必考)1、PHP写一个函数,实现字符串反转(禁止使用strrev函数)参考答案:php

<?php

functionstr_reverse($str)

{

//获取字符串长度

$len=strlen($str);

$newStr='';

//倒序拼接字符

for($i=$len-1;$i>=0;$i--){

$newStr.=$str[$i];

}

return$newStr;

}

//测试

echostr_reverse('abc123');//输出:321cba

?>2、PHP写一个函数,去除数组中重复元素(禁止使用array_unique)参考答案:php

<?php

functionarray_remove_repeat($arr)

{

$newArr=[];

foreach($arras$val){

//不存在则存入新数组

if(!in_array($val,$newArr)){

$newArr[]=$val;

}

}

return$newArr;

}

//测试

$testArr=[1,2,2,3,3,4,'a','a'];

print_r(array_remove_repeat($testArr));

?>七、综合面试笔试题(压轴)1、简述PHP缓存机制,你项目中用过哪些缓存?参考答案:缓存核心思想是将高频查询、低频修改的数据提前存储,减少数据库、代码重复运算压力,提升接口响应速度。常用缓存:1、文件缓存:将数据序列化存入文件,适合小型项目、少量数据缓存;2、Redis缓存:高性能内存缓存,支持字符串、哈希、列表等多种数据结构,可做登录令牌、热点数据、秒杀缓存、队列;

温馨提示

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

最新文档

评论

0/150

提交评论