5.Java面试题—【MySQL】、【Redis】、【计算机网络】、Linux、【Nginx】

本文目录如下:

  • 十一、MySQL
  • 十二、Redis
  • 十四、计算机网络
    • 一、基础知识【重要】
      • TCP/IP 四层模型 是什么?每一层有什么作用?
      • 从输入 URL 到 页面展示 到底发生了什么?
      • DNS 域名解析流程?
    • 三、HTTP & HTTPS【重要】
      • HTTP 中常见状态码?
      • GET 和 POST 请求有哪些区别?
      • HTTP 是不保存状态的协议, 如何保存用户状态?
      • HTTPS 为什么比 HTTP 安全?
      • HTTPS 是如何实现加密的 | SSL连接 建立过程?
      • RPC 和 HTTP 有什么区别?
      • 什么是 WebSocket?
    • 四、TCP & UDP【重要】
      • 简述 TCP 和 UDP 的区别?
      • 什么时候选择 TCP,什么时候选 UDP?
      • 简单说一下 TCP三次握手?
      • TCP 握手为什么是三次?
      • 第 2 次握手传回了 ACK,为什么还要传回 SYN?
      • 简单说一下四次挥手?
    • 六、其他
      • URL是什么?由哪些部分组成?
      • URI 和 URL 的区别是什么?
      • 你了解 RESTful 吗?
      • 什么是无状态服务?如何保存用户状态?
      • 什么是跨域请求?
      • Session 和 Cookie 有什么区别?
      • 什么是 Token?怎么使用 Token?
      • Session 和 Token 机制的区别?
  • 十五、Nginx【重要】
    • 请解释一下什么是 Nginx?
    • Nginx的优缺点?
    • Nginx 有什么功能?
    • 什么是 正向代理 和 反向代理?
    • 反向代理 有什么作用?
    • 为什么要做 动、静分离 (Nginx 和 Tomcat)?
    • Ngnix 中常见的 负载均衡 策略?
  • 十六、Linux
    • Linux 常用命令?
    • Linux 文件结构中的重要目录有哪几个?
    • Shell 脚本是什么?
    • Linux 如何查看 网络状态?

十一、MySQL

精通MySQL—基础 MySQL 知识、进阶 MySQL知识


十二、Redis

精通Redis—基础 Redis知识、进阶 Redis知识


十四、计算机网络

一、基础知识【重要】

TCP/IP 四层模型 是什么?每一层有什么作用?

  • 应用层:协议有:HTTPDNS 等。
  • 传输层:在 源端目的端 进行 数据传输.协议有:TCPUDP 等。
  • 网络层路由寻址。协议有 IPICMP 等。
  • 链路层:建立 并 维护 物理连接,传输 比特流

OSI七层模型

  • 物理层数据链路层网络层传输层会话层表示层应用层

从输入 URL 到 页面展示 到底发生了什么?

HTTP访问一个网站的过程详解

  • 1.DNS域名解析
  • 2.浏览器服务器 发起 TCP 连接
  • 3.浏览器服务器 发起 HTTP请求
  • 4.服务器 处理 请求 并返回 数据
  • 5.浏览器HTML 进行解析。

DNS 域名解析流程?

  1. 浏览器 首先在 浏览器缓存 中查找是否有 域名 对应的 IP
  2. 浏览器本机操作系统 中查找是否有 域名 对应的 IP
  3. 若没有,浏览器向 DNS服务器 发送请求, 解析 IP

三、HTTP & HTTPS【重要】

HTTP 中常见状态码?

HTTP错误代码详解

  • 200: 服务器已 成功处理请求
  • 403: 禁止访问
  • 404: 找不到网页
  • 500: 服务器内部错误

GET 和 POST 请求有哪些区别?

  • GET 通过 URL 传递 参数,携带数据量 有限安全性低
  • POST 通过 body 携带 参数,携带数据量 没有限制安全性高
  • GET 请求结果会被浏览器 缓存,因此 GET 支持 幂等性。而 POST 不支持。

