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

下载本文档

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

文档简介

PHP开发工程师笔试真题(含详细答案)适用岗位:PHP初级/中级开发工程师|考试时长:90分钟|满分:100分一、PHP基础选择题(每题3分,共30分)1、PHP中以下变量名合法的是?()A、$123name  B、$name_123  C、$name-123  D、$class答案:B解析:PHP变量以$开头,首字符不能是数字,只能由字母、数字、下划线组成;A数字开头非法,C包含特殊符号非法,D是PHP预留关键字,不可作为普通变量名。2、以下不属于PHP数据类型的是?()A、String  B、Float  C、Boolean  D、Char答案:D解析:PHP标量数据类型包含字符串、整型、浮点型、布尔型,无单独的Char字符类型,单个字符也统一按照字符串类型处理。3、PHP中===和==的区别,说法正确的是?()A、无区别  B、==只比较值,===同时比较值和类型  C、===只比较值,==同时比较值和类型  D、==优先级更高答案:B解析:==宽松比较,仅对比变量值,会自动进行类型转换;===严格比较,必须值和数据类型完全一致才返回true,开发中推荐优先使用严格比较。4、以下哪个函数可以获取字符串长度?()A、count()  B、strlen()  C、mb_strlen()  D、length()答案:B解析:strlen()获取字节长度,适用于英文、数字字符串;mb_strlen()用于获取中文字符长度(需开启mb扩展);count()用于统计数组元素个数;PHP无length()函数。5、PHP中session和cookie的区别,错误的是?()A、cookie存储在客户端,session存储在服务端  B、session更安全  C、cookie可永久保存,session默认浏览器关闭失效  D、两者都无法手动设置过期时间答案:D解析:cookie可通过expires参数设置过期时间,session可通过修改php.ini配置或代码设置过期时长,二者均支持手动设置过期时间。6、以下哪个不是PHP的超全局变量?()A、$_GET  B、$_POST  C、$_SERVER  D、$GLOBALS  E、$_INFO答案:E解析:PHP预设超全局变量包含$_GET、$_POST、$_SERVER、$_COOKIE、$_SESSION、$_FILES、$_ENV、$GLOBALS,无$_INFO。7、PHP中exit和die的关系是?()A、完全不同  B、die是exit的别名,功能一致  C、exit终止程序,die仅输出信息  D、die优先级更高答案:B解析:die()和exit()功能完全一致,属于同义函数,均可终止当前脚本执行,同时支持传入字符串作为终止提示信息。8、遍历关联数组,同时获取键和值的函数是?()A、for  B、foreach  C、while  D、do-while答案:B解析:foreach是PHP专属的数组遍历方式,支持foreach($arras$key=>$value)同时获取键名和键值;for、while仅适用于索引数组或固定循环场景。9、PHP中开启错误显示的配置项是?()A、error_reporting  B、display_errors  C、log_errors  D、track_errors答案:B解析:display_errors控制是否在页面展示错误信息;error_reporting控制错误报告的级别;log_errors控制是否记录错误日志。10、预防SQL注入最有效的方式是?()A、使用trim过滤  B、使用addslashes转义  C、使用PDO预处理语句  D、屏蔽特殊字符答案:C解析:PDO/MYSQLI预处理语句可彻底杜绝SQL注入,是企业标准方案;addslashes、字符屏蔽仅能简单防护,存在绕过漏洞,安全性极低。二、PHP基础填空题(每空2分,共20分)1、PHP中定义常量的两种方式是______和______。答案:define()、const2、PHP中销毁单个变量的函数是______,销毁数组中某个元素可使用______。答案:unset()、unset()3、获取当前时间戳的函数是______。答案:time()4、将数组转为JSON字符串的函数是______,将JSON字符串转为数组的函数是______。答案:json_encode()、json_decode()5、PHP中实现文件包含的四个函数是______、______、______、______。答案:include、include_once、require、require_once解析:include/require重复包含会重复执行,include_once/require_once仅包含一次;include失败抛出警告,脚本继续执行;require失败抛出致命错误,脚本终止。三、简答题(每题6分,共30分)1、简述include和require的区别?答案:1)错误级别不同:include引入文件失败时,仅产生E_WARNING警告,当前脚本可以继续执行;require引入文件失败时,产生E_COMPILE_ERROR致命错误,脚本立即终止运行。2)使用场景不同:适用于非核心文件引入(如广告、侧边栏)用include,文件缺失不影响主程序运行;核心配置、核心函数文件引入用require,必须保证文件存在,否则程序无法正常运行。3)配套衍生函数:include_once/require_once可避免文件重复包含导致的函数重定义、变量重复赋值问题。2、简述GET和POST请求的区别?答案:1)参数传递方式:GET参数拼接在URL地址栏中,POST参数放在请求体中。2)数据大小限制:GET有URL长度限制,无法传输大数据;POST无明确大小限制,可上传文件、长文本数据。3)安全性:GET参数暴露在地址栏,可被缓存、历史记录保存,安全性差;POST参数隐藏,相对安全,适合传输账号、密码等敏感数据。4)缓存特性:GET请求默认可被浏览器缓存,POST请求默认不缓存。5)书签支持:GET请求可保存为书签,POST无法保存书签。3、什么是PHP面向对象的三大特性?分别简单说明。答案:1)封装:将类的属性和方法私有化,通过公有方法对外提供访问和修改接口,隐藏内部实现细节,保证数据安全性,降低代码耦合度。2)继承:子类可以继承父类的公有、受保护属性和方法,实现代码复用,减少重复代码,同时可重写父类方法实现业务拓展。3)多态:同一方法在不同子类中实现不同的执行效果,基于方法重写实现,提高代码的灵活性和扩展性。4、简述SESSION的工作原理?答案:1)用户首次访问PHP程序时,服务端会自动生成唯一的session_id,创建对应的session文件存储在服务端。2)服务端将session_id通过cookie的形式发送并保存到客户端浏览器。3)用户后续发起请求时,浏览器会自动携带cookie中的session_id提交给服务端。4)服务端根据接收的session_id匹配对应的session文件,读取用户会话数据,实现用户状态保持。5)浏览器关闭后,客户端cookie中的session_id失效,服务端session文件会在超时后自动清理。5、简述PHP中静态变量和普通变量的区别?答案:1)生命周期不同:普通变量在函数执行结束后立即销毁;静态变量(static修饰)在函数首次执行时初始化,脚本执行结束后才销毁。2)值保留特性:函数多次调用时,静态变量会保留上一次的赋值结果,不会重复初始化;普通变量每次调用都会重新初始化。3)作用域:二者作用域均局限于定义的函数内部,外部无法直接访问。四、数据库题型(每题7分,共14分)1、写出PDO连接MySQL数据库的通用代码,并实现查询一条用户数据。参考答案:PlainText

