当前位置: 首页 > news >正文

Android / IoT 面试复盘总结:从 MQTT、TLS 到 JWT 权限体系(标准答案 + 工程理解 + 延伸知识链)

最近经历了一场偏 Android / IoT 方向的技术面试。

整个过程下来,最大的感受其实不是:

“完全不会”

而是:

“很多东西做过,但没有形成标准化表达体系”。

尤其:

  • MQTT
  • QoS
  • TLS
  • 401 / 403
  • JWT
  • 生命周期
  • 地图实时点位

这些问题。

其实本质上已经开始进入:

“系统工程能力 + 企业级架构思维”

这一层了。

所以这篇文章,我想不只是简单记录面试问题。

而是:

用“标准答案 + 工程理解 + 延伸知识链”

的方式,把这次面试真正串成一个体系。


一、MQTT 与 MQTTS


标准答案

MQTT

MQTT 是轻量级发布订阅协议, 适用于 IoT、实时通信、长连接场景。 MQTTS 本质是: MQTT + TLS/SSL 类似: HTTP → HTTPS MQTT → MQTTS

工程理解

协议栈结构

MQTT: TCP ↓ MQTT MQTTS: TCP ↓ TLS ↓ MQTT

TLS 解决的问题

1. 数据加密 2. 防抓包 3. 防中间人攻击 4. 防数据篡改

为什么 IoT 必须加密

比如:

  • 智能门锁
  • 割草机器人
  • 工业控制
  • 远程设备控制

如果 MQTT 明文:

{ "cmd":"unlock" }

抓包即可看到。

公网环境非常危险。


延伸知识链

TCP → TLS → HTTPS / MQTTS / WSS → 企业安全通信

二、MQTT QoS


标准答案

QoS 是 MQTT 消息可靠性等级。 QoS0: 最多一次,可能丢失。 QoS1: 至少一次,不丢但可能重复。 QoS2: 只有一次,不丢不重复。

工程理解

实际项目场景

QoS0

适合:

  • 状态同步
  • 高频位置
  • 电量

因为:

允许偶尔丢包

但性能最高。


QoS1

适合:

  • 控制命令
  • OTA
  • 开关机

因为:

控制命令不能丢

企业最常用。


QoS2

一般较少使用。

因为:

可靠性最高 但性能最差

延伸知识链

MQTT → QoS → ACK → 消息重试 → 幂等 → 网络可靠性

三、TLS 是什么


标准答案

Transport Layer Security

TLS 是传输层安全协议, 用于对网络通信进行加密。

核心:

数据加密 身份认证 防篡改

工程理解

TLS 本质

给 TCP 通信增加了一层安全保护壳。

结构:

应用层协议 (HTTP / MQTT / WebSocket) ↓ TLS ↓ TCP

TLS 握手过程

客户端: 我要安全通信 服务端: 这是我的证书 客户端: 验证证书是否合法 然后: 交换密钥 建立加密通道

后续数据:

全部加密

延伸知识链

TLS → HTTPS → MQTTS → WSS → CA证书 → 非对称加密 → 对称加密

四、401 与 403


标准答案

401: 未认证(没登录、Token失效) 403: 已认证,但无权限

经典理解:

401: “你是谁?” 403: “我知道你是谁,但你不配”

工程理解

JWT 请求流程

请求来了 ↓ 有没有 Token? ↓ 没有 → 401 Token 合法吗? ↓ 不合法 → 401 身份解析成功 ↓ 有没有权限? ↓ 没有 → 403 有权限 ↓ 200

Android / 前端处理

401

跳转登录页

因为:

登录失效

403

提示权限不足

因为:

账号有效 但无权限

延伸知识链

JWT → 拦截器 → ThreadLocal → Spring Security → RBAC → OAuth2

五、HTTP 状态码体系


标准答案

2XX:成功

200 OK 请求成功 201 Created 创建成功 204 No Content 成功但无返回体

4XX:客户端错误

400 Bad Request 请求参数错误 401 Unauthorized 未认证 403 Forbidden 无权限 404 Not Found 资源不存在 405 Method Not Allowed 请求方式错误

核心:

客户端请求有问题

5XX:服务端错误

500 Internal Server Error 服务器异常 502 Bad Gateway 网关异常 503 Service Unavailable 服务不可用 504 Gateway Timeout 网关超时

核心:

服务端处理失败

工程理解

为什么要区分 4XX / 5XX

4XX: 客户端问题 5XX: 服务端问题

前后端联调时非常重要。


延伸知识链

HTTP → RESTful → Gateway → 微服务 → Spring Cloud

六、长登录 / Token 刷新


标准答案

企业里通常采用双 Token 机制: AccessToken: 接口访问, 有效期较短。 RefreshToken: 用于刷新 AccessToken, 有效期较长。

流程

AccessToken 过期 → 401 → Interceptor → RefreshToken → 获取新 AccessToken → 重试请求

工程理解

为什么不用永久 Token

Token 泄露风险太高

所以:

AccessToken 短期 RefreshToken 长期

更安全。


延伸知识链

JWT → RefreshToken → Redis → 单点登录 → Token黑名单

七、Activity 生命周期与屏幕旋转


标准答案

Android

屏幕旋转本质是: Configuration Change 会导致: Activity 重建

生命周期

onPause onStop onDestroy onCreate onStart onResume

工程理解

常见解决方案

ViewModel

Android Jetpack ViewModel

保存业务状态。


onSaveInstanceState

保存 UI 临时状态。


rememberSaveable

Jetpack Compose

Compose 状态恢复。


延伸知识链

生命周期 → Configuration Change → ViewModel → SavedStateHandle → Compose状态管理

八、多态与继承


标准答案

多态本质是: 同一接口, 不同对象表现出不同实现。

