觅动科技 Java开发 实习 一面

DNS 域名解析步骤是什么

当用户在浏览器输入:

java 复制代码
www.baidu.com

浏览器并不知道服务器 IP,需要先进行 DNS 解析

java 复制代码
浏览器缓存
→ 操作系统缓存
→ 本地域名服务器(LDNS)
→ 根域名服务器
→ .com 顶级域名服务器
→ baidu.com 权威 DNS
→ 返回 IP

浏览器会先查本地缓存,再查本地域名服务器,递归找到权威 DNS 返回 IP,之后客户端再通过 TCP 和 HTTPS 与服务端建立连接。

多个Docker之间如何通过域名访问

其实本质上:

Docker 内部自带了一套 DNS 服务。

所以:

复制代码
同一个 Docker Network 下
容器名 = 域名

可以直接互相访问。

Docker 在同一个网络下会自动维护内部 DNS。

容器之间可以直接通过"容器名"通信,不需要写死 IP。

所以在微服务或者多容器场景里,通常使用容器名作为服务域名。

为什么不能直接用 IP

Docker 容器 IP 会变化

比如:

  • 重启容器
  • 重新部署
  • 扩缩容

JWT 编码解码方案

JWT 是什么

一种"无状态"的用户认证方案。由 Header、Payload、Signature 三部分组成

Header 描述算法,Payload 存用户信息,Signature 用于防篡改(载荷部分不加密)

它常用于:

  • 登录认证
  • 微服务鉴权

JWT 为什么出现

JWT 最大优势是不依赖服务端 Session,非常适合微服务和分布式系统

但它也有缺点,

  • Payload 只是 Base64 编码,并不是加密,所以不能存敏感数据。
  • 主动失效比较困难,所以工程上通常会结合 Redis过期机制

对未来AI的看法

我认为未来 AI 一定会越来越像"基础设施",就像现在的数据库、中间件、云服务一样,逐渐成为软件系统的一部分。

目前的大模型已经具备很强的通用能力,但真正的难点其实已经不只是"模型本身",而是如何把 AI 工程化落地。

比如我现在自己在做的 RAG 和 Agent 项目里,我会发现真正复杂的部分其实是:

  • 知识检索质量
  • 多轮上下文管理
  • Agent 工作流设计
  • 工具调用
  • 幻觉控制
  • 限流与稳定性
  • 成本控制
  • 可观测性

而不仅仅是"调 Prompt"。

所以我觉得未来会越来越偏向:

复制代码
AI + 工程化

而不是单纯"会用模型"。

我不认为 AI 会完全替代开发,而是会改变开发方式。

未来开发者可能更多是:

  • 设计系统
  • 管理 Agent
  • 做工程治理
  • 做 AI 能力编排

AI 更像一个"能力放大器"。

所以我现在也在往:

  • AI 工程化
  • Agent 系统
  • RAG 架构

这些方向学习。

如果面试官继续追问

你觉得 AI 最大问题是什么?

  • 幻觉
  • 成本问题
  • 工程稳定性

HTTPS 握手

这个其实就是想问你HTTP升级为HTTPS之后密钥的传输是如何进行的

HTTPS 本质是 HTTP + TLS

TLS 握手阶段会先通过非对称加密安全交换会话密钥,后续真正的数据传输再使用对称加密,因为对称加密性能更高。

同时 HTTPS 通过 CA 证书验证服务器身份,防止中间人攻击。

它主要解决了数据传输中的窃听、篡改以及身份伪造问题。

后端接口优化:如何设计一个好的接口

  1. 接口路径设计清晰
java 复制代码
GET /api/users/{id}        查询用户
POST /api/users            新增用户
PUT /api/users/{id}        修改用户
DELETE /api/users/{id}     删除用户
  1. 统一请求和响应格式
java 复制代码
{
  "code": 200,
  "message": "success",
  "data": {},
  "traceId": "xxx"
}
  1. 参数校验
java 复制代码
@NotNull
@NotBlank
@Size
@Valid
  1. 幂等性设计

  2. 安全性设计

java 复制代码
登录鉴权 JWT / Session
权限校验 RBAC
接口限流
参数防篡改
敏感字段脱敏
防 SQL 注入

get,post请求的区别(域前请求)

