初级网管测试工程师社招面经(图像与硬件方向)
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 我们公司在成都,有了解过吗?
- 你在现在这家公司干了 3 个月,这家公司做机器人相关的产品,为什么考虑离职?
- 你简历上写做硬件接口和故障,为什么会涉及到 iperf 打流?这个和硬件接口好像不太相关。
- 你的相机是连接在电脑上然后模拟硬件或者网络的故障来进行打流测试吗?你是怎么模拟这些场景的?
- iperf 是软件配置模拟情况的,你是怎么和硬件接口结合起来的?
- 简历上写的模拟异常插拔工况是怎么模拟的?
- iperf 如果是纯软件、不在硬件上做操作、物理链路没有改变,你设置的那些参数应该都是可预期的吧?
- 你怎么模拟不同网络的情况,比如网络不好、丢包、延迟这些测试?
- 工业激光相机你写的 ROI、掩膜、轮廓对齐、高度校正、倾斜校正是怎么去测试的?
- 你说轮廓对齐、高度校正、倾斜校正是模拟运动和抖动,那你是怎么设计用例去测的,怎么模拟这个运动和抖动的?
- 你的意思是有一个专门的设备去模拟运动和抖动,那你是怎么判断最后的结果是高精度还原还是模糊的?
- 简历第三条写了对图像质量测试,针对噪点和图像指标,你是怎么去排除干扰做测试的?
- 线性关系的图像灰度值你是怎么得出来的?是有一个仪器或者算法得出来的吗?
- 你在长安通信用 Python 开发的小工具,讲解一下这个工具的功能是怎么自动核验的、你是怎么开发的?脚本的输入和输出分别是什么?
- 你输入的格式是什么格式,以及你是怎么通过筛选得到备案信息数据的?
- 你的核验数据有一个标准正确的数据吧,这个正确的数据怎么来的?
- 简历上写这个工具耗时从 30 分钟降低到 10 分钟,我的理解是你们以前就有这个工具是吗?你做了什么样的优化?
- 既然之前没有这个工具,你的 30 分钟这个数据是怎么来的?
- 你这个校验的准确率写的是 98%,这个准确率是怎么评估的?
- 我的理解是你在校验的时候有一些非法字段导致搜索不到相关信息,那这和准确率有什么关系?
- 你在这个机器人公司才干了不到 3 个月,为什么能做这三个产品的测试?项目是怎么管理的?测试团队规模是多少?
- 你那个智能内存池的项目能介绍一下吗?内存效率提升以及内存碎片率降低的数据是怎么得来的?
- 为什么申请 3 个字节但是最后却分配 4 个字节?
- 你用 C++ new 一个 class,是怎么计算这个 class 需要多少空间的?
- 假设现在有一个网管系统,是通过 Web 添加交换机、可以输入交换机的信息,要你去测这个功能应该怎么测?
- 我看你写的博客都是 C/C++ 和算法题,感觉和测试不相关,你为什么想做测试?
- 既然你有这些代码功底,那你觉得你在做测试的时候会有什么优势?
- 工具提效或者源码你能举个实际例子吗?
- 迈瑞提效的工具是你做的吗,还是别人做好了你做增删改进?
- 你简单介绍一下这个工具,以及你做了什么事情?
- 你说了设备升级前和升级后的数据校验,这个数据是什么样的数据?是这个系统产生的本地数据吗?
- 你在对比时是怎么去校验有没有变化的?
- 你说数据库和其他文件会被修改,是被谁修改?以及你说有一个预期的结果,这个结果是谁给你的,或者怎么生成的?
- 你说你用 AI 去做工具,那介绍一下你平时是怎么用 AI 的?
- 你是怎么判断 AI 完成的内容有没有出错的,或者怎么避免它的结果出现问题?
- 内存池系统预先分配 4 个 G,现在要用 8 个 G 应该怎么办?
- 内存碎片这个问题怎么处理?如果一块内存一直在用,是不是永远都拼凑不了一块连续的空间?
- 按你这样说,那一直 malloc 和 free,我们系统是不是早没内存了?
- 反问。
《参考解析》
iperf 与硬件接口测试怎么结合。iperf 本身是纯软件的带宽/丢包/抖动测试工具,能测的是「网络链路与应用协议吞吐」,它跟硬件接口的关系要靠被测对象串起来:如果被测设备是相机、机器人控制器这类带网口的硬件,那么 iperf 打流是在验证「设备网口在长时间大流量下的稳定性」——比如连续跑几小时,看有没有掉线、丢包、缓冲区溢出、CPU 占用飙升、以及上层业务(图像流、控制指令)是否被挤掉。要把它和硬件真正结合,需要做的是:在硬件侧改变条件(换网线/网口速率协商到百兆、加长线缆、经过交换机、插拔网口、限制供电),在软件侧观察 iperf 结果与设备日志。如果物理链路没有变化、只调 iperf 参数,那结论确实只能说明「配置生效了」,谈不上硬件故障模拟——面试官追问的就是这层区分。诚实的答法是说清哪一部分是软件可控、哪一部分需要硬件条件配合。
丢包与延迟等网络损伤怎么模拟。常用工具是 tc(Linux 流量控制):tc qdisc add dev eth0 root netem delay 100ms 10ms distribution normal loss 2% duplicate 1% reorder 5% 可以组合出延迟、抖动、丢包、重复、乱序;iptables 丢包或 DROP 特定端口更粗粒度。要在两端做(单向延迟用 tc 或 ifb),必要时串联一台中间的损伤模拟设备或软件(配合 WANem 之类)。测试设计上:损伤要可复现(固定随机种子或固定参数),一次只改一个维度,记录每个参数下的业务指标(连接建立成功率、重传率、业务超时率),并核对「网络指标合格」与「业务体验合格」是否一致——这是网络类测试最容易只测到前半段的地方。
图像类测试的用例设计。工业相机的 ROI、掩膜、轮廓对齐、高度校正、倾斜校正,本质是把「几何」与「灰度」两组量分开验证。几何类:准备已知尺寸的标准靶标(圆点阵列、棋盘格、量块),在固定工位采集,测重复性与绝对精度(多次测量的标准差、与真值的偏差);对齐与倾斜用标准件在不同角度(±5°、±15°)与不同高度下采集,验证算法能否正确校正,并检查边缘过曝、遮挡、脏污这些边界情况。运动与抖动类:用运动平台或振动台按已知频率与幅度施加扰动,也可以用步进电机驱动的位移台做定量偏移,比对「施加的位移」与「算法解算的位移」,判断精度而不是靠肉眼说「清晰」。灰度与线性度:用标准灰度板或积分球光源,固定曝光与增益,采集不同灰阶并拟合输入辐照度与输出灰度的关系,检查线性度、饱和点、噪声与暗电流;这一步要控制照度稳定、避免环境光干扰,才谈得上「排除干扰」。指标侧常用 MTF/SFR(分辨率)、SNR(噪声)、动态范围、均匀性、ΔE(色彩)。
准确率、耗时这类简历数字怎么评估。要能给出三件事:定义(准确率 = 判断正确的字段数 / 总字段数,还是整条记录正确才计数?分母的口径决定数字高低)、样本(抽了多少条、怎么抽的、有没有覆盖异常字段)、基线(手工耗时 30 分钟是怎么测的:几个样本、计时的起止点)。如果当时没有严格统计,就照实说「是基于 N 个样本的粗略估算」,并给出如果重做会怎么设计评估。面试官追问「非法字段导致搜不到信息跟准确率有什么关系」,考的就是指标口径是否自洽:搜不到应该算漏报还是算无法判断、有没有单列一类「无法判定」而不是塞进错误里。这类追问下,诚实且口径清楚的回答,比一个漂亮但来源不明的数字更能过关。
内存对齐与对象大小。申请 3 字节却分配 4 字节,是因为分配器要满足对齐要求:malloc 返回的地址通常要对齐到 alignof(max_align_t)(64 位系统上 16 字节,32 位常见的 8 字节),另外每个分配块前面还有元数据(分配大小、是否空闲、链表指针)占用字节,所以小对象分配的实际开销远大于请求量。要能讲清结构体的 sizeof 计算规则:成员各自按自身对齐数(通常是其大小,最大不超过平台最大对齐)依次摆放,必要时插入填充;结构体的总大小是最大成员对齐数的整数倍,末尾补齐;调整成员顺序(大的先、小的后合并)能省空间;#pragma pack 或 __attribute__((packed)) 能去掉填充,代价是可能产生非对齐访问(ARM 上性能下降甚至硬件异常,某些平台直接报错)。new 一个 class 的空间 = 所有非静态成员(含继承来的、虚函数表指针 vptr 通常 8 字节、虚基类指针)按对齐规则布局后的 sizeof,再加上分配器开销;空类 sizeof 是 1;只有虚函数但没有数据成员的类大小是一个 vptr;多次继承多个带虚函数的基类可能持有多个 vptr。说完规则最好举一个小例子算给他看,比背结论更能证明理解。
内存池与碎片。要能讲清内存池解决什么问题:频繁 malloc/free 会产生外部碎片(空闲总量够但没有足够大的连续块)、增加分配延迟、且标准分配器不保证实时性。池化做法是启动时一次性申请一大块,按固定大小切分成块,用位图或空闲链表管理,分配与释放都是 O(1),没有外部碎片问题(代价是内部碎片——对象大小与块大小不匹配时浪费,所以常见做法是按 8/16/32/… 分档的 size class,类似 tcmalloc/jemalloc 的思路)。「预先分配 4G,现在要用 8G 怎么办」:池不是只能固定大小,可以分层扩容——预留虚拟地址空间、按需提交物理页(mmap + madvise),或者做多级池(大块池与子池按需增长),实在不够就限制并发或做背压,池化的前提是容量规划 + 上限保护而不是无限增长。「碎片处理」:块大小分档减少外部碎片、伙伴系统合并相邻空闲块、定期整理(内存搬迁,需要句柄或间接层才安全)、以及把长生命周期对象与短生命周期对象分开池化(避免一个长期占用的小块卡住一整段合并)。要有边界意识:如果业务持续申请大块、块大小跨度过大,池化收益会下降,此时更合理的方案是换分配器而不是自己造池子。
「Web 添加交换机」功能怎么测。按输入校验—业务逻辑—状态与联动—异常与并发—兼容与体验展开。输入校验:必填项(IP、名称、型号、端口数、认证方式)为空、格式非法(IP 越界、IPv6、域名、超长字符串、特殊字符与 XSS 注入、SQL 注入)、边界值(端口 0/1/65535/65536)、重复添加同一台交换机(IP 或序列号唯一性)。业务逻辑:连通性校验是否真的尝试连接并返回明确错误(超时、认证失败、协议不匹配)、型号与固件版本是否影响支持的功能、保存后拓扑与列表是否刷新。状态与联动:添加后能否监控到、数据采集是否启动、删除与编辑是否同步影响关联对象(端口、告警规则、拓扑连线)。异常:网络中断、保存过程中服务重启、并发添加同一台设备、批量导入时部分失败如何处理(事务还是逐条)。体验与安全:加载与提示是否清晰、权限控制(无权限用户能不能通过接口绕过)、操作日志是否记录。最后补一句自动化:这类增删改查适合接口自动化覆盖主流程,UI 层只保留少量冒烟,重点用例放在状态联动与异常路径。
AI 辅助工作怎么答。说清三件事:用在哪些环节(生成用例草稿、写脚本、解释陌生代码、日志聚类)、怎么校验(AI 产出必须自己复现与 review,脚本要能跑通、用例要能人工判断预期)、以及边界(敏感数据不外传、不把 AI 结论直接当测试结论)。判断 AI 出错的手段要具体:交叉验证(换一种问法或换一个模型比结果)、用小样本人工标注集测准确率、把结果与已知事实核对、以及把 AI 的每一步产出落到可执行的验证里。