PHP基础面试题

本文整理了PHP面试中常见的问题,包括echo(),print(),print_r(),var_dump()的区别、HTTP状态码、PHP中的session与cookie、传值与传引用、PHP函数与控制结构、错误处理、对象操作、缓存、版本控制、面向对象编程和PHP运行模式等核心知识点,旨在帮助开发者准备PHP面试。" 118652264,9643173,Vue3 插件开发详解,"['Vue', 'JavaScript', 'plugin', 'Vue.js']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、echo(),print(),print_r(),var_dump()的区别?

2、表单中 get与post提交方法的区别?

3、session与cookie的区别?

 4、请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?

5、HTTP 状态中302、403、 500代码含义?

6、语句include和require的区别是什么?为避免多次包含同一文件,可用什么语句代替它们?

7、php垃圾回收机制

8、堆和栈的区别?

9、php垃圾回收机制

10.数组排序有冒泡排序法、选择排序法、插入排序法和快速排序法。

11、双引号和单引号的区别

12、请解释PHP中的GD库是什么?

13、如何实现不基于session和cookie的用户认证

14、git跟其他版本控制器有什么区别?

 15、PHP 中对象是按值传递还是按引用传递?

16、请解释PHP中的缓存是什么? 

17、请解释PHP中的Composer是什么?

18、 请解释PHP中的PSR是什么?

19、请解释PHP中的异常处理是什么

20、PHP常见运行模式

21、smarty是什么,有什么作用

22、isset() 和 empty() 区别

23、mb_strlen和str_len的区别? 

24、用PHP打印出前一天的时间格式是2023-5-10 22:21:21 

25、用PHP写出显示客户端IP与服务器IP的代码 

26、http 与 https 的区别

27、== 与 === 的区别 

28、mkdir()和@mkdir()之间有什么区别? 

29、for 和 foreach 有什么区别 

30、php7、php8 新特性

31、怎么实现跨域请求 ? 

32、静态路由和动态路由

33、分布式环境下Session怎么处理 

34、禁用Cookie的session使用方案 

35、unlink()、unset() 函数的作用是

36、PHP是什么?它的优点是什么?

37、 解释一下PHP中的面向对象编程(OOP)和面向过程编程(POP)的区别

38、PHP中如何处理文件的读取和写入

39、 什么是PHP中的超全局变量?列举几个常用的超全局变量。

 40、在PHP中error_reporting这个函数有什么作用? 

41、PHP如何实现页面跳转几种方式 

42、如果需要原样输出用户输入的内容,在数据入库前,要用哪个函数处理

43、php实现字符串反转的几种方式 

44、PHP中的错误类型

45、权限管理(RBAC)的实现 

46、PHP如何实现静态化 

47、请解释PHP中的变量作用域

 48、如何在PHP中定义常量?

49、 PHP处理数组的常用函数?

50、PHP处理字符串的常用函数?

51、PHP处理时间的常用函数有

52、AJAX的优势是什么?

53、php 数组底层实现原理 

54、while循环和do循环 区别

55、&和&&操作符有什么区别? 

56、如何原地交换两个变量的值?


1、echo(),print(),print_r(),var_dump()的区别?
echo是PHP语句, print和print_r、dump是函数
echo没有返回值 输出一个或者多个字符串
print()只能打印出简单类型变量的值(如int,string)
print_r() 可以打印出复杂类型变量的值(如数组,对象)
dump()可以打印所有类型变量,并且可以输出具体信息类型和长度
2、表单中 get与post提交方法的区别?
get是发送请求HTTP协议通过url参数传递进行接收
而post是实体数据,可以通过表单提交大量信息.
3、session与cookie的区别?
session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的一般
用于后台和安全性比较高的地方。
cookie:是存储在客户端,对于Cookie来说是存储在用户浏览器下面的,一般用户
登陆,负载压力比较大的地方。可以减轻服务器的负载。
 4、请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,
这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。
5、HTTP 状态中302、403、 500代码含义?
302:临时转移成功,请求的内容已转移到新位置
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
500 (服务器内部错误) 服务器遇到错误,无法完成请求
6、语句include和require的区别是什么?为避免多次包含同一文件,可用什么语句代替它们?
区别:
在失败的时候:
include产生一个warning,而require产生直接产生错误中断
require在运行前载入
include在运行时载入
代替:
require_once
include_once
7、php垃圾回收机制
自动释放程序不需要内存块,对象被变量引用时,引用计数器+1,
执行unset后,计数器-1,计数器=0或脚本执行完,对象销毁,垃圾回收完成
(php7后null,bool,int和double的类型变量不计数)
8、堆和栈的区别?
A、堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小;
B、栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义。
9、php垃圾回收机制
自动释放程序不需要内存块,对象被变量引用时,引用计数器+1,
执行unset后,计数器-1,计数器=0或脚本执行完,对象销毁,垃圾回收完成
(php7后null,bool,int和double的类型变量不计数)
10.数组排序有冒泡排序法、选择排序法、插入排序法和快速排序法。
1、冒泡排序法。冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快
2、选择排序法。选择法的原理是先将第一个数与后面的每一个数依次比较,不断将将小的赋给第一个数,从而找出最小的值。
3、插入排序法。插入排序对少量元素的排序较为有效。
4、快速排序法。快速排序法的原理是通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
11、双引号和单引号的区别
双引号解释变量,单引号不解释变量