GET 和 POST 最大区别在于 HTTP 语义不同。

GET 一般用于查询资源,强调幂等和可缓存;POST 一般用于提交数据,通常非幂等。

GET 参数通常放在 URL 中,而 POST 一般放在 Body 中。

另外 GET 通常会被浏览器缓存,而 POST 默认不会。

常见接口攻击

SQL 注入,暴力刷接口,越权访问,文件上传漏洞

HTTP 协议里的缓存

减少网络请求

降低服务器压力

提升响应速度

什么是深分页问题

一般指:

复制代码
LIMIT offset, size

里的:

复制代码
offset 特别大

比如:

复制代码
SELECT * 
FROM user
LIMIT 100000,10;

为什么深分页慢

很多人以为:

复制代码
直接跳到100000

其实不是。

MySQL 实际:

复制代码
会先扫描前100000条
再丢弃
最后返回10条

深分页优化方案

基于主键范围分页

不推荐

复制代码
limit 100000,10

推荐

记录上一页最大 ID:

复制代码
SELECT *
FROM user
WHERE id > 100000
LIMIT 10;

为什么快

因为:

复制代码
直接走主键索引范围扫描

不需要丢弃大量数据。

MySQL 索引有哪些类型

  1. 主键索引

  2. 普通索引

  3. 联合索引

  4. 唯一索引

  5. 覆盖索引

JVM的垃圾回收机制(GC)

JVM 自动回收"不再使用的对象"

垃圾回收如何判断对象死亡

可达性分析+引用计数

jvm使用的是可达性分析

什么是 GC Roots

GC 会从:

复制代码
GC Roots

开始向下找。

如果对象:

复制代码
不可达

说明:

复制代码
可以回收

常见垃圾回收器

G1,CMS

垃圾清理算法有哪些

标记清理,复制算法,标记整理,分代清理

如何排查内存泄漏

内存泄漏的典型表现是:

java 复制代码
Full GC 越来越频繁
老年代使用率持续升高
GC 后内存降不下来
最终 OOM

Full GC

Full GC 是对整个 JVM 堆进行垃圾回收,包括新生代和老年代。

它通常会触发较长时间的 Stop The World,所以线上影响比较大

1.看 GC 情况

重点看:

复制代码
OU:老年代使用率
FGC:Full GC 次数
FGCT:Full GC 总耗时

2. 导出堆快照

然后用VisualVM进行分析

3.看哪些对象占内存最大

找到:

复制代码
谁占用内存最多
谁持有了这些对象
为什么 GC 回收不了

4.看 GC Roots 引用链

常见内存泄漏原因

1. 缓存没有淘汰

java 复制代码
static Map<String, Object> cache = new HashMap<>();

一直 put,不清理

2. ThreadLocal 没有 remove

3. 集合无限增长

4. 连接 / 流没关闭

相关推荐
XD7429716361 小时前
科技早报|2026年5月12日:OpenAI 押注企业部署
人工智能·科技·科技新闻·科技早报
waiting&fighting2 小时前
智能传感重塑水产养殖新生态
科技·创业创新
幽络源小助理2 小时前
团队个人科技主页HTML源码 黑客帝国风格个人简历网页模板
前端·科技·html
星幻元宇VR11 小时前
VR科普大空间:沉浸式公共教育新模式
科技·学习·安全·vr·虚拟现实
TENSORTEC腾视科技16 小时前
腾视科技AI大模型应用:提效、破局与落地,重塑智能新生态
人工智能·科技·安全·ai·ai大模型·无人叉车及智能调度系统解决方案
1892280486117 小时前
H27QCG8T2ELR-BCF海力士H27QCG8UDBIR-BCB
大数据·服务器·人工智能·科技·缓存
XD74297163617 小时前
科技早报晚报|2026年5月11日:AI 工具链开始从“能用”走向“可治理”,今天更值得二次开发的 3 个机会
人工智能·科技·科技新闻·ai agent·开发者工具
ITHAOGE1520 小时前
2026年Win7最终版ISO系统映像下载!(集成补丁、旗舰版、完整无精简、64位/32位可选、Windows 7、简体中文/繁体中文/英语可选)
windows·科技·microsoft·微软·电脑
海盗123420 小时前
科技与科学领域重点新闻摘要-2026年5月11日
科技