后端面试题分享第一弹(状态码、进程线程、TCPUDP)

后端面试题分享第一弹

1. 如何查看状态码,状态码含义

在Web开发和调试过程中,HTTP状态码是了解请求处理情况的重要工具。

查看状态码的步骤

  1. 打开开发者工具

    • 在大多数浏览器中,您可以通过按下 F12 键或右键单击页面并选择"检查"来打开开发者工具。
  2. 切换到"网络"选项卡

    • 在开发者工具中,切换到"网络"(Network)选项卡,这里会显示所有网络请求的详细信息。
  3. 查找感兴趣的请求

    • 在"网络"选项卡中,找到您感兴趣的请求,点击该请求以查看详细信息。
  4. 查看状态码

    • 在请求的Header详细信息中,您可以看到"状态码"(Status Code),它表示服务器对该请求的响应状态。

打开浏览器 按下F12或右键点击页面选择检查 打开开发者工具 切换到网络选项卡 查找感兴趣的请求 点击请求查看详细信息 查看状态码

常见状态码及其含义

以下是常见的HTTP状态码及其含义:

  • 200 OK: 请求成功,服务器成功处理了请求。
  • 301 Moved Permanently: 请求的资源已永久移动到新位置。客户端应使用新的URI重新发起请求。
  • 400 Bad Request: 服务器无法理解请求的语法,通常是由于客户端发送的请求有误。
  • 403 Forbidden: 服务器拒绝了对请求的访问,可能是由于权限不足或资源被禁止访问等原因。
  • 404 Not Found: 请求的资源不存在,服务器无法找到请求的资源。
  • 500 Internal Server Error: 服务器遇到了意外错误,无法完成请求。
  • 502 Bad Gateway: 作为网关或代理服务器的服务器从上游服务器接收到无效的响应。

状态码分类

HTTP状态码分为五类,每类状态码的第一个数字表示其类别:

  1. 1xx(信息性状态码): 表示请求已被接收,继续处理。
  2. 2xx(成功状态码): 表示请求已成功被服务器接收、理解并接受。
  3. 3xx(重定向状态码): 表示需要客户端采取进一步的操作才能完成请求。
  4. 4xx(客户端错误状态码): 表示客户端可能出错了,妨碍了服务器的处理。
  5. 5xx(服务器错误状态码): 表示服务器在处理请求的过程中发生了错误。

2. 进程和线程的比较

进程和线程的定义

  • 进程(Process): 进程是操作系统分配资源的基本单位。每个进程都有独立的内存空间、文件描述符和系统资源。一个进程可以包含多个线程。
  • 线程(Thread): 线程是进程中的一个执行单元,是CPU调度的基本单位。线程共享进程的内存空间和资源,但拥有独立的执行栈和程序计数器。

进程和线程的比较

以下是进程和线程的主要区别:

特性 进程 线程
定义 操作系统分配资源的基本单位 进程中的一个执行单元
资源占用 独立的内存空间和系统资源 共享进程的内存空间和资源
创建和销毁开销 较大,涉及内存分配和资源管理 较小,仅需分配栈和程序计数器
通信方式 进程间通信(IPC)机制,如管道、消息队列等 直接共享内存,通信更高效
并发性 进程间切换开销大,并发性较低 线程间切换开销小,并发性较高
独立性 进程间相互独立,一个进程崩溃不影响其他进程 线程共享资源,一个线程崩溃可能导致整个进程崩溃
应用场景 适合需要高隔离性和安全性的任务 适合需要高并发和资源共享的任务

进程和线程的优缺点

进程的优点
  • 独立性: 进程间相互独立,一个进程崩溃不会影响其他进程。
  • 安全性: 进程间资源隔离,安全性较高。
进程的缺点
  • 资源开销大: 创建和销毁进程的开销较大,占用更多的系统资源。
  • 通信复杂: 进程间通信需要使用复杂的IPC机制。
线程的优点
  • 资源开销小: 创建和销毁线程的开销较小,占用较少的系统资源。
  • 通信高效: 线程间可以直接共享内存,通信更高效。
  • 并发性高: 线程间切换开销小,适合高并发场景。
