惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

Lanke

Google 账号地区是日本,ChatGPT 订阅为什么还是美元? 在 Flutter 项目里折腾苹果的液态玻璃效果 从“宅斗庶女”看极端女权 一期一会 关于梦 用 Vercel AI Gateway 给博客做一个 AI 摘要服务 Claude 搜索网页报错:Unable to verify if domain is safe to fetch 的解决方法 Flutter输入面板布局优化:键盘、表情面板与@联想的丝滑切换 再谈语言和思维 还有人记得 在2026年拥有自己的博客 为 Astro 博客添加 llms.txt 使用 LLM Wiki 作为 Hermes Agent 的记忆系统 使用Obsidian 作为 Hermes Agent 的记忆数据库 流畅的下滑关闭页面 遇到的一起生产事故 好看的鼠标样式 拖了很久的更新,还是来了 Linux · 常用日志查询命令 面试 · Java面试二 如何实现验证码及校验 在电脑上共存MySQL 三道前端题 「随便来点」失语症 一些碰到的面试问题 关于博客主题的自问自答 重装电脑后恢复MySQL数据 如何畅玩旮旯game之软件篇--串流 欢迎来到实力至上主义教室 谈“诚哥”之死
面试 · Java面试一
Ditto · 2026-02-27 · via Lanke

昨天进行了一次面试,但是问到的基本没有八股,反而是一些其他很实际的问题,回答的不是很好。

QAQ,经验确实是少了。

TCP 协议

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。

它主要特点有:

  1. 面向连接
    在传输数据之前需要先建立连接。
  2. 可靠传输
    通过确认应答机制、序列号机制、重传机制来保证数据不丢失、不重复、不乱序。
  3. 有序传输
    通过序列号保证数据按顺序到达。
  4. 流量控制
    通过滑动窗口机制控制发送速率,避免接收方处理不过来。
  5. 拥塞控制
    通过慢启动、拥塞避免等机制避免网络拥堵。

三次握手与四次挥手

三次握手用于建立可靠连接:

  1. 客户端发送SYN请求。
  2. 服务端返回SYN+ACK确认。
  3. 客户端发送ACK确认,连接建立。

四次挥手用于断开连接:

  1. 主动方发送FIN请求。
  2. 被动方返回ACK确认。
  3. 被动方发送FIN请求。
  4. 主动方返回ACK确认,连接断开。

前后端的交互流程

  1. 用户在浏览器操作页面,比如点击按钮或提交表单。
  2. 前端通过 Ajax 或 fetch 发送 HTTP 请求到后端接口。
  3. 请求会携带参数,请求方式可能是 GET 或 POST。
  4. 后端 Controller 接收到请求后,调用 Service 处理业务逻辑。
  5. Service 调用 Mapper 操作数据库。
  6. 处理完成后,后端返回 JSON 数据给前端。
  7. 前端接收到响应后,更新页面数据,实现动态渲染。

这里吐槽一下自己太紧张,后端的详细过程都没说出来,前端倒是说差不多了,后端 4-5 步都给略过去了

域名解析的过程

  1. 浏览器先查询本地 DNS 缓存:如果缓存中有对应的 IP 地址,就直接使用。
  2. 查询操作系统缓存
  3. 查询本地 hosts 文件
  4. 如果都没有命中,则向本地 DNS 服务器发起查询(通常是运营商提供的 DNS)。
  5. 本地 DNS 服务器开始递归查询:
    • 先查询根域名服务器
    • 再查询顶级域名服务器(如 .com)
    • 再查询权威域名服务器
    • 最终获得目标服务器的 IP 地址
  6. 本地 DNS 将结果返回给浏览器,并缓存起来。
  7. 浏览器拿到 IP 地址后,开始和服务器建立 TCP 连接。

多应用共 ip 的路由逻辑

如果使用不同端口,操作系统通过端口号将请求分发给不同进程。
如果共用同一个端口,则通过 HTTP 请求头中的 Host 字段进行区分,Web 服务器根据域名匹配对应应用,这种方式称为虚拟主机。

讲一下 JWT 的流程

  1. 用户输入账号密码登录
  2. 后端验证成功后生成 JWT
  3. 将 Token 返回给前端
  4. 前端保存 Token(一般放在 localStorage)
  5. 之后每次请求在请求头中携带 Token
  6. 后端通过拦截器解析 Token 并验证合法性

有MySQL 了为什么还要用Redis

MySQL 主要用于数据的持久化存储,而 Redis 是基于内存的缓存数据库,读写速度更快。
在高并发场景下,如果所有请求都直接访问 MySQL,会给数据库带来较大压力。
使用 Redis 作为缓存,可以减少数据库访问次数,提高系统性能和响应速度。

这里我又紧张了,说成了请求次数,被狠狠指出来了

Java线程池的作用

线程池是一种预先创建并复用线程的机制,通过统一管理线程生命周期,减少频繁创建/销毁线程的开销,从而提升系统性能与响应速度。Java 中的核心实现类是 ThreadPoolExecutor,它基于任务队列、核心线程数、最大线程数及拒绝策略来调度任务。

业务价值

线程池的业务价值在于提升系统并发处理能力、提高接口响应速度、控制资源使用,避免因线程过多导致系统崩溃,从而提高系统稳定性。

具体忘了问什么了,大概是这方面

线上运行的java应用,如何在终端查看报错日志

一般线上 Java 应用都会把日志输出到日志文件中,比如 logs 目录下的 xxx.log 文件。
可以通过 Linux 命令查看日志,比如使用 tail、cat 或 less 命令。

一般使用 tail 和 grep 直接查看错误日志