旷视科技AIoT工程师面试经历:边缘计算+模型压缩+物联网全考察

面试作者: 美历团队

2年AIoT经验,详细复盘旷视科技AIoT工程师三轮技术面试,涵盖边缘计算、模型压缩、物联网协议、嵌入式AI等核心考点

背景介绍

说起来我入坑AIoT也算是个意外。硕士毕业后在一家做智能安防的公司干了两年,一开始是做纯视觉算法的,后来公司转型做AIoT平台,我就跟着转了方向,开始接触边缘计算、模型压缩和物联网相关的技术。说实话,AIoT这个方向虽然不如纯算法那么"高大上",但实际应用场景特别多,而且对工程能力的要求极高,我觉得反而更适合我这种喜欢折腾的人。

旷视科技在AIoT领域算是头部玩家了,他们的城市物联网解决方案做得非常成熟,所以看到他们招AIoT工程师就投了。准备面试的时候,我重点复习了模型压缩(量化、剪枝、蒸馏)的理论和实践,边缘计算框架(TensorRT、ONNX Runtime、OpenVINO)的使用,以及物联网协议和嵌入式AI的相关知识。整个准备周期大概一个月。

投递后大概5天收到了HR的电话,聊了聊基本情况后安排了技术一面。整个流程是三轮技术面+一轮HR面,下面详细复盘。

面试流程复盘

一面:边缘计算+模型压缩(约65分钟)

一面面试官是个看起来很年轻的工程师,但问的问题一点都不含糊。开场让我自我介绍后,直接进入技术环节。

问题1:你们在边缘端部署模型时,是怎么选择硬件平台的?考虑哪些因素?

这个问题很实际。我说选择边缘硬件平台主要考虑四个因素:算力(TOPS)、功耗、内存带宽和生态支持。比如Jetson系列生态好但功耗高,瑞芯微的RK3588性价比高但生态差一些,寒武纪的MLU算力强但软件栈不够成熟。具体选择要看应用场景——如果是固定场景的智能摄像头,RK3588就够了;如果是移动机器人,就需要考虑功耗更低的方案。

问题2:详细说一下模型量化的流程,PTQ和QAT的区别是什么?

我从量化的基本原理讲起,说了均匀量化和非均匀量化的区别,然后重点讲了PTQ和QAT的流程。PTQ是训练后量化,核心是用校准数据集确定量化参数(scale和zero point),优点是简单快速,缺点是精度损失可能较大。QAT是量化感知训练,在训练过程中模拟量化误差,精度更好但需要训练资源和数据。面试官追问了INT8量化在目标检测任务上的精度影响,我说通常mAP下降1-3%,但通过混合精度量化(敏感层用FP16)可以控制在1%以内。

问题3:模型剪枝有哪些方法?结构化剪枝和非结构化剪枝各有什么优缺点?

我说非结构化剪枝(随机剪掉单个权重)压缩率高但需要稀疏计算硬件支持,实际加速效果有限;结构化剪枝(剪掉整个通道或层)压缩率低一些但能真正加速推理。我重点讲了我们项目中用的通道剪枝方法:先训练一个过参数化的模型,然后根据BN层的gamma参数评估通道重要性,剪掉不重要的通道后微调恢复精度。面试官追问了剪枝率的确定方法,我说我们用渐进式剪枝,从低剪枝率开始逐步增加,每步都验证精度。

编程题:实现一个简单的INT8量化函数,输入FP32权重和校准数据,输出量化后的权重和量化参数。

这道题比较常规,我实现了对称量化的流程:遍历校准数据找到绝对值最大值,计算scale,然后对权重做量化。面试官让我分析了量化误差的来源,我说主要是舍入误差和截断误差,以及激活值分布不均匀时截断带来的信息损失。

二面:物联网+嵌入式AI(约70分钟)

二面面试官明显更有经验,问题更加系统和深入。

问题1:你们AIoT系统的整体架构是怎样的?数据从采集到最终决策的完整链路是什么?

我画了个架构图(口述),从传感器层(摄像头、温湿度传感器等)到边缘网关(模型推理),再到云平台(数据聚合、模型训练、OTA更新),最后到应用层(告警、报表、决策)。重点讲了边缘网关的设计:我们用RK3588做主控,上面跑Ubuntu + Docker,模型推理用NCNN加速,和云端的通信用MQTT协议。

问题2:MQTT和HTTP在IoT场景下各有什么优缺点?为什么你们选了MQTT?

我说MQTT是轻量级的发布/订阅协议,报文开销小、支持QoS、适合弱网环境,但功能单一,不适合传输大数据。HTTP功能丰富但开销大,适合配置管理和文件传输。我们选MQTT是因为IoT场景下网络不稳定,MQTT的QoS机制能保证消息可靠送达,而且报文开销小,适合频繁的小数据传输。

问题3:在资源受限的嵌入式设备上,怎么实现一个轻量级的目标检测系统?

我说了几个关键步骤:模型选型上用YOLOv5n或NanoDet这种轻量模型,输入分辨率降到320x320,推理框架用NCNN或TFLite,后处理做NMS优化。然后重点讲了我们做的一个优化:把NMS从CPU移到模型内部用自定义算子实现,减少了CPU-GPU之间的数据拷贝,推理速度提升了约15%。面试官对这个优化很感兴趣,追问了具体实现细节。

问题4:边缘端和云端之间的模型更新怎么做?遇到过什么问题?

