觅动科技 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. 连接 / 流没关闭

相关推荐
HXDGCL9 小时前
从“转盘困局”到“直线破局”:华创力科技PTS精密分度输送系统如何重塑自动化产线
运维·科技·自动化
蓝速科技11 小时前
蓝速科技丨新旧楼宇混杂场景下会议室预约门牌屏一体化改造方案
开发语言·科技·php
微石科技11 小时前
社区卫生中心慢病管理怎么做?宁波微石科技智慧医康系统:一个平台管住趋势、随访、患者
大数据·人工智能·科技
东莞市奥普新音频技术有限公司17 小时前
国产音频分析仪怎么选?从性能参数、测试软件到自动化能力
人工智能·科技·测试工具·自动化·音视频·音频
雷焰财经18 小时前
四项目落子香港:宇信科技香港市场的“能力验证”与全球化支点
人工智能·科技
硅基流动18 小时前
数家科技 × 算家计算 × 硅基流动:算力联合运营,共建 Token 工厂
科技
ZEB110618 小时前
以客户价值为中心|长沙迪迈科技深耕场景打造矿山数智化实效价值
科技·制造
电子元件小说家18 小时前
电感选型防掉发:线艺SER1360与同于科技国产化解析
科技
BioRunYiXue19 小时前
RACE技术全攻略:从全长克隆到靶基因验证
java·javascript·网络·人工智能·科技·算法·eclipse
赛逸会展s20 小时前
2027北京AI健康科技与智慧医疗展6月举办:不是秀场是成交现场
人工智能·科技