HTTP 是不保存状态的协议, 如何保存用户状态?

  • HTTP 协议是 无状态的HTTP 协议 本身无法保存 用户状态信息
  • 可以通过 Session 机制Token 机制 保存 用户状态信息

HTTPS 为什么比 HTTP 安全?

  • HTTP 协议运行在 TCP 之上,所有 传输 都是 明文传输
  • HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议SSL/TLS 运行在 TCP 之上,所有 传输 都是 加密传输

HTTPS 是如何实现加密的 | SSL连接 建立过程?

HTTPS 怎么加密的?

  • 1.客户端服务器 发送 SSL连接 连接请求。
  • 2.服务器 收到 客户端 请求后,将网站的 CA 证书 (证书中包含 公钥) 传送给 客户端
  • 3.客户端 验证 CA证书有效性。生成 会话密钥,并利用 服务器公钥会话密钥 加密,并传送给 服务器
  • 4.服务器 利用 私钥 解密 会话密钥
  • 5.服务器客户端 利用 会话密钥 进行 通信

传输会话密钥 的过程是 非对称加密实际通信 的过程是 对称加密(通过 会话密钥 加密)


RPC 和 HTTP 有什么区别?

RPC (远程过程调用)HTTP (超文本传输协议) 是两种不同的 网络通信协议:

  • RPC 通常使用 二进制 进行传输,而 HTTP 使用 文本 进行传输。
  • RPC 更专注于 远程过程调用效率,更适合在 微服务系统 中使用。
  • RPC 通常用于 微服务 之间的 服务调用;而 HTTP 主要用于 客户端服务器 之间的通信。

什么是 WebSocket?

  • WebSocket 是一种 网络通信协议,提供了 全双工通信方式,允许 服务器客户端 之间的 双向通信。改变了原来 客户端/服务器通信方式
  • WebSocket协议 中,首先需要在 客户端和服务器 之间建立一个 WebSocket连接,然后就可以通过这个连接进行 数据传输

四、TCP & UDP【重要】

简述 TCP 和 UDP 的区别?

  • TCP 面向连接; UDP 是无连接的。
  • TCP 提供 可靠传输, 保证数据 无差错, 不丢失; UDP 尽最大努力交付,不保证 可靠交付。
  • TCP传输效率 要比 UDP 低很多。

什么时候选择 TCP,什么时候选 UDP?

  • UDP:用于对 传输效率 要求高的场景,比如:视频、直播 等。
  • TCP:用于对 传输准确性 要求高的场景,比如 文件传输邮件传输 等。

简单说一下 TCP三次握手?

最通俗易懂的三次握手、四次挥手理解

  • 第一次握手: 客户端服务器 发送 连接请求 (SYN报文, seq=x)。
  • 第二次握手: 服务器客户端 确认连接请求 (SYN、ACK报文seq=yack=x+1)。
  • 第三次握手: 客户端 再次向 服务端 确认 (ACK 报文seq=x+1ack=y+1)。

重要的标志位:

  • 序号seq 序号
  • 确认序号ack 序号。只有 ACK 标志位 为1时,确认序号 才有效,ack=seq+1
  • 标志位:如 ACK (确认序号有效)SYN (发起一个连接)FIN (释放一个连接) 等,
    5.Java面试题—【MySQL】、【Redis】、【计算机网络】、Linux、【Nginx】_第1张图片

TCP 握手为什么是三次?

  • 服务器客户端 都需要 确认对方 能否 接收自己发送的消息,因此至少需要 三次握手
  • 过去因为 网路阻塞 发起的 旧的链接 可能先于 新的链接 到达 服务器端服务器端 会根据 旧的链接 返回一个 旧的 ack应答客户端 可以及时 终止本次连接,提高 连接成功率