<?php

//数据库配置

$db_host='127.0.0.1';

$db_user='root';

$db_pwd='root';

$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);

//预处理查询(防SQL注入)

$id=1;

$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());

}

?>2、简述MySQL索引的作用,以及哪些场景不适合建立索引?答案:索引作用:大幅提升数据库查询效率,减少数据库全表扫描,通过索引快速定位数据行,降低IO消耗;可有效加速where条件查询、排序、分组、关联查询。不适合建索引的场景:1)数据量极小的表,索引维护成本高于查询收益;2)频繁更新、新增、删除的字段,索引会增加数据修改的开销;3)重复值极高的字段(如性别、状态),索引区分度低,无法提升查询效率;4)经常参与运算、函数处理的字段,索引会失效。五、编程实操题(6分)题目:写一个PHP函数,实现去除数组中重复的值,保留原数组顺序,返回去重后的新数组。(禁止直接使用array_unique函数)参考答案:PlainText

<?php

functionarray_remove_repeat($arr)

{

//定义空数组存储已存在的值

$temp=[];

$new_arr=[];

foreach($arras$val){

//判断值未存在则存入新数组

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

$temp[]=$val;

$new_arr[]=$val;

}

}

return$new_arr;

}

//测试案例

$test_arr=[1,2,2,3,1,4,5,3];

$res=array_remove_repeat($test_arr);

print_r($res);

//输出结果:Array([0]=>1[1]=>2[2]=>3[3]=>4[4]=>5)

?>六、综合面试常考题(附加10分)1、简述PHP的垃圾回收机制?答案:PHP采用引用计数机制管理内存,每个变量都有对应的引用计数:变量被赋值、被引用时计数+1,变量销毁、赋值清空时计数-1。当引用计数为0时,系统自动释放该变量占用的内存。针对循环引用导致的内存泄漏问题,PHP提供了垃圾回收周期机制,定期扫描检测无效的

温馨提示

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

评论

0/150

提交评论