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.…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
