后端面试题分享第一弹(状态码、进程线程、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: 视频语音在线游戏

相关推荐
计算机-秋大田2 分钟前
基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)
java·后端·微信小程序·小程序·课程设计
灶龙7 分钟前
浅谈 PID 控制算法
c++·算法
菜还不练就废了7 分钟前
蓝桥杯算法日常|c\c++常用竞赛函数总结备用
c++·算法·蓝桥杯
vd_vd33 分钟前
Redis内存面试与分析
数据库·redis·面试
C++小厨神1 小时前
MATLAB语言的编程范式
开发语言·后端·golang
新知图书1 小时前
Linux C\C++编程-文件位置指针与读写文件数据块
linux·c语言·c++
大码猴1 小时前
用好git的几个命令,领导都夸你干的好~
前端·后端·面试
小柴狗1 小时前
MAC 地址转换为标准大写格式
golang
qystca1 小时前
异或和之和
数据结构·c++·算法·蓝桥杯
Java知识技术分享1 小时前
SecureUtil.aes数据加密工具类
java·后端·intellij-idea