我说我们用OTA的方式更新模型,云端训练好新模型后推送到边缘网关,网关下载后验证模型完整性(MD5校验),然后热替换正在运行的模型。主要问题是:一是模型文件可能比较大,下载慢;二是热替换过程中可能有短暂的推理中断;三是新模型可能不兼容旧版本的数据格式。我们的解决方案是:模型文件用差分更新减少传输量,热替换用双缓冲机制保证无缝切换,版本管理上做向前兼容。

编程题:设计一个简单的边缘推理服务,支持模型加载、推理和热更新。

这道题偏系统设计,我写了个Python的类框架,包括模型加载、推理接口、热更新方法,用了线程锁保证并发安全。面试官让我考虑异常处理,我加了模型加载失败回滚和推理超时保护。

三面:项目深挖+系统设计(约85分钟)

三面是部门技术负责人面的,风格更偏向架构和系统思维。

问题1:你在AIoT项目中最有挑战性的技术问题是什么?怎么解决的?

我讲了一个实际案例:我们在一个智慧园区项目中,需要在50多个摄像头上同时跑人脸检测和行人跟踪,但边缘服务器的算力有限。我的解决方案是:第一,用模型蒸馏把YOLOv5s压缩成一个小模型,mAP只降了2%但速度快了3倍;第二,实现了动态调度策略,根据每个摄像头的场景复杂度分配不同的推理频率;第三,用ROI编码减少数据传输量。最终在同样的硬件上支持了50路摄像头,整体延迟控制在200ms以内。

问题2:如果让你从零设计一个AIoT平台,你会怎么设计?

这个问题很开放,我从五个层次来设计:设备层(传感器+边缘网关)、通信层(MQTT+CoAP)、边缘计算层(模型推理+数据预处理)、云端层(数据存储+模型训练+设备管理)、应用层(可视化+告警+API)。重点讲了边缘计算层的设计:用K3s做容器编排,模型推理用统一的推理服务封装,支持多硬件后端(GPU/NPU/CPU),设备管理用Device Shadow模式。面试官追问了K3s在边缘端的资源开销问题,我说K3s相比K8s内存占用少很多,约512MB就能跑起来,但确实还是有一定开销,如果设备资源极度受限可以考虑更轻量的方案。

问题3:AIoT场景下数据安全和隐私保护怎么做?

我说了几个方面:传输加密(TLS/DTLS)、数据脱敏(人脸模糊化处理后再上传)、联邦学习(边缘端训练只上传模型梯度不上传原始数据)、差分隐私(在数据中加噪声保护个体隐私)。面试官对联邦学习很感兴趣,追问了具体实现,我说我们在一个项目中用FedAvg算法做了跨园区的模型联合训练,每个园区只上传模型参数,云端聚合后下发新模型,既保护了数据隐私又提升了模型泛化能力。

问题4:你对旷视的AIoT业务有什么了解?你觉得最大的技术挑战是什么?

我说旷视的AIoT主要聚焦在城市物联网和供应链物联网两个方向,核心优势是算法能力强、场景理解深。我觉得最大的技术挑战是规模化部署——从几个摄像头到几万个摄像头的规模跨越,对系统的可靠性、可维护性和成本控制都提出了极高要求。面试官点了点头,说这确实是他们一直在攻克的方向。

真题汇总

1. 边缘硬件平台选型考虑因素

2. 模型量化PTQ与QAT的区别与流程

3. 结构化剪枝vs非结构化剪枝

4. INT8量化函数实现

5. AIoT系统整体架构设计

6. MQTT与HTTP在IoT场景的对比

7. 嵌入式设备轻量级目标检测系统

8. 边缘端模型热更新方案

9. 多路摄像头并发推理优化

10. AIoT平台从零设计方案

11. AIoT数据安全与隐私保护

12. 联邦学习在AIoT中的应用

心得建议

旷视的AIoT面试非常注重工程实践能力,纯理论是远远不够的。几点建议:

1. 一定要有实际项目经验:旷视的面试官特别看重你有没有真正做过AIoT项目,很多问题都是基于实际场景的,没有实践经验根本答不好。建议自己搭一个简单的边缘推理系统,哪怕是用树莓派跑一个YOLO也行。

2. 模型压缩要能落地:不只是知道量化、剪枝、蒸馏的概念,还要能说出具体的实现流程、精度影响和工程trade-off。面试官会追问细节,准备的时候最好自己动手做一遍。

3. 系统设计能力很重要:三面基本是系统设计,需要从全局角度思考问题。建议多看一些AIoT平台的架构设计文章,理解分层解耦、微服务、容器化等概念在边缘场景的应用。

4. 关注物联网协议和通信:MQTT、CoAP这些协议虽然不难,但面试官会问得很细,包括QoS级别、报文格式、连接管理等等,需要真正理解而不是只记住名字。

FAQ

Q:旷视AIoT工程师的日常工作内容是什么?

A:主要负责AI算法在边缘设备上的部署和优化,包括模型压缩、推理加速、边缘服务开发,以及和云端平台的对接。需要同时具备算法和工程开发能力。

Q:面试对算法能力要求高吗?

A:中等,不需要刷很多LeetCode,但基本的编程能力和算法素养要有。更看重工程能力和系统思维。

Q:没有IoT经验可以投吗?

A:可以,但至少要有模型部署或嵌入式开发的经验。IoT协议方面的知识可以快速补,但工程能力需要积累。

Q:旷视AIoT的技术栈是什么?

A:边缘端主要用C++和Python,推理框架用自研的+NCNN/TensorRT,云端用Go和Java,容器化用K8s/K3s,通信用MQTT和gRPC。

Q:面试结果多久出来?

A:我是一面后4天约二面,二面后3天约三面,三面后一周出结果,整个流程大概两周半。

#旷视科技#AIoT#边缘计算#模型压缩#物联网#嵌入式AI#面试经历