双引号里插入单引号,其中单引号里如果有变量的话,变量解释

双引号的变量名后面必须要有一个非数字、字母、下划线的特殊字符,或者用{}讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法错误

双引号解释转义字符,单引号不解释转义字符,但是解释’\和\

能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)
12、请解释PHP中的GD库是什么?
GD库是一种PHP扩展,用于生成和操作图像。GD库提供了一组函数,可以创建和操作图像,例如绘制线条、矩形、圆形和多边形等,也可以处理图像,例如缩放、裁剪和旋转等。
13、如何实现不基于session和cookie的用户认证
可以通过使用令牌(token)来实现用户认证,可以通过请求头或者URL参数的方式传递。
14、git跟其他版本控制器有什么区别?

GIT是分布式版本控制系统,其他类似于SVN是集中式版本控制系统。

分布式区别于集中式在于:每个节点的地位都是平等,拥有自己的版本库,在没有网络的情况下,对工作空间内代码的修改可以提交到本地仓库,此时的本地仓库相当于集中式的远程仓库,可以基于本地仓库进行提交、撤销等常规操作,从而方便日常开发。

 15、PHP 中对象是按值传递还是按引用传递?
在 PHP 中,对象是按引用传递的。这意味着当将一个对象赋值给另一个变量或将对象作为参数传递给函数时,实际上是传递对象的引用,而不是对象的副本。 当对象被赋值给一个新的变量时,两个变量将引用同一个对象。对其中一个变量所做的更改也会影响到另一个变量。 示例代码:
class MyClass {
    public $property;
}
$obj1 = new MyClass();
$obj1->property = 'Value';
$obj2 = $obj1; // 将$obj1赋值给$obj2
$obj2->property = 'New Value';
echo $obj1->property; // 输出 "New Value"
16、请解释PHP中的缓存是什么? 

缓存是一种将数据存储在内存或其他快速介质中的技术,以便快速地访问和提高应用程序的性能。在PHP中,可以使用缓存库,例如Memcached和Redis等,来实现缓存,可以将数据存储在内存中,并提供快速的访问和查询。 

17、请解释PHP中的Composer是什么?

Composer是一种PHP依赖管理工具,可以自动化地安装、更新和管理PHP包和依赖项。在PHP中,可以使用Composer来管理应用程序的依赖项,以便于开发人员快速地构建和部署PHP应用程序

18、 请解释PHP中的PSR是什么?

PSR(PHP Standard Recommendation)是一组PHP标准,旨在提高PHP代码的互操作性和可读性。PSR包括PSR-1、PSR-2、PSR-3、PSR-4和PSR-7等标准,涵盖了编码风格、自动加载、日志和HTTP消息等方面

19、请解释PHP中的异常处理是什么

异常处理是一种处理程序错误和异常情况的技术,可以使应用程序在出现错误时更加健壮和可靠。在PHP中,可以使用try/catch块来捕获和处理异常,可以使用throw语句来抛出自定义异常,以便于更好地管理和处理错误。

20、PHP常见运行模式

在PHP中,常见的运行模式有以下几种:

  1. CGI模式(Common Gateway Interface):CGI模式是最早的PHP运行模式,每次请求都会启动一个独立的进程来处理,适用于简单的网站或者低并发的场景。由于进程的创建和销毁开销较大,性能相对较低。
  2. 模块(Module)模式:在Web服务器中,将PHP解析器作为一个模块嵌入到服务器中,与服务器进程共享内存空间,通过内部函数调用来处理PHP脚本。模块模式具有较高的性能,适用于高并发的场景。
  3. FastCGI模式(Fast Common Gateway Interface):FastCGI是一种性能较高的CGI模式,通过保持PHP解析器的进程常驻内存,减少了进程的创建和销毁开销。FastCGI模式适用于高并发的Web应用程序。
  4. CLI模式(Command Line Interface):CLI模式是通过命令行方式运行PHP脚本,适用于一些后台任务、脚本执行等不需要通过Web服务器访问的场景。
  5. PHP-FPM(PHP FastCGI Process Manager)模式:PHP-FPM是一种基于FastCGI的PHP进程管理器,通过独立的进程管理和处理PHP请求。PHP-FPM模式适用于高并发的Web应用程序,可以配置进程池、线程数等参数,提高PHP应用的性能和稳定性。 根据实际需求和场景选择合适的PHP运行模式可以提高程序的性能和稳定性。
21、smarty是什么,有什么作用

它的作用是将PHP代码与HTML代码分离,使开发者可以更方便地管理和维护前端代码。Smarty通过使用模板标签和变量替代PHP代码,实现了模板与业务逻辑的分离。它可以帮助开发者更好地组织和重用模板代码,提高开发效率和代码可维护性。Smarty支持模板继承、条件判断、循环、过滤器等功能,可以灵活地适应各种模板需求。同时,Smarty还提供了插件机制,允许开发者自定义扩展功能,满足更复杂的业务需求。总之,Smarty在PHP开发中起到了简化模板设计和开发过程、提高代码可读性和可维护性的作用。

22、isset() 和 empty() 区别
  1. isset() 函数用于检查一个变量是否已经被声明并且值不是NULL。如果变量存在且值不为NULL,则返回true;否则返回false。
  2. empty() 函数用于检查一个变量是否为空。当一个变量为以下情况时,被视为空:
    • 该变量为假(false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHPlai

啦啦啦啦啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值