PHP乱七八糟面试题
1、请解释PHP中的JWT是什么?
JWT(JSON Web Token)是一种用于认证和授权的标准,可以在不同的系统之间安全地传递信息。 在PHP中,可以使用各种JWT库来生成和解析JWT,JWT包含了一些元数据和签名, 可以在请求和响应中传递,并且可以使用密钥来验证和解密。
2、请解释PHP中的消息队列是什么?
消息队列是一种异步通信机制,可以将数据和任务异步地发送到队列中,并由消费者异步地处理 在PHP中,可以使用各种消息队列系统,例如RabbitMQ、Kafka和Redis等, 可以将数据和任务放到队列中,并由消费者异步地处理。
3、MongoDB与es的区别:
1、es是java编写,通过RESTFul接口操作数 据。mongodb是C++编写,通过driver操作数据。(es对java开发更有好,利于排查理解) 2、mongodb的分片有hash和range两种方式,es只有hash一种。 3、es是天生分布式,主副分片自动分配和复制,开箱即用。mongodb的分布式是由“前置查询路由+配置服务+shard集合”,需要手动配置集群服务。 4、内部存储ES是到排索引+docvalues+fielddata。mongodb的b+tree。 5、es全文检索有强大的分析器且可以灵活组合,查询时智能匹配。mongodb的全文检索字段个数有限制。 6、es所有字段自动索引,mongodb的字段需要手动索引。 7、es非实时有数据丢失窗口。mongodb实时理论上无数据丢失风险
4、请解释PHP中的协程是什么?
协程是一种轻量级的线程,可以在单个线程中实现多个任务的并发执行。在PHP中,可以使用Generator函数来实现协程,Generator函数可以在函数执行过程中暂停和恢复执行,以实现协程的效果。
5、请解释PHP中的并发是什么?
并发是一种多任务处理方式,可以在同一时间内处理多个任务,以提高应用程序的性能和响应速度。在PHP中,可以使用多线程、多进程、协程和异步IO等技术来实现并发。
6、请解释PHP中的异步IO是什么?
异步IO是一种IO操作方式,可以在进行IO操作时不阻塞应用程序的执行,以提高应用程序的性能和响应速度。在PHP中,可以使用swoole扩展来实现异步IO操作,swoole扩展提供了一组异步IO操作的接口,例如异步TCP/UDP服务器、异步HTTP服务器和异步MySQL客户端等。
7、TCP三次握手四次挥手
TCP(Transmission Control Protocol)是一种面向连接的可靠传输协议。为了建立连接和关闭连接,TCP使用了三次握手和四次挥手的过程。三次握手(Three-Way Handshake):第一步:客户端发送一个带有SYN(同步)标志的数据包给服务器,请求建立连接。第二步:服务器收到客户端的请求后,回复一个带有SYN/ACK(同步/确认)标志的数据包给客户端,表示接受连接请求,并向客户端发送确认。第三步:客户端收到服务器的确认后,再次回复一个带有ACK标志的数据包给服务器,表示连接建立成功。此时,客户端和服务器都进入已连接状态。四次挥手(Four-Way Handshake):第一步:当客户端想要关闭连接时,发送一个带有FIN(结束)标志的数据包给服务器,表示不再发送数据。第二步:服务器收到客户端的结束请求后,回复一个带有ACK标志的数据包给客户端,表示服务器接受关闭请求。第三步:服务器发送一个带有FIN标志的数据包给客户端,表示服务器不再发送数据。第四步:客户端收到服务器的结束请求后,回复一个带有ACK标志的数据包给服务器,表示客户端接受关闭请求。此时,客户端和服务器都进入关闭状态。 通过三次握手,建立了客户端和服务器之间的连接。通过四次挥手,关闭了客户端和服务器之间的连接。这样可以保证数据的可靠传输和连接的正常关闭。
8、什么是RESTful API
RESTful API(Representational State Transfer)是一种基于HTTP协议的软件架构风格,用于设计网络应用程序的API(Application Programming Interface)。 RESTful API的设计原则包括以下几点: 资源(Resources):将网络上的各种实体(例如用户、文章、订单等)抽象为独立的资源,并通过URL(统一资源定位符)来表示这些资源。 统一接口(Uniform Interface):使用统一的HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作,并使用HTTP状态码来表示操作结果。 无状态(Stateless):每个请求都包含了足够的信息,服务器不需要维护会话状态。 可缓存(Cacheable):服务器可以设置响应的缓存策略,以降低网络传输和服务器负载。 分层系统(Layered System):通过分层结构,可以实现负载均衡、安全性等需求。 通过RESTful API,客户端可以通过发送HTTP请求来获取、创建、更新和删除资源。API的响应通常使用JSON(JavaScript Object Notation)或XML(eXtensible Markup Language)等格式进行数据交换。 RESTful API的设计使得不同的应用程序可以通过HTTP协议进行通信,实现了解耦、可扩展和易于维护的架构。它已成为设计和开发Web服务的一种常用方式。
9、长连接、短连接的区别和使用
长连接:client 方与 server 方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于 P2P 通信。
短连接:Client 方与 server 每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S 通信。
长连接与短连接的使用时机:
长连接:
短连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个 TCP 连 接的建立都需要三次握手,每个 TCP 连接的断开要四次握手。如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据 就可以了,不用再建立 TCP 连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成 socket 错误,频繁的 socket 创建也是对资源的浪 费。
短连接:
web 网站的 http 服务一般都用短连接。因为长连接对于服务器来说要耗费一定 的资源。像 web 网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都占有一个 连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。
10、请解释PHP中的WebSocket是什么
WebSocket是一种基于TCP协议的全双工通信协议,可以在Web浏览器和服务器之间建立持久连接,以实现实时通信。在PHP中,可以使用swoole扩展来实现WebSocket服务器,swoole扩展提供了一组WebSocket服务器的接口,可以处理WebSocket连接、消息和关闭等事件。
11、请解释PHP中的CI/CD是什么?
CI/CD(Continuous Integration/Continuous Deployment)是一种持续集成和持续部署的开发流程,可以实现快速、可靠和频繁地交付软件。在PHP中,可以使用各种CI/CD工具,例如Jenkins、GitLab CI和Travis CI等,可以自动化构建、测试、部署和监控PHP应用程序。 希望以上PHP高级面试题及其答案对您有所帮助。
12、请解释PHP中的多进程和多线程是什么
多进程和多线程是一种并发编程的技术,可以使应用程序在同一时间内执行多个任务。在PHP中,可以使用多进程和多线程来实现并发,例如使用fork函数创建子进程,或者使用pthreads扩展创建线程
13、如何在PHP中处理数据库连接和查询?
- 在PHP中,可以使用扩展如PDO或mysqli来进行数据库连接和查询。首先,使用相应的扩展创建数据库连接对象。然后,可以使用该对象执行SQL查询语句,如SELECT、INSERT、UPDATE和DELETE,并使用相应的方法获取结果。最后,记得关闭数据库连接。
14、什么是CDN?它的作用是什么?
CDN(Content Delivery Network)是一种分布式网络架构,用于将静态内容分发到全球各个节点,以提高内容的访问速度和用户体验。CDN的作用包括:
- 将内容缓存到离用户更近的节点,减少网络延迟。
- 分发负载,减轻源服务器的压力。
- 提供高可用性,当某个节点故障时可以自动切换到其他可用节点。
- 提供安全性,通过缓存和防火墙等技术来抵御DDoS攻击和恶意访问。
15、什么是ORM?ORM框架有什么优势?
ORM(Object-Relational Mapping)是一种将面向对象的编程语言与关系型数据库之间进行映射的技术。ORM框架的优势包括:
- 简化数据库操作,通过封装数据库的底层操作,开发人员可以使用面向对象的语法来操作数据库。
- 提高代码的可维护性和可重用性,通过使用对象和类来表示数据库表和记录,可以更好地组织和管理代码。
- 提高开发效率,ORM框架可以自动生成SQL语句,减少手写SQL的工作量。
- 跨数据库平台,ORM框架可以屏蔽不同数据库之间的差异,使得应用程序更易于迁移和扩展。
16、Swoole如何实现长连接
创建一个Swoole的Server对象,监听指定的IP地址和端口号。
- 在Server对象的onConnect回调函数中,处理客户端与服务器建立连接的事件。
- 在Server对象的onReceive回调函数中,处理接收到客户端数据的事件。
- 在Server对象的onClose回调函数中,处理客户端与服务器断开连接的事件。
- 在Server对象的start方法中启动Swoole服务器。 下面是一个简单的示例代码:
$server = new Swoole\Server('127.0.0.1', 9501); $server->on('Connect', function ($server, $fd) {echo "Client {$fd} connected." . PHP_EOL; }); $server->on('Receive', function ($server, $fd, $from_id, $data) {echo "Received data from client {$fd}: {$data}" . PHP_EOL; }); $server->on('Close', function ($server, $fd) {echo "Client {$fd} closed." . PHP_EOL; }); $server->start();
17、解释下 Gitflow 工作流程
主要分支:
- master分支:用于保存稳定的、可发布的代码。master分支只接受合并自release和hotfix分支的代码。
- develop分支:用于集成开发团队的所有功能性代码。开发团队的所有成员都应该基于develop分支进行开发。
辅助分支:
- feature分支:用于开发新功能或进行较大的代码改进。每个feature分支都从develop分支上创建,并在开发完成后合并回develop分支。
- release分支:用于准备发布新版本。release分支从develop分支上创建,并在进行最后的测试和修复后合并回develop分支和master分支。
- hotfix分支:用于修复线上发现的紧急问题。hotfix分支从master分支上创建,并在修复完成后合并回master分支和develop分支。
工作流程:
- 开发新功能:从develop分支上创建一个新的feature分支,进行开发和测试,完成后合并回develop分支。
- 准备发布:从develop分支上创建一个新的release分支,进行最后的测试和修复,完成后合并回develop分支和master分支,并打上版本标签。
- 修复问题:从master分支上创建一个新的hotfix分支,进行紧急问题的修复,完成后合并回master分支和develop分支,并打上新的版本标签。 通过Gitflow工作流程,团队成员可以并行开发多个功能,并且保持代码的稳定性和可发布性。它提供了明确的分支管理策略,使得团队成员之间的协作更加清晰和高效。同时,它也提供了一种灵活的方式来处理紧急问题的修复和版本发布。
相关文章:
PHP乱七八糟面试题
1、请解释PHP中的JWT是什么? JWT(JSON Web Token)是一种用于认证和授权的标准,可以在不同的系统之间安全地传递信息。 在PHP中,可以使用各种JWT库来生成和解析JWT,JWT包含了一些元数据和签名, …...
pom管理规范
0. 引言 在单机架构下,我们只需要将我们的依赖在pom中引入。但是过渡到微服务架构后,会涉及到多模块引用相同的依赖,多模版之间依赖的版本太过分散难以管理的问题。 这就需要我们利用maven中依赖传递的特性,结合dependencyManage…...
AI大模型的安全隐患问题与新兴Anthropic新势力涌动
引言: 无论从社会层面或技术层面,大模型的安全隐患都是一个不容小觑的话题。也正因此,ChatGPT 初兴起时,国内的 To C 大模型产品一时受阻。而尽管 9 月初第一批 8 家大模型通过备案,各家厂商对大模型的安全问题也不敢…...
slamplay:用C++实现的SLAM工具集
0. 项目简介 slamplay 是一个功能强大的工具集合,可用于开始使用 C 来玩和试验 SLAM。这是一项正在进行的工作。它在单个 cmake 框架中安装并提供一些最重要的功能 后端框架(g2o、gtsam、ceres、se-sync 等)、 前端工具(opencv、…...
IPT2602协议-USB 快速充电端口控制器
产品描述: IPT2602是一款USB端口快速充电协议控制芯片。IPT2602智能识别多种快速充电协议,对手机等受电设备进行快速充电。IPT2602根据受电设备发送的电压请求能够精确的调整VBUS输出电压,从而实现快速充电。 IPT2602在调整5V输出电压前会自动…...
Zotero 超好用插件的下载链接及配置方法(PDF-translate/ZotFile/茉莉花/Zotero Scihub)
目录 前言插件安装方法插件一:文献翻译插件(pdf-translate)插件二:文献附件管理(ZotFile)插件三:中文文献插件(茉莉花)插件四:Sci-Hub 自动下载文献ÿ…...
Titus网关中的缓存一致性机制
API网关引入缓存可以在不影响数据一致性的前提下,有效优化接口时延。本文介绍了Netflix在Titus网关上引入缓存的实践,比较了有无缓存对访问时延的影响。原文: Consistent caching mechanism in Titus Gateway 前言 Titus是Netflix的云容器运行时…...
flutter开发实战 - inappwebview设置cookie
flutter开发实战-inappwebview设置cookie 在使用inappwebview时候,需要设置cookie,这里记录一下 一、在initialUserScripts中设置cookie 在inappwebview中有一个initialUserScripts,可以初始化设置cookie等,我们可以通过该属性…...
零基础如何自学网络安全,基于就业前景全方位讲解,包教包会
你是否对网络空间安全充满好奇?想要解开网络世界神秘的面纱?你是否对黑客技术着迷?而找不到合适的学习途径?你是否遭到过各种各样的网络攻击,却因知识的匮乏束手无策? 那么接下来将为你全面介绍,…...
Java项目防止SQL注入的几种方案
目录 一、什么是SQL注入? 二、Java项目防止SQL注入方式 1、PreparedStatement防止SQL注入 2、mybatis中#{}防止SQL注入 3、对请求参数的敏感词汇进行过滤 4、nginx反向代理防止SQL注入 一、什么是SQL注入? SQL注入即是指web应用程序对用户输入数…...
Win11 安装安卓子系统方法教程
WIN11安装安卓子系统 准备工作下载安装安装完成使用adb连接子系统结束 准备工作 开启电脑中的 控制面板>>>>程序和功能>>启用或关闭Windows功能>>>找到“Hyper-V”,把勾都勾上,确定,完成安装,并重启电…...
golang pg 数据库不存在 就创建 --chatPGT
问:linkOrCreateDatabase(addr ), 函数执行 连接 pg数据库,若数据库 不存在就创建 gpt: 要在 Go 中连接到 PostgreSQL 数据库并在数据库不存在时创建数据库,你可以使用 github.com/lib/pq 包以及 database/sql 包。以下是一个示例࿱…...
VUE3照本宣科——eslint与prettier
VUE3照本宣科——eslint与prettier VUE3照本宣科系列导航 前言一、eslint1.配置文件2.配置规则3.忽略错误 二、prettier三、总结 VUE3照本宣科系列导航 1.VUE3照本宣科——认识VUE3 2.VUE3照本宣科——应用实例API与setup 3.VUE3照本宣科——响应式与生命周期钩子 4.VUE3照本宣…...
【谷粒学院】Maven加载问题
问题 maven加载项目时候,默认不会加载src-java文件夹里面xml类型文件的 解决方案 直接赋值xml文件到target目录通过配置实现 (1)在pom.xml文件中配置 <!-- 项目打包时会将java目录中的*.xml文件也进行打包 --> <build><re…...
PostgreSQL数据库中实现字段递增
在 PostgreSQL 中,可以使用序列(sequence)来实现字段的递增。序列是一种特殊的对象,用于生成唯一的递增数字。 首先,您需要创建一个序列对象。可以使用以下命令创建一个名为 "my_sequence" 的序列ÿ…...
深度学习——深度学习计算二
深度学习——深度学习计算二 文章目录 前言三、延后初始化四、自定义层4.1. 不带参数的层4.2. 带参数的层 五、读写文件5.1. 加载和保存张量5.2. 加载和保存模型参数 六、GPU6.1. 计算设备6.2. 张量与GPU6.3. 神经网络与GPU 总结 前言 延续上一章的学习,本章继续记…...
HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Badge
可以附加在单个组件上用于信息标记的容器组件。该组件从API Version 7开始支持。 支持单个子组件。子组件类型:系统组件和自定义组件,支持渲染控制类型(if/else、ForEach和LazyForEach)。 一、接口 方法1: Badge(value…...
在Flink中集成和使用Hudi
本文介绍在Flink 中集成和使用Hudi。介绍Flink如何将Streaming引入Hudi。在Hudi上使用Flink,并学习Flink读写Hudi的不同模式: Flink SQL客户端写入:Flink SQL客户端写入(读取)Hudi。 配置:对于全局配置,通过$FLINK_HOME/conf/FLINK-conf.yaml进行设置。对于每个作业配置…...
docker搭建Jenkins及基本使用
1. 搭建 查询镜像 docker search jenkins下载镜像 docker pull jenkins/jenkins启动容器 #创建文件夹 mkdir -p /home/jenkins_home #权限 chmod 777 /home/jenkins_home #启动Jenkins docker run -d -uroot -p 9095:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home…...
CSS初体验
目录 一、CSS初体验 二、CSS引入方式 三、选择器 3.1 标签选择器 3.2 类选择器 3.3 id选择器 3.4 通配符选择器 四、盒子尺寸和背景色 五、文字控制属性 5.1 字体大小 5.2 字体样式(是否倾斜) 5.3 行高 5.3.1 单行文字垂直居中 5.4 字体族 5.5 font复合属性 5.…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
Element-Plus:popconfirm与tooltip一起使用不生效?
你们好,我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip,产品要求是两个需要结合一起使用,也就是鼠标悬浮上去有提示文字,并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...
【2D与3D SLAM中的扫描匹配算法全面解析】
引言 扫描匹配(Scan Matching)是同步定位与地图构建(SLAM)系统中的核心组件,它通过对齐连续的传感器观测数据来估计机器人的运动。本文将深入探讨2D和3D SLAM中的各种扫描匹配算法,包括数学原理、实现细节以及实际应用中的性能对比,特别关注…...