线程的缺点
  • 安全性低: 线程共享资源,一个线程崩溃可能导致整个进程崩溃。
  • 调试复杂: 多线程程序的调试和同步较为复杂。

进程和线程的比较 定义 资源占用 创建和销毁开销 通信方式 并发性 独立性 应用场景 进程: 操作系统分配资源的基本单位 线程: 进程中的一个执行单元 进程: 独立的内存空间和系统资源 线程: 共享进程的内存空间和资源 进程: 开销大 线程: 开销小 进程: IPC机制 线程: 共享内存 进程: 并发性低 线程: 并发性高 进程: 独立性高 线程: 独立性低 进程: 高隔离性和安全性任务 线程: 高并发和资源共享任务

3. TCP和UDP的区别

TCP和UDP的主要区别

以下是TCP和UDP的主要区别:

特性 TCP UDP
连接方式 面向连接,通信前需建立可靠连接 无连接,直接发送数据报
可靠性 提供可靠的数据传输,支持确认、重传机制 不提供可靠性保证,可能存在丢包或乱序
有序性 保证数据的有序性,按发送顺序接收 不保证数据的有序性,接收顺序可能不一致
控制机制 支持拥塞控制和流量控制 无拥塞控制和流量控制
传输效率 传输效率较低,因需维护连接和确认机制 传输效率较高,因无连接和确认开销
适用场景 适合对可靠性要求高的应用,如网页、邮件 适合对实时性要求高的应用,如视频、语音

TCP和UDP的详细比较

1. 面向连接 vs 无连接
  • TCP: 是一种面向连接的协议。在通信之前,TCP需要在发送方和接收方之间建立一个可靠的连接。连接建立后,双方才能进行数据传输。
  • UDP: 是一种无连接的协议。发送方直接将数据报发送给接收方,无需建立连接。这种方式减少了通信的开销,但缺乏可靠性保障。
2. 可靠性
  • TCP: 提供可靠的数据传输。它使用确认机制、序列号和重传来确保数据的可靠性。如果数据丢失或损坏,TCP会重新发送丢失的数据。
  • UDP: 不提供可靠性保证。它不进行重传或确认,因此在传输过程中可能会有丢包或乱序的情况发生。
3. 有序性
  • TCP: 保持数据的有序性,确保接收方按照发送顺序接收数据。
  • UDP: 不保证数据的有序性,接收方可能会按照不同的顺序接收到数据。
4. 控制机制
  • TCP: 具有拥塞控制和流量控制机制。拥塞控制用于避免网络拥塞,流量控制用于协调发送方和接收方的数据传输速率。
  • UDP: 无拥塞控制和流量控制机制,数据传输完全由应用层控制。
5. 传输效率
  • TCP: 由于需要维护连接和确认机制,传输效率较低,适合对可靠性要求高的场景。
  • UDP: 由于无连接和确认开销,传输效率较高,适合对实时性要求高的场景。
6. 适用场景
  • TCP: 适合对可靠性要求高的应用,如网页浏览、电子邮件、文件传输等。
  • UDP: 适合对实时性要求高的应用,如视频流、语音通话、在线游戏等。

TCP和UDP的比较 连接方式 可靠性 有序性 控制机制 传输效率 适用场景 TCP: 面向连接 UDP: 无连接 TCP: 可靠传输 UDP: 不可靠传输 TCP: 保证有序性 UDP: 不保证有序性 TCP: 拥塞控制和流量控制 UDP: 无控制机制 TCP: 传输效率低 UDP: 传输效率高 TCP: 网页邮件文件传输 UDP: 视频语音在线游戏

相关推荐
苏三说技术7 小时前
Claude Code从失控到起飞,只用了这些技巧
后端
长栎7 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode8 小时前
Redis 在生产项目的使用
前端·后端
用户559822481228 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode8 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战8 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha8 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn8 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425918 小时前
ShardingJDBC
后端
行者全栈架构师8 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端