news 2026/5/14 3:47:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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. 延伸知识链

这样:

既能命中八股关键词,

又能体现工程深度。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 3:45:09

基于Phi-3-mini的指令微调实践:BlossomLM部署与应用指南

1. 项目概述:当开源大模型遇上云端部署 最近在开源社区里,一个名为“BlossomLM”的项目引起了我的注意。它不是一个全新的模型架构,而是一个基于微软Phi-3-mini模型进行指令微调的开源项目。简单来说,你可以把它理解为一个“开箱…

作者头像 李华
网站建设 2026/5/14 3:43:41

基于MCP与DuckDB的机器人MCAP数据自然语言查询实践

1. 项目概述:当机器人数据遇上自然语言查询如果你和我一样,常年和机器人打交道,那你一定对MCAP文件不陌生。无论是ROS 2的bag文件,还是自动驾驶、无人机飞控记录下来的海量传感器数据,最终都可能以MCAP格式躺在你的硬盘…

作者头像 李华
网站建设 2026/5/14 3:43:07

AI Agent全栈日志监控系统:基于Nuxt 4与Convex的实时观测方案

1. 项目概述:一个为AI Agent量身打造的全栈日志监控系统 如果你正在开发或管理一个基于OpenClaw(或其他任何AI Agent框架)的智能体集群,那么你肯定遇到过这样的场景:Agent在后台默默运行,突然某个任务失败了…

作者头像 李华
网站建设 2026/5/14 3:43:04

基于Claude AI的Dex个人操作系统:从零部署到高效工作流实战

1. 项目概述:你的AI首席幕僚长 如果你和我一样,每天被会议、任务、人际关系和战略规划淹没,感觉自己的大脑内存和待办事项列表一样快要溢出,那么Dex这个项目,可能就是为你量身打造的“第二大脑”。它不是另一个需要你…

作者头像 李华
网站建设 2026/5/14 3:42:24

强力解密RPG Maker加密文件:新手快速上手指南

强力解密RPG Maker加密文件:新手快速上手指南 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerD…

作者头像 李华
网站建设 2026/5/14 3:41:04

Ariana Debugger:零侵入式代码调试与运行时观测实践指南

1. 项目概述:Ariana Debugger,一种全新的代码调试范式 如果你和我一样,每天大部分时间都在和代码打交道,那你一定对调试这件事又爱又恨。爱的是,它总能帮你找到那些让你抓耳挠腮的Bug;恨的是,设…

作者头像 李华