滨江兄弟 嵌入式软件开发工程师 面经
🕐 2026.08 | 滨江兄弟信息技术(杭州)有限公司 | 嵌入式软件开发工程师 | 技术面
这场面试没有上来就甩操作系统八股,基本是围着实习项目在聊。
滨江兄弟是 Brother(兄弟工业)在杭州滨江的研发中心,业务偏打印机、标签机这类嵌入式开发。日企味道比较重,流程、保密、代码规范都会比创业公司讲究。所以这场面下来,我的感觉是:他们不一定要你做过打印机,但很在意你是不是真的独立把一个固件项目啃到量产,以及能不能接受没有 AI、代码不能外传的开发环境。
这场是线上面,人事开场介绍了四位技术面试官。开头有点波折:设备掉链子、声音太轻、对面还中途离席接了个电话,有一阵完全听不到声音——线上面试先测好设备,这个教训记下了。
📋 面试流程
整场按实际问答顺序,可以分成六段:
| 顺序 | 环节 | 内容 |
|---|---|---|
| 1 | 自我介绍 | 实习成果总览、校内项目、技术栈,自选核心项目 |
| 2 | SOC 方案 + 项目盘子 | 算法讲到一半被收住,转问人员配置、周期、量产标准 |
| 3 | OTA 升级优化 | 23 分钟 → 6 分钟,全场追问最密的一段 |
| 4 | FreeRTOS 任务划分 | 5 个任务怎么排优先级,微秒级保护被质疑 |
| 5 | 求职意向 | 上下层方向、AI 使用、早实习契机、到岗时间 |
| 6 | 反问收尾 | 入职后的导师带教机制 |
和之前几场比,这场更像是:把你做过的东西摊开,看你能不能讲到工程细节。
🎬 一、开场与自我介绍
郑州轻工业大学物联网工程,方向是嵌入式软件和控制系统。目前在浙江迈睿机器人实习,负责电池部件开发和一部分 Linux 应用层。
自我介绍里先把实习成果摆了出来,三件事:
- SOC 估算误差压到 0.37% 以内
- 基于 FreeRTOS 完成模块划分和任务优先级设计
- 双 Bank 升级方案已通过验证、投入生产
校内项目带了两个:
- 运动控制卡(校企合作):77 段 S 型加减速运算。这块我特意多讲了一句——F103 没有 FPU,浮点跑不动,我把 S 曲线计算整个换成了定点数,用整数运算把曲线啃下来。后面过了企业测试,进了产线。
- 物料搬运机器人:卡尔曼滤波处理传感器数据,再配合视觉组给的坐标,做移动底盘控制。
F103 定点化这句是故意加的:打印机、标签机这类产品同样常年泡在没有 FPU 的小 MCU 上,这个优化正好对口。
最后用一句话收了技术栈:STM32 + Linux + 控制算法。
面试官没在校内项目上停留太久,让我自己挑一个核心项目讲,我直接选了实习的电池部件——独立负责过的东西,讲起来最有底。
🔋 二、SOC 怎么算:第一个深挖点
磷酸铁锂和三元锂在平台区电压变化都很小,纯靠电压反推 SOC 基本不准。我这边的做法是:
- 用 21 段 OCV 表,再配最小二乘法把曲线拟合出来、划区间
- 满充校准之后,主路径走 安时积分
- 再叠一层 卡尔曼滤波 做融合,误差做到 0.37% 以内
讲法上我把主次分得很清楚:安时积分是主力,OCV 用来划区间和校准,卡尔曼是用来压误差的,不是拿来当唯一真值。
这一段面试官听得比较认真,但没有继续追「模型是谁搭的」「测了几个循环」——这两问我在别的场次被拷打过,这次反而没往下挖。方案讲到一半,对面主动把技术细节收住,转去问项目本身的人员配置和开发周期。
🧾 三、项目盘子:怎么来的、做了多久、何时量产
被问得比想象中细,不只是做了什么,还有这个项目怎么来的、什么时候能交付:
- 项目是接手的半成品,前人只做了两个月左右就走了
- 我 3 月接手,之后独立开发四个半月,从基础功能一路做到量产迭代
- 量产交付标准当时就定得很清楚:装车跑满 30 天无异常。最后现场连续跑了 30 天以上没出问题,投产
讲的时候我比较强调「独立闭环」:不是只写过一个模块,而是从算法、任务调度、保护、日志、远程升级,一路跟到现场验证。
中间还问了一个差异性问题:这个项目和我原来的技术基础差别在哪。我的回答是原底子偏通用嵌入式开发,SOC 算法和电池特性是学校没教过的,等于在项目里现学现做的垂直领域。这块我如实答了,没装熟。
现在回看,从 SOC 方案收住、转到项目盘子,这一收一转是有目的的:方案够不够用是一方面,这个项目到底有多少是我一个人扛下来的,是另一方面。
📡 四、OTA:从 23 分钟到 6 分钟,追问最密的一段
项目盘子问完,直接进了 OTA。这是全场讲得最细、也被追问最密的一块,总效果先摆出来:整套升级从 23 分钟压到 6 分钟。
原先那套能升,但慢,而且通信一抖就容易卡。我主要动了两刀。
第一刀:通信延迟从 500ms 压到 100ms
原来每包等 500ms,大量时间耗在「干等」上。压到 100ms 之后,间接通信带来的空窗明显缩短。
面试官当场追了一句:间隔压短之后,怎么验证的? 我答的就是这层逻辑——原 500ms 是现场测出来设大了;100ms 直接测试验证过,再往下压稳定性开始掉,所以停在这。
第二刀:单通道改双缓冲,从「收完再发」到「边收边发」
以前一个缓冲区,收完才能发、发完才能收,链路一直在等。后来改成两个缓冲区 + 标志位:
- 一侧收满,置位,交给发送端
- 另一侧继续收
- BW20 主控循环读这两个缓冲,交替往下发
相当于把串行等待改成并行流水线,等确认的耗时直接砍掉。
链路可靠性也没裸奔:握手用渐进超时,20ms 不成就 40ms、80ms 一路加到 100ms;超过 200ms 还没握上,重试两次;再不行,按 Modbus 协议指令把数据重传一遍。短超时快速试,长超时兜底,协议层还能再拉一把——现场升级最怕的不是慢一点,是升到一半没下文。这套也过了直接测试验证。
然后是追问链:从数据流一路摁到内存写入
- 「边接收边发送」,数据流到底怎么走? 双缓冲 + 标志位控制 + 分包发送,BW20 循环读两个缓冲交替往下发
- 是不是用来交替发送的? 是,就是交替发送
- 测试是黑盒吗?B 板和电池 MCU 怎么连? 数据从 B 板走串口直传给电池 MCU,MCU 收到直接写内存
- 缓冲区的内容要手动拼接到指定地址吧? 不用拼接。大包先拆开发,MCU 按序接收,维护一个移动指针,来一块往当前地址写一块、指针后移——地址不容易写乱,也不用每收一包就重算一次落点
最后一问来回确认了三轮才对齐——面试官预设的是「手动拼接」,我做的是「按序直写」。事后想,先把链路一句话讲死(B 板双缓冲 → 串口 → MCU 移动指针写内存),这三轮可以省掉。讲项目先给全景再进细节,比反过来效率高。
确认完缓冲区位置在 B 板芯片上,这个话题结束,切去了 FreeRTOS。
🧵 五、FreeRTOS 任务都有哪些,怎么划分优先级的
结合项目答的。系统里一共 5 个任务,按实时性从高到低排:
| 优先级 | 任务 | 为什么这么排 |
|---|---|---|
| 最高 | 安全保护 | 微秒级响应。读 BQ76952 硬件保护故障位,MCU 再关自己控的 MOS,做双层保护 |
| 第二 | 通讯 | 上位机大约 3 秒要一次数据,频率低,不能让它抢保护任务 |
| 第三 | 电池数据计算 | 从 BQ76952 读电流电压,更新 SOC、SOH |
| 第四 | 履历写入 | 不是周期狂写 Flash,只在特定条件触发 |
| 最低 | 休眠 | 系统进入休眠时才跑 |
履历写入有三种触发:
- 故障触发:出保护、出异常,立刻记
- 电压变化超过 0.2V,或者间隔 5 分钟:避免 Flash 被无意义地来回擦写
- 充放电 MOS 开关切换:充/放状态变化本身就是关键事件
被追问:微秒级保护,任务响应得过来吗
「安全保护最高优先级」这句当场被质疑过:微秒级的电流异常,RTOS 任务调度来得及吗?
我的答案是分层的:微秒级那一层根本不在任务里做——BQ76952 硬件侧自带保护,故障位立起来直接动作;MCU 任务做的是第二层关断,把我自己控的 MOS 关掉。硬件兜底,软件复核,两层各管各的时间尺度。硬把微秒级塞进任务调度,才是设计错误。
这块我自己觉得是比较能体现工程意识的:不是把所有任务一股脑同优先级丢进去,也不是日志无脑周期写。保护一定最高,Flash 写入一定要限频,通讯再重要也不能压过安全。
优先级聊完,技术部分基本结束,后面全是意向确认。
🧭 六、求职意向与实习安排
方向:上下层都能做
嵌入式上层、下层都表态可以做。这块我拿的是独立开发迈睿电池上位机和驱动的经历做背书——上下层确实都碰过,不是嘴上说能做。工作方式上也明确:能接受无 AI 辅助、代码不能外带的严格保密环境。
AI 辅助开发怎么答
这场专门问了一段 AI 使用,日企对这块敏感不意外。我的回答三个要点:
- 工具:主要用 Claude
- 用法:查资料,以及生成 SOC 这类有标准公式的算法代码;核心的优化和调试还是自己来
- 依赖度:不高。早期实习公司没开放权限,代码全手写;后来权限开了才开始用,没有 AI 也能独立完成任务
「能不能不用 AI」不是客套。日企研发对源码和资料管控通常很严,有的环境直接断外网、禁用大模型。我如果在这点上含糊,后面入职反而被动。
为什么这么早出来实习
也被问到了。实际原因就是听学长建议:大四秋招和名校生正面竞争不占优势,不如提前把实习和项目攒出来;考公考研没计划,路线就是就业。这块我没绕弯子——对学历的现实提前想清楚,比回避有用。
到岗时间
大三下就已经办好离校实习;大四没有课程,除了毕业答辩都可以全职实习。他们要的是能稳定坐在工位上写程序的人,不是每周还要跑回去上课的实习生——这块是硬条件,双方都对得齐。
反问:入职后有没有导师带教
我主动问的:入职后有没有导师带。答复是前两个月有导师带教,后面由项目 leader 指导。对我来说上手门槛比别的都重要,这个安排是满意的。
双方确认没有其他问题后,面试结束。
🩹 七、这场可以再打磨的地方
纪要里几乎全是我在讲项目,当场翻车的点没有记下来。但对照自己的准备,有几个地方其实经不起继续往下问:
| 如果继续追 | 我现在的真实情况 |
|---|---|
| SOC 0.37% 怎么测的 | 电子负载恒功率放电,完整循环不多,样本偏少 |
| 卡尔曼滤波模型 | 模型不是我独立从零推导的,我更熟的是数据接入和结果融合 |
| 硬件 | 主板入职时已经有了,自己做的是软件 |
| OTA 失败恢复 | 双缓冲和重传讲了,Flash 落盘、断电保护、回滚策略还可以讲得更完整 |
| 打印机 / 图像 / 电机控制 | 岗位更靠近这个方向,我没有主动把 BMS 经验映射过去 |
也就是说,这场如果只看「项目能不能讲细」,我是够用的;如果他们下一轮开始对岗位做迁移提问,还得补一层:
通信可靠性、任务优先级、保护闭环、量产验证,这些能力怎么挪到打印机固件上。
💭 八、一点感受
这场面试的味道和 CVTE 那种八股拷打不一样,也和新奥那种「对着 PPT 逐页刨」不完全一样。更像是:
你把一个量产固件项目讲清楚,我再看你这个人能不能进日企的开发节奏。
对我比较有利的点有三个:
- 有完整闭环:不是只做过 SOC,或者只做过 OTA,而是保护、计算、日志、升级、现场验证都沾过
- 能讲清为什么这么设计:任务优先级、Flash 写入触发、OTA 超时策略,都有工程上的理由
- 意向很干净:能全职、能接受无 AI 高保密、AI 使用边界讲得清楚
不太有利的点也很明显:岗位本身更像打印机 / 标签机嵌入式,我的项目是 BMS。对得上的是 C、MCU、RTOS、通信和量产意识,对不上的是具体业务。
所以如果还有同类日企研发面,我会把开场改一下——先用一句话对齐岗位,再拿 BMS 当证据,而不是默认对方会自己完成这次能力迁移。
✨ 一句话总结:项目细节够用,岗位映射还要自己补上。
