PHP实习生面试题(含详细真实答案)_第1页
PHP实习生面试题(含详细真实答案)_第2页
PHP实习生面试题(含详细真实答案)_第3页
PHP实习生面试题(含详细真实答案)_第4页
PHP实习生面试题(含详细真实答案)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

PHP实习生面试题(含详细真实答案)整套试题适配零基础、应届、实习岗面试,题目高频实用,答案贴合日常开发工作,通俗易懂,无书面化套话,完全贴合企业初级PHP面试真实考核标准。一、PHP基础语法篇(必考)1、PHP中常量和变量的区别?各自如何定义?参考答案:变量是可以随时修改、销毁的动态数据,常量是一旦定义就无法修改、全程固定的数据。定义方式:1)变量:以$开头,弱类型,不用声明类型,例:$name='张三';2)常量:有两种定义方式,define()全局常量,const类内/全局常量。示例:define('WEB_NAME','测试网站');//全局可用constAPP_VERSION='1.0';//可用于类内部核心区别:变量可改、可销毁、有作用域;常量不可改、不可销毁、默认全局,大小写默认敏感。2、PHP数据类型有哪些?常用的标量类型是什么?参考答案:PHP数据类型分为四大类:标量、复合、特殊、资源类型。常用标量类型(日常开发90%用到):1)字符串(string):文字、字符内容2)整型(int):整数数字3)浮点型(float):小数数字4)布尔型(bool):true/false复合类型:数组、对象;特殊类型:null、资源。3、echo、print、var_dump的区别?参考答案:1)echo:最常用,无返回值,可一次性输出多个变量,速度最快,多用于页面普通输出;2)print:有返回值(固定返回1),只能输出单个值,速度比echo慢,用得少;3)var_dump:调试专用,会输出变量的类型、值、长度,可以打印数组、对象等复杂数据,开发调试必备,线上代码禁止使用。4、PHP中==和===的区别?参考答案:1)==是弱等于,只对比数值,会自动转换数据类型;例:0=='0'、null==''结果都是true;2)===是强等于,同时对比数值和数据类型,不会自动转型,更严谨。实习开发规范:判断数值、状态、参数时,优先使用===避免隐性BUG。5、session和cookie的区别?参考答案:1)存储位置:cookie存在客户端浏览器,session存在服务器端;2)安全性:session更安全,用户无法修改;cookie可被查看、篡改,不能存敏感数据;3)存储大小:cookie容量小,一般4KB以内;session无严格限制;4)生命周期:cookie可设置过期时间,可长期保存;session默认浏览器关闭即失效;5)依赖关系:session依赖cookie存储session_id,关闭浏览器cookie后,session无法正常使用。6、PHP超全局变量有哪些?常用的是哪几个?参考答案:超全局变量是全局任意位置都能直接使用的系统变量,常用5个:1)$_GET:获取URL地址栏传参数据2)$_POST:获取表单POST提交数据3)$_REQUEST:同时接收GET和POST数据(开发不推荐,不安全)4)$_SESSION:获取/设置会话数据5)$_COOKIE:获取浏览器cookie数据7、include和require的区别?include_once和require_once作用?参考答案:1)include:引入文件失败后,抛出警告,程序继续运行;2)require:引入文件失败后,抛出致命错误,程序终止运行;3)include_once/require_once:只引入一次,防止重复引入文件导致函数、类重复定义报错。开发规范:核心配置、核心函数文件用require,模板、视图文件用include。二、数组与函数篇(实习高频)1、PHP常用数组函数有哪些?分别说说用途参考答案:整理实习开发最常用的核心函数:1)count():统计数组元素个数2)array_push():数组尾部添加元素3)array_pop():删除数组尾部元素4)array_merge():合并多个数组5)array_key_exists():判断数组指定键名是否存在6)in_array():判断指定值是否在数组中7)array_values():重置数组键名,转为连续索引数组8)array_filter():过滤数组空元素、指定条件元素2、简述PHP函数的静态变量static作用参考答案:普通函数变量每次调用都会重新初始化,执行完毕销毁;static静态变量,函数调用结束后不会销毁,下次调用函数会沿用上次的值。常用于统计函数调用次数、接口请求计数等场景。3、传值赋值和传址赋值的区别?参考答案:1)传值:默认方式,复制一份数据,修改新变量不会影响原变量;2)传址(&):两个变量指向同一个内存地址,修改新变量,原变量同步改变。开发中一般只在需要批量修改原数组、原数据时使用传址,日常尽量少用,避免数据错乱。三、MySQL数据库篇(实习必问)1、PHP连接MySQL的两种方式?区别是什么?参考答案:两种方式:MySQLi(面向对象/面向过程)、PDO1)MySQLi:只支持MySQL数据库,适配单一,轻量简单,适合小型项目;2)PDO:支持MySQL、Oracle、SQLite等多种数据库,通用性强,支持预处理语句,防SQL注入效果更好,主流项目首选。实习开发中,现在企业基本优先使用PDO。2、什么是SQL注入?如何防范?参考答案:SQL注入是用户恶意输入特殊字符、SQL语句,篡改原本的数据库查询逻辑,实现拖库、删表、盗数据的攻击方式。常用防范手段:1)使用PDO/MySQLi预处理语句+参数绑定(最核心、最有效);2)禁止直接拼接SQL语句,所有变量参数统一占位符传入;3)对用户输入做过滤、转义、正则校验;4)数据库账号权限最小化,禁止使用root账号运行项目。3、数据库索引的作用?哪些字段适合建索引?参考答案:索引作用:类比书籍目录,大幅提升查询速度,减少数据库扫描行数。适合建索引的字段:1)经常用于where查询、排序、分组的字段;2)主键、唯一字段;不适合建索引:更新、删除、新增极其频繁的字段,会降低写入性能。4、简述MySQL事务及四大特性参考答案:事务是用来保证一组SQL语句要么全部执行成功,要么全部回滚失败,不会出现一半成功一半失败的情况,常用于支付、订单、转账场景。四大特性(ACID):1)原子性:整体不可分割,全成或全败;2)一致性:事务前后数据状态一致,不会出现数据错乱;3)隔离性:多个事务互不干扰;4)持久性:事务提交成功后,数据永久保存,不会丢失。四、Web安全与基础面试题1、XSS攻击是什么?如何防范?参考答案:XSS是跨站脚本攻击,用户输入恶意JS代码,页面渲染时执行,实现盗取cookie、弹窗、跳转恶意链接等操作。防范方式:1)输出数据到页面时,使用htmlspecialchars()转义特殊字符;2)对用户输入内容做过滤,禁止恶意脚本标签;3)设置浏览器安全头参数。2、CSRF攻击是什么?简单说下防范思路参考答案:CSRF是跨站请求伪造,利用用户已登录的状态,诱导用户在第三方网站发起恶意请求,操作本站数据。最常用防范方式:表单、接口请求加入Token令牌验证,每次请求校验唯一token,非法请求直接拦截。3、GET和POST区别?参考答案:1)传参方式:GET参数拼接在URL地址栏,POST参数放在请求体;2)安全性:GET参数可见、可缓存,不安全;POST相对安全;3)数据大小:GET有URL长度限制,无法传大数据;POST无明显限制,可传文件、长文本;4)缓存:GET会被浏览器缓存,POST不会;5)场景:查询、列表、搜索用GET;新增、修改、提交表单用POST。五、ThinkPHP框架基础(实习生90%会考)1、简述ThinkPHP的MVC架构参考答案:MVC是项目分层思想,职责分离,方便维护:1)M(Model模型):负责数据库操作,查询、新增、修改、删除数据;2)V(View视图):负责页面展示、前端模板渲染;3)C(Controller控制器):负责接收请求、调用模型、返回数据、处理业务逻辑。2、ThinkPHP中I()方法、input()方法作用?参考答案:都是框架封装的获取请求参数的方法,自带基础过滤,比原生$_GET、$_POST更安全。TP5主推input()方法,兼容各种请求方式,支持默认值、强制类型转换,是日常开发首选。3、ThinkPHP如何实现分页?简单说下流程参考答案:1)在控制器中通过模型调用paginate()方法,自动处理分页数据;2)paginate()会自动识别页码,返回分页数据集和分页渲染模板;3)将分页数据赋值到模板,前端直接输出分页按钮即可,无需手动计算总页数、偏移量。六、实操手写代码题(面试现场常考)1、手写PHP连接MySQL(PDO方式,简洁版)参考答案:php

<?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=utf8";

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

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

echo'数据库连接成功';

}catch(PDOException$e){

echo'连接失败:'.$e->getMessage();

}

?>2、手写代码:去除数组中重复元素参考答案:php

<?php

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

$new_arr=array_unique($arr);

//重置键名

$new_arr=array_values($new_arr);

print_r($new_arr);

?>3、简单写一个PHP文件上传基础代码参考答案:php

<?php

if($_FILES['file']){

//获取上传文件信息

$name=$_FILES['file']['name'];

$tmp=$_FILES['file']['tmp_name'];

//保存路径

$save_path='./upload/'.$name;

//移动上传文件

if(move_uploaded_file($tmp,$save_path)){

echo'上传成功';

}else{

echo'上传失败';

}

}

?>

<formmethod="post"enctype="multipart/form-data">

<inputtype="file"name="file">

<buttontype="submit">上传</button>

</form>七、面试主观问答(自我介绍/工作认知)1、你为什么选择PHP开发?参考回答(自然口语化):我学习过程中发现PHP上手简单、开发效率高,

温馨提示

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

最新文档

评论

0/150

提交评论