2025年php期末考试试题及答案_第1页
2025年php期末考试试题及答案_第2页
2025年php期末考试试题及答案_第3页
2025年php期末考试试题及答案_第4页
2025年php期末考试试题及答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

2025年php期末考试试题及答案一、单项选择题(共15题,每题2分,共30分)下列关于PHP8.0命名参数的描述,错误的是()A.调用函数时可以按参数名传递参数,无需遵循参数定义顺序B.命名参数和普通位置参数可以混合使用,位置参数必须放在命名参数之前C.命名参数传递时可以重复指定同一个参数多次,后面的值会覆盖前面的D.命名参数可以显著提升含多个可选参数的函数调用的可读性答案:C解析:PHP8.0引入的命名参数不允许重复传递同一个参数,否则会抛出FatalError,其余选项描述均符合命名参数的语法规则。PHP8.0新增的match表达式与switch语句的区别,描述错误的是()A.match是表达式,执行后会返回值可直接赋值给变量B.match采用严格比较(===)匹配分支条件,switch采用松散比较(==)C.match的分支仅支持单行语句,switch支持多行代码块D.match未匹配到任何分支时会抛出UnhandledMatchError异常,switch未匹配则无任何操作答案:C解析:match的分支可以支持多行表达式,只要最后一行作为返回值即可,其余选项描述均为二者的核心区别。下列哪个PHP扩展是官方提供的Opcode缓存扩展,可显著提升PHP脚本执行性能()A.RedisB.OPcacheC.XdebugD.Memcached答案:B解析:OPcache是PHP官方内置的Opcode缓存扩展,通过将编译后的Opcode缓存到共享内存中,避免重复编译,提升执行效率;Redis、Memcached是数据缓存扩展,Xdebug是调试扩展。下列超全局变量中,可以获取到HTTP请求头中Authorization字段的是()A.$_GET

B.$_POST

C.$_SERVER

D.$_COOKIE

答案:C解析:HTTP请求头中的字段会被解析到​SERVER超全A.联合类型是PHP7.4引入的新特性B.联合类型使用|分隔多个类型,表示参数或返回值可以是其中任意一种类型

C.联合类型支持void类型和其他类型组合D.联合类型可以使用mixed作为其中一个类型,和其他类型组合后会自动忽略其他类型答案:B解析:联合类型是PHP8.0引入的特性,使用|分隔多个类型;void不能和其他类型组合为联合类型;mixed本身就是所有类型的集合,无需和其他类型组合,组合也不符合语法规范。

6.PDO中获取查询结果集为关联数组的常量是()A.PDO::FETCH_NUMB.PDO::FETCH_ASSOCC.PDO::FETCH_OBJD.PDO::FETCH_BOTH答案:B解析:PDO::FETCH_ASSOC返回关联数组,PDO::FETCH_NUM返回索引数组,PDO::FETCH_OBJ返回对象,PDO::FETCH_BOTH同时返回关联和索引数组。Composer中用于安装项目所有依赖的命令是()A.composerinstallB.composerupdateC.composerrequireD.composerdump-autoload答案:A解析:composerinstall会根据composer.lock文件锁定的版本安装所有依赖;composerupdate会更新依赖到composer.json允许的最新版本并更新composer.lock;composerrequire用于新增依赖;composerdump-autoload用于重新生成自动加载文件。下列哪个函数可以用于验证输入的邮箱格式是否合法()A.filter_var()B.addslashes()C.htmlspecialchars()D.trim()答案:A解析:filter_var($email,FILTER_VALIDATE_EMAIL)可以验证邮箱格式合法性;addslashes用于转义字符串,htmlspecialchars用于转义HTML字符防止XSS,trim用于去除字符串首尾空白字符。

9.PHP默认的会话(Session)数据存储位置是()A.客户端CookieB.服务器端磁盘C.Redis缓存D.MySQL数据库答案:B解析:PHP默认配置下Session数据存储在服务器端的临时磁盘目录中,可通过修改session.save_handler配置项更换存储介质为Redis、MySQL等。下列关于PHP命名空间的描述,错误的是()A.命名空间用于解决类名、函数名冲突的问题B.同一个文件中可以定义多个命名空间C.命名空间支持子命名空间,使用

D.全局命名空间下的类必须使用use导入后才能使用答案:D解析:全局命名空间下的类可以直接通过,无需use导入,其余选项描述均正确。

11.PHP8.1引入的只读属性的关键字是()A.finalB.staticC.readonlyD.const答案:C解析:readonly是PHP8.1引入的关键字,用于声明类属性为只读,只能在构造函数中赋值,后续不可修改;final用于声明类或方法不可继承/重写,static用于声明静态成员,const用于声明类常量。下列哪个是Laravel框架默认的ORM组件()A.ThinkORMB.EloquentC.DoctrineD.Medoo答案:B解析:Eloquent是Laravel内置的ORM组件,ThinkORM是ThinkPHP的ORM组件,Doctrine是Symfony常用的ORM组件,Medoo是轻量级ORM库。PHP中处理POST请求上传文件的超全局变量是()A.$_POST

B.$_GET

C.$_FILES