Java 中:

  • 继承
  • 接口实现
  • 方法重写

实现运行时多态。


工程理解

底层本质

C++

vtable / vptr 动态绑定

Java

JVM 虚方法派发

为什么框架大量使用多态

比如:

  • Spring
  • Android 回调
  • AOP
  • MQTT Callback

本质都依赖:

接口多态

延伸知识链

OOP → 动态绑定 → AOP → 动态代理 → Spring

九、地图边界绘制


标准答案

地图边界本质是一组经纬度点。

通常通过:

Polyline Polygon

进行绘制。


工程理解

边界丢失原因

1. 点顺序错误 2. Polygon 未闭合 3. MultiPolygon 未处理 4. 坐标系问题 5. 点过多

延伸知识链

GIS → GeoJSON → Polygon → MultiPolygon → GCJ02 / WGS84

十、地图绘制优化


标准答案

地图绘制优化常见方案: 1. 点位抽稀 2. Marker 聚合 3. LOD 4. 视野内渲染 5. Bitmap 缓存 6. 分段绘制

工程理解

为什么要优化

因为:

地图点位过多 会导致: CPU/GPU 压力过高

出现:

  • 卡顿
  • 掉帧
  • OOM

延伸知识链

GIS → GPU渲染 → LOD → 轨迹优化 → 实时地图

十一、实时点位乱序 / 跳点


标准答案

实时点位场景下, 网络延迟可能导致旧数据后到。 通常会增加: timestamp 或 sequenceId。 客户端只接受更新的数据, 旧数据直接丢弃。

工程理解

Marker 不要瞬移

应该:

插值动画

实现:

平滑移动

异常点过滤

根据:

  • 速度
  • 距离

过滤 GPS 漂移点。


延伸知识链

实时轨迹 → GPS漂移 → 插值算法 → 实时数据流

十二、本次面试暴露的问题


核心问题

不是缺项目经验, 而是缺标准化面试表达。

典型问题

1. 缺标准定义

容易直接讲本质。


2. 缺术语

比如:

TLS QoS0/1/2 RefreshToken Configuration Change

3. 输出不够结构化

容易:

想到哪说到哪

十三、后续学习建议


第一阶段(最高优先级)

JWT 与权限认证体系

重点:

JWT → AccessToken → RefreshToken → Spring Security → RBAC → OAuth2

第二阶段

MQTT 与实时通信体系

重点:

MQTT → QoS → TLS → 长连接 → Netty → Reactor

第三阶段

Android 状态管理

重点:

Configuration Change → ViewModel → SavedStateHandle → rememberSaveable

第四阶段

地图 / GIS 体系

重点:

Polyline → Polygon → MultiPolygon → GeoJSON → Marker聚合 → LOD

十四、最终总结

这次面试:

并不是:

完全不会

而更像:

“项目经验已经有了,但面试术语体系与结构化输出不足”。


当前真正缺的:

不是:

做项目能力

而是:

“把已有经验翻译成企业标准面试语言”。


以后回答问题:

尽量采用:

三段式结构

1. 标准答案 2. 工程理解 3. 延伸知识链

这样:

既能命中八股关键词,

又能体现工程深度。

http://www.jsqmd.com/news/812888/

相关文章:

  • AI提示词工程化实践:从模块化到自动化的工作流构建
  • Agent-Harness:为AI编码助手套上“缰绳”的工程化框架
  • SQL数据分析实战:电商新品高流量低转化问题
  • 半导体制造中的金属填充技术:原理与应用
  • 别再用默认设置了!手把手教你调校Intel RealSense D435/D435i,让深度图质量翻倍
  • AI研究工具性能评估实战:基于Autoresearch基准的AdaL与Claude Code对比
  • 基于MCP协议构建AI工具桥接器:从原理到MySQL适配器开发实战
  • DistroAV for macOS:为什么这是OBS用户必备的3步网络视频传输解决方案
  • WordPress开发利器:clawwp工具库提升PHP开发效率与代码质量
  • 使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期
  • shell 脚本中注释的正确写法是什么?
  • 招募Kiro大使!会员权益、内测资格等重磅福利等你领!
  • RAG:解锁大语言模型新能力,告别幻觉与知识陈旧!
  • 为AI智能体设计网站体验:AX设计原则与落地实践指南
  • 别再乱用multicycle约束了!一个真实案例带你搞懂ASIC/FPGA时序收敛中的-start与-end参数
  • 魔兽争霸III地图编辑器革命:HiveWE如何让地图制作效率提升5倍
  • Arm技术文档体系与合规使用指南
  • AI智能体架构实战:从规划、记忆到工具调用的核心组件解析
  • OpenCrab:面向中文开发者的开源项目导航与协作平台架构实践
  • 2026年比较好的母婴用品锂电池用户口碑推荐厂家 - 行业平台推荐
  • 基于MCP协议构建AI智能体工具网关:Orbis-mcp实战指南
  • AI都能直接生成代码了,程序员还有必要深究框架源码吗?
  • PowerToys Awake:如何彻底解决Windows休眠中断工作的烦恼?
  • 从零构建个人AI知识库:Quivr开源项目实战解析
  • ARM架构TLB失效机制与TLBIMVAH指令详解
  • 2026年4月铜雕供应商推荐,铜钟/铜牛/铜佛像/铜麒麟/铜雕/人物雕塑/动物雕塑/铜大缸/铜狮子,铜雕铸造厂哪家好 - 品牌推荐师
  • CipherGuard:编译器级密文侧信道攻击防护技术解析
  • Crawlio Browser Agent:让AI直接操作真实浏览器会话的MCP工具
  • AIWorkspace:基于Docker的一站式AI开发环境解决方案
  • Ariana Debugger:零侵入式代码调试与运行时观测实践指南