第 2 次握手传回了 ACK,为什么还要传回 SYN?

  • 服务器客户端 都需要 确认对方 能否 接收自己发送的消息
  • 第 2 次握手 传回 ACK,说明 服务器 能够接收到 客户端 发送的信号。
  • 第 2 次握手 传回 SYN,表名 服务器 还需要确认 客户端 能否接收到自己发送的信号。

简单说一下四次挥手?

TCP 三次握手和四次挥手 (传输层)

  • 第一次挥手客户端服务器 发送 释放连接请求 (FIN报文, seq=u)。
  • 第二次挥手服务器客户端 发送 确认报文 (ACK报文seq=vack=u+1)。
  • 第三次挥手数据传输 结束后, 服务器客户端 发送 释放连接请求(FIN、ACK报文seq=wack=u+1)。
  • 第四次挥手客户端服务器 发送 确认报文 (ACK 报文seq=u+1ack=w+1)。
    5.Java面试题—【MySQL】、【Redis】、【计算机网络】、Linux、【Nginx】_第2张图片

六、其他

URL是什么?由哪些部分组成?

  • URL统一资源定位符,就是指 网络地址
  • URL 由4部分组成:协议主机号端口路径

URI 和 URL 的区别是什么?

  • URI统一资源 标志符,可以唯一 标识 一个资源。
  • URL统一资源 定位符,可以提供该资源的 路径

注:URI 的作用像 身份证号 一样,URL 的作用更像 家庭住址 一样。


你了解 RESTful 吗?

RESTful 是一种 接口设计风格,RESTful风格的主要特点是:

  • 资源每个资源 都有一个唯一的 URL (统一资源定位符),这使得系统具有 可寻址性
  • 统一接口:软件应该具有 统一的接口,例如使用 HTTP方法 (GETPOST 等) 进行 操作
  • 无状态服务本身 不保存任何 状态信息同一个请求多次响应完全一致的

什么是无状态服务?如何保存用户状态?

  • 无状态服务服务本身 不保存任何 状态信息同一个请求多次响应完全一致的

HTTP 请求是 无状态请求,提供的服务又是 无状态服务,那么后端需要通过 TokenSession + Cookie 的方式 保存用户状态


什么是跨域请求?

  • 跨域请求Web页面不同源服务器 发送的 HTTP 请求 就是 跨域请求
  • 同源策略浏览器 默认禁止向 不同源的服务器 发送请求。【协议域名端口 不一样都是 不同源

Session 和 Cookie 有什么区别?

点击查看

  • Session 保存在 服务器端Cookie 保存在 客户端
  • Session存储容量Cookie 更大,Cookie存储容量 很小。
  • 一般情况下,Session 用于保存一些 用户状态信息Cookie 用来在 客户端 保存 SeesionID

什么是 Token?怎么使用 Token?

Token令牌 是一种用于 身份验证 的机制,通常用于 服务程序 免受 未经授权的访问


使用 Token 进行 身份验证 的基本流程如下:

  • 用户登录: 验证用户输入的 用户名密码 是否正确。
  • 生成Token: 如果 验证成功服务器 将生成一个 TokenToken码 包含有关 用户身份 的信息。Token通常包括:用户ID角色过期时间Token签名 等信息。
  • 返回Token服务器 将生成的 Token 返回给 客户端客户端 会将 Token 存储在 本地
  • 验证Token客户端 的请求要携带 Token码 (通常是 Bearer Token),服务端 会验证 Token码有效性
  • 处理请求: 如果Token验证成功,服务器 则会处理并响应请求

Session 和 Token 机制的区别?

  • 存储位置Session 保存在 服务器,而 Token 仅在 客户端 保存一个 Token码
  • 状态维护:由于 Session 保存在 服务器, 所以使用 Session 实现的服务是 有状态的,而使用 Token 实现的服务是 无状态的

十五、Nginx【重要】

请解释一下什么是 Nginx?