D.$_REQUEST

答案:C解析:$_FILES超全局变量用于存储上传文件的相关信息,包括临时文件名、大小、类型、错误码等。

14.下列关于PHP异常处理的描述,错误的是()A.try块中抛出的异常会被对应的catch块捕获B.无论是否抛出异常,finally块中的代码都会执行C.PHP8.0之后所有的错误都会以异常的形式抛出D.自定义异常类需要继承Exception基类答案:C解析:PHP8.0之后大部分致命错误和运行时错误会转为Error异常抛出,但仍有部分警告级别的错误不会转为异常,可通过set_error_handler()自定义处理。RESTful接口设计中,用于表示删除资源的HTTP请求方法是()A.GETB.POSTC.PUTD.DELETE答案:D解析:RESTful规范中,GET用于查询资源,POST用于创建资源,PUT用于更新资源,DELETE用于删除资源。二、多项选择题(共8题,每题3分,共24分,多选、少选、错选均不得分)下列属于PHP8.x版本新增特性的有()A.枚举(Enum)B.纤维(Fiber,协程支持)C.构造器属性提升D.标量类型声明答案:ABC解析:枚举是PHP8.1新增,纤维是PHP8.1新增,构造器属性提升是PHP8.0新增;标量类型声明是PHP7.0新增的特性。PHP项目中防范SQL注入的常用手段有()A.使用PDO预处理语句B.对输入参数进行类型强制转换C.使用ORM组件的查询构造器D.对输入的特殊字符使用addslashes()转义答案:ABC解析:PDO预处理、参数类型转换、ORM查询构造器都是防范SQL注入的有效手段;addslashes()的转义规则存在漏洞,无法完全防范SQL注入,不推荐使用。下列属于PDO优势的有()A.支持多种数据库,可实现数据库驱动的无缝切换B.支持预处理语句,天然防范SQL注入C.执行效率比原生MySQLi扩展高30%以上

D.支持事务处理答案:ABD解析:PDO的优势包括多数据库支持、预处理防注入、事务支持;PDO的执行效率略低于MySQLi原生扩展,不存在30%以上的性能优势。

4.下列Composer命令与作用对应正确的有()A.composerself-update:更新Composer自身版本B.composerremove:卸载已安装的依赖包C.composershow:查看已安装的依赖包列表D.composercreate-project:基于指定项目模板创建新项目答案:ABCD解析:四个选项的命令与作用描述均正确。PHP中Session的存储介质支持下列哪些选项()A.磁盘文件B.RedisC.MySQLD.Memcached答案:ABCD解析:PHP支持通过修改session.save_handler配置,将Session存储到磁盘、Redis、MySQL、Memcached等介质中。防范XSS跨站脚本攻击的常用手段有()A.对用户输出的内容使用htmlspecialchars()转义B.设置HTTP响应头Content-Security-PolicyC.对用户输入的脚本标签进行过滤D.使用CSRFToken验证请求答案:ABC解析:htmlspecialchars转义、CSP头设置、输入内容过滤都是防范XSS的有效手段;CSRFToken用于防范跨站请求伪造攻击,和XSS无关。下列关于PHP数组函数的描述,正确的有()A.array_map()会返回一个新数组,数组元素是回调函数处理后的结果B.array_walk()会直接修改原数组,不会返回新数组C.array_filter()用于过滤数组中的元素,默认会去除值为false的元素D.array_merge()合并索引数组时会保留原数组的键名答案:ABC解析:array_merge()合并索引数组时会重置数字键名,不会保留原索引键名,其余选项描述均正确。Laravel框架的中间件可用于实现下列哪些功能()A.用户登录状态验证B.请求参数过滤C.响应内容格式化D.数据库查询缓存答案:ABC解析:Laravel中间件用于处理HTTP请求的前后逻辑,可实现登录验证、参数过滤、响应格式化等功能;数据库查询缓存属于ORM层或数据层的功能,不属于中间件的典型应用场景。三、判断题(共10题,每题1分,共10分)isset()函数可以判断变量是否存在且不为null,empty()函数可以判断变量是否为“空”,包括0、’’、[]、null等情况。()答案:√解析:二者的特性描述符合PHP官方定义。PHP中函数参数默认是传值传递,若要传引用传递需要在参数前加&符号。()答案:√解析:PHP默认参数传递为值传递,引用传递需显式添加&声明。

3.PHP8.0引入的JIT编译器可以显著提升所有类型PHP项目的执行性能。()答案:×解析:JIT编译器对CPU密集型的PHP项目性能提升明显,对传统Web请求响应型的项目提升幅度很小。PDO预处理语句可以防范所有类型的SQL注入攻击。()答案:√解析:PDO预处理会将参数和SQL语句分离,参数会被当做纯字符串处理,不会被解析为SQL指令,可完全防范SQL注入。Cookie的作用域默认是当前域名下的所有路径,可通过setcookie()的参数修改作用域。()答案:×解析:Cookie默认作用域是当前设置Cookie的路径,需设置path参数为/才能作用于整个域名。命名空间的导入use语句必须写在文件的最顶部,不能写在代码块内部。()答案:×解析:PHP支持在代码块内部使用use导入命名空间,仅作用于当前代码块范围内。PHP弱类型特性下,‘123abc’==123的返回值为true。()答案:√解析:松散比较时,字符串开头的数字会被转换为整数参与比较,因此该表达式结果为true。Laravel框架的路由配置默认存储在app/Route目录下。()答案:×解析:Laravel8及以上版本的路由默认存储在项目根目录的routes目录下。spl_autoload_register()函数用于注册自定义自动加载函数,可实现类的自动加载。()答案:√解析:该函数是PHP实现自动加载的核心方法,Composer的自动加载就是基于该函数实现的。开启OPcache后,修改PHP脚本代码会立即生效,无需等待缓存过期。()答案:×解析:OPcache会缓存编译后的Opcode,默认配置下修改代码后需等待缓存过期或重启服务才会生效,可配置opcache.validate_timestamps=1开启时间验证,定期检查文件是否更新。四、填空题(共10空,每空1分,共10分)PHP的底层执行引擎名为______。答案:Zend引擎PHP8.0及以上版本开启严格类型模式的声明语句为______。答案:declare(strict_types=1);Composer的依赖配置文件名为______。答案:composer.jsonPHP中用于捕获所有未处理异常的全局函数名为______。答案:set_exception_handler()Laravel框架中用于生成CSRFToken的全局辅助函数名为______。答案:csrf_token()Redis扩展中用于连接Redis服务的方法名为______。答案:connect()PHP中获取当前时间戳的函数名为______。答案:time()PDO中开启事务的方法名为______。答案:beginTransaction()PHP中用于序列化对象的函数名为______。答案:serialize()PHP中将数组转换为JSON格式字符串的函数名为______。答案:json_encode()五、简答题(共2题,每题6分,共12分)请简述PHP8.0相对于PHP7.4的5个核心新特性及作用。答案:(1)命名参数:调用函数时可按参数名传递参数,无需遵循参数定义顺序,提升含多可选参数函数调用的可读性。(2)联合类型:支持使用|分隔多个类型声明参数或返回值的类型范围,提升类型系统的灵活性。

(3)match表达式:替代switch语句的表达式写法,支持严格比较、返回值、默认异常抛出,减少代码冗余。(4)构造器属性提升:可直接在构造函数参数中声明类属性,无需额外定义属性和赋值操作,简化类的定义代码。(5)JIT编译器:引入即时编译能力,显著提升CPU密集型PHP项目的执行性能。(6)空安全运算符?->:调用属性或方法前自动判断变量是否为null,避免空指针错误,简化判空代码。(答出任意5个即可得满分)请简述PHP项目中防范CSRF跨站请求伪造攻击的原理和常用实现手段。答案:CSRF攻击的原理是攻击者利用用户已登录的会话状态,诱导用户在第三方站点发起对目标站点的请求,冒用用户身份执行操作。常用实现手段:(1)CSRFToken验证:服务端生成随机Token存储在Session中,用户提交表单或请求时携带该Token,服务端验证Token是否一致,攻击者无法获取到用户的Token,因此无法伪造合法请求。(2)同源检测:服务端验证请求头中的Origin或Referer字段,判断请求是否来自合法域名,拦截第三方站点的请求。(3)双重Cookie验证:将Token存储在Cookie中,请求时从Cookie中取出Token放到请求头或参数中,服务端验证二者是否一致,利用跨站请求无法获取Cookie内容的特性防范攻击。(4)敏感操作添加二次验证,比如短信验证码、密码确认,即使攻击者伪造请求也无法完成验证。(原理2分,手段答出任意4个得4分,满分6分)六、编程题(共2题,每题7分,共14分)请编写一个PHP8+兼容的函数,实现以下功能:(1)接收一个一维数组作为输入;(2)去除数组中的重复值,保留原数组的键名;(3)将数组按照值降序排序,键名保持和去重后的对应关系;(4)返回处理后的数组。答案:‘a’,3=>‘c’,2=>‘b’,5=>‘c’,4=>‘a’];

var_dump(handleArray($testArr));

//输出结果:array(3){[3]=>string(1)“c”[2]=>string(1)“b”[1]=>string(1)“a”}?>解析:使用array_unique()去重时默认保留第一个出现的元素的键名,arsort()函数实现按值降序排序且保留原键名,符合要求,代码兼容PHP7.0及以上版本,添加了PHP8支持的参数和返回值类型声明,可读性强。请编写一个基于PDO的用户登录查询功能,实现以下要求:(1)接收用户名和密码两个POST参数;(2)使用预处理语句查询users表,避免SQL注入;(3)验证密码(密码存储为bcrypt哈希值);(4)验证成功后将用户ID存储到Session中,返回JSON格式的成功响应,失败返回对应错误提示。答案:400,‘msg’=>‘用户名和密码不能为空’]);exit;}try{//PDO连接数据库,配置异常模式和默认返回格式

$pdo=newPDO(

'mysql:host=;dbname=test;charset=utf8mb4',

'root',

'root',

[

PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,

PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC

]

)

温馨提示

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

评论

0/150

提交评论