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中处理数据库连接和查询? 
  1. 在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地址和端口号。

  1. 在Server对象的onConnect回调函数中,处理客户端与服务器建立连接的事件。
  2. 在Server对象的onReceive回调函数中,处理接收到客户端数据的事件。
  3. 在Server对象的onClose回调函数中,处理客户端与服务器断开连接的事件。
  4. 在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 工作流程
  1. 主要分支:

    • master分支:用于保存稳定的、可发布的代码。master分支只接受合并自release和hotfix分支的代码。
    • develop分支:用于集成开发团队的所有功能性代码。开发团队的所有成员都应该基于develop分支进行开发。
  2. 辅助分支:

    • feature分支:用于开发新功能或进行较大的代码改进。每个feature分支都从develop分支上创建,并在开发完成后合并回develop分支。
    • release分支:用于准备发布新版本。release分支从develop分支上创建,并在进行最后的测试和修复后合并回develop分支和master分支。
    • hotfix分支:用于修复线上发现的紧急问题。hotfix分支从master分支上创建,并在修复完成后合并回master分支和develop分支。
  3. 工作流程:

    • 开发新功能:从develop分支上创建一个新的feature分支,进行开发和测试,完成后合并回develop分支。
    • 准备发布:从develop分支上创建一个新的release分支,进行最后的测试和修复,完成后合并回develop分支和master分支,并打上版本标签。
    • 修复问题:从master分支上创建一个新的hotfix分支,进行紧急问题的修复,完成后合并回master分支和develop分支,并打上新的版本标签。 通过Gitflow工作流程,团队成员可以并行开发多个功能,并且保持代码的稳定性和可发布性。它提供了明确的分支管理策略,使得团队成员之间的协作更加清晰和高效。同时,它也提供了一种灵活的方式来处理紧急问题的修复和版本发布。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149759.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

IEEE802系列协议知识点总结