Nginx 最全使用教程

  • Nginx 是一个 高性能Web缓存服务器反向代理服务器负载均衡服务器
  • Nginx 专注于处理 网络请求数据传输,因此 处理请求传输文件 的效率很高。

Nginx的优缺点?

优点:

  • 高性能Nginx 专注于处理 网络请求数据传输高性能响应快,可实现 高并发连接
  • 多功能:可实现 反向代理负载均衡Web缓存 等功能。

缺点:

  • 动态处理差Nginx 擅长处理 静态文件,因此前端一般使用 Nginx 来加快 静态资源 的响应速度。

Nginx 有什么功能?

  • 1.Web缓存(html、css、js)Nginx 擅长处理 静态文件,因此前端一般使用 Nginx 来加快 静态资源 的响应速度。
  • 2.反向代理Nginx 可作为 反向代理 服务,用于转发 客户端 的请求,避免直接访问 真实服务器
  • 3.负载均衡: 将 客户端请求 分发到 不同服务器 上。

Ngnix 安装后,默认就可以提供 缓存静态文件 服务,而不需额外的配置。但是如果想要使用 反向代理负载均衡 的功能,则需要进行一些 配置


什么是 正向代理 和 反向代理?

点击查看

  • 正向代理: 代理 客户端,为 客户端 发送请求,对 服务器 隐藏自己的 真实客户端 (可实现 科学上网)。
  • 反向代理: 用于转发 客户端 的请求,避免直接访问 真实服务器

反向代理 有什么作用?

点击查看

  • 隐藏服务器:使用 反向代理 可以 隐藏 服务器地址
  • 负载均衡:将 客户端请求 分发到 不同服务器 上。

为什么要做 动、静分离 (Nginx 和 Tomcat)?

  • Nginx 擅长处理 静态文件,因此前端一般使用 Nginx 来加快 静态资源 的响应速度。
  • Tomcat 擅长处理 动态请求,因此后端一般使用 Tomcat 来加快 动态请求 的响应速度

Ngnix 中常见的 负载均衡 策略?

  • 轮询: 以 轮询的方式被分发 客户端请求
  • 最少连接: 下一个 客户端请求 将被分派到 连接数量最少服务器
  • IP散列: 使用 Hash算法 分发 客户端请求

十六、Linux

Linux 常用命令?

  • cdlspwdtouchmkdir: 常用命令
  • cat:查看 文件内容
  • grep:在文件中 搜索内容
  • chmod: 修改 权限
  • chown:修改 文件的所有者
  • top:查看 CPU占用情况,可以找出 CPU占用最高 的进程。

Linux 使用 Jar包 启动 Java服务 的流程:

  • nohup java -jar *** &: 后台运行 jar
  • netstat -lnp|grep 8080: 根据 端口 查看这个进程的 网络状态
  • ps [PID]: 查看进程的详细信息
  • kill -9 [PID]: 终止进程

Linux 文件结构中的重要目录有哪几个?

  • 根目录 (/)Linux文件系统 的最顶层
  • 用户主目录 (/home):存储 每个用户个人文件和数据
  • 系统配置目录 (/etc):包含了系统的 配置文件脚本
  • 程序目录 (/bin):存储各种 可执行程序工具
  • 库文件目录 (/lib):存储各种 库文件

Shell 脚本是什么?

  • Shell 脚本 是一个特殊的 文本文件,包含 一个或多个命令。运行 Shell脚本 会执行里面的所有命令。
  • Shell脚本 文件名以 .sh 结尾,并且文件第一行为 #!/bin/bash,告诉系统使用 Bash解释器 执行该脚本。
  • Shell脚本 常用的指令有:打印文本定义变量条件语句循环语句

Linux 如何查看 网络状态?

  • ifconfig:显示所有 网络接口详细情况
  • netstat:用于显示 进程网络连接网络接口 等信息。

你可能感兴趣的:(Java后端面试题,CABR实习,Golang面试题,mysql,面试,golang)