IEEE 802 协议包含了以下多种子协议。把这些协议汇集在一起就叫IEEE 802 协议集。 (1)IEEE802.1 IEEE 802.1协议提供高层标准的框架,包括端到端协议、网络互连、网络管理、路由选择、桥接和性能测量。 •IEEE 802.1d:生成树协议(Spanning Tree Protocol&#xff0c…

C++笔记之不同buffer数量下的生产者-消费者机制

C笔记之不同buffer数量下的生产者-消费者机制 文章目录 C笔记之不同buffer数量下的生产者-消费者机制0.在不同的缓冲区数量下,生产者-消费者机制的实现方式和行为的区别1.最简单的生产者-消费者实现:抄自 https://mp.weixin.qq.com/s/G1lHNcbYU1lUlfugXn…

基于虚拟阻抗的下垂控制——孤岛双机并联Simulink仿真

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Oracle Database Express Edition (XE)配置与部署

获取下载安装包 https://www.oracle.com/cn/database/technologies/xe-downloads.htmlhttps://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html安装.rpm安装包 cd /usr/local/src wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-d…

Vue中如何进行分布式搜索与全文搜索(如Elasticsearch)

在Vue中实现分布式搜索与全文搜索(使用Elasticsearch) 分布式搜索和全文搜索在现代应用程序中变得越来越重要,因为它们可以帮助用户快速查找和检索大量数据。Elasticsearch是一种强大的分布式搜索引擎,它可以用于实现高性能的全文…

Gmail 将停止支持基本 HTML 视图

根据 Google 支持文档的更新内容,Gmail 将从明年 1 月起停止支持基本 HTML 视图。 ▲ Gmai 基本 HTML 视图界面 目前网页版 Gmail 提供两个界面:基本 HTML 视图和标准视图。停止支持基本 HTML 视图后,当前打开经典模式的基本 HTML 视图模式 …

苹果签名的MDM(Mobile Device Management)?是怎么做的?优势是什么?什么场合需要应用到?

苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到? 苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到? MDM&am…

基于Matlab求解高教社杯数学建模竞赛(cumcm2010A题)-储油罐的变位识别与罐容表标定(附上源码+数据+题目)

文章目录 题目解题源码数据下载 题目 通常加油站都有若干个储存燃油的地下储油罐,并且一般都有与之配套的“油位计量管理系统”,采用流量计和油位计来测量进/出油量与罐内油位高度等数据,通过预先标定的罐容表(即罐内油位高度与储…

lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议

目录 1 TCP管理 1.1 三次握手 1.2 四次挥手 1.3 保活计时器 2 wireshark安装及实验 3.1 icmp协议抓包演示 3.2 tcp协议抓包演示 3 UDP协议 3.1 UDP 的主要特点: 4 练习 1 TCP管理 1.1 三次握手 TCP 建立连接的过程叫做握手。 采用三报文握手&#xff1…

机器学习笔记 - 深入研究spaCy库及其使用技巧

一、简述 spaCy 是一个用于 Python 中高级自然语言处理的开源库。它专为生产用途而设计,这意味着它不仅功能强大,而且快速高效。spaCy 在学术界和工业界广泛用于各种 NLP 任务,例如标记化、词性标注、命名实体识别等。 安装,这里使用阿里的源。 pip install spacy…

2023版 STM32实战6 输出比较(PWM)包含F407/F103方式

输出比较简介和特性 -1-只有通用/高级定时器才能输出PWM -2-占空比就是高电平所占的比例 -3-输出比较就是输出不同占空比的信号 工作方式说明 -1-1- PWM工作模式 -1-2- 有效/无效电平 有效电平可以设置为高或低电平,是自己配置的 周期选择与计算 周期重…

华为云云耀云服务器L实例评测|安装搭建学生成绩管理系统

1.前言概述 华为云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。多种产品规格,满足您对成本、性能及技术创新的诉求。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在…

SRT服务器SLS

目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTPFLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了…

mybatis项目启动报错:reader entry: ���� = v

问题再现 解决方案一 由于指定的VFS没有找,mybatis启用了默认的DefaultVFS,然后由于DefaultVFS的内部逻辑,从而导致了reader entry乱码。 去掉mybatis配置文件中关于别名的配置,然后在mapper.xml文件中使用完整的类名。 待删除的…

JMETER自适应高分辨率的显示器

系列文章目录 历史文章 每天15分钟JMeter入门篇(一):Hello JMeter 每天15分钟JMeter入门篇(二):使用JMeter实现并发测试 每天15分钟JMeter入门篇(三):认识JMeter的逻辑控…

【Pandas】数据分组groupby

本文目标: 应用groupby 进行分组对分组数据进行聚合,转换和过滤应用自定义函数处理分组之后的数据 文章目录 1. 数据聚合1.1 单变量分组聚合1.2 Pandas内置聚合方法1.3 聚合方法使用Numpy的聚合方法自定义方法同时计算多种特征向agg/aggregate传入字典 2. 数据转换…

DHCPsnooping 配置实验(2)

DHCP报文泛洪攻击 限制接收到报文的速率 vlan 视图或者接口视图 dhcp request/ dhcp-rate dhcp snooping check dhcp-request enable dhcp snooping alarm dhcp-request enable dhcp snooping alarm dhcp-request threshold 1 超过则丢弃报文 查看[Huawei]dis dhcp statistic…

​苹果应用高版本出现:“无法安装此app,因为无法验证其完整性”是怎么回事?竟然是错误的?

最近经常有同学私聊我问苹果应用签名后用落地页下载出现高版本是什么意思?我一脸懵!还有这个操作?高版本是个啥玩意!所以我就上了一下科技去搜索引擎搜索了下,哈哈哈,然后了解下来发现是这样的首先我们确定…

Qt扩展-Advanced-Docking 简介及配置

Advanced-Docking 简介及配置 一、概述二、项目结构三、安装配置四、代码测试 一、概述 Advanced-Docking 是类似QDockWidget 功能的多窗口停靠功能的库。很像visual stdio 的 停靠功能,这个库对于停靠使用的比较完善。很多的软件都使用了这个框架。 项目源地址&a…

transformer不同的包加载模型的结构不一样

AutoModel AutoModelForTokenClassification 结论: AutoModel加载的模型与AutoModelForTokenClassification最后一层是不一样的,从这个模型来看,AutoModelForTokenClassification加载的结果是对的 问题: 为什么AutoModel